int WIN_VideoInit(_THIS) { if (WIN_InitModes(_this) < 0) { return -1; } WIN_InitKeyboard(_this); WIN_InitMouse(_this); SDL_AddHintCallback(SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP, UpdateWindowsEnableMessageLoop, NULL); SDL_AddHintCallback(SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN, UpdateWindowFrameUsableWhileCursorHidden, NULL); return 0; }
void SDL_TicksInit(void) { if (ticks_started) { return; } ticks_started = SDL_TRUE; /* Set first ticks value */ #ifdef USE_GETTICKCOUNT start = GetTickCount(); #else /* QueryPerformanceCounter has had problems in the past, but lots of games use it, so we'll rely on it here. */ if (QueryPerformanceFrequency(&hires_ticks_per_second) == TRUE) { hires_timer_available = TRUE; QueryPerformanceCounter(&hires_start_ticks); } else { hires_timer_available = FALSE; #ifdef __WINRT__ start = 0; /* the timer failed to start! */ #else timeSetPeriod(1); /* use 1 ms timer precision */ start = timeGetTime(); SDL_AddHintCallback(SDL_HINT_TIMER_RESOLUTION, SDL_TimerResolutionChanged, NULL); #endif /* __WINRT__ */ } #endif /* USE_GETTICKCOUNT */ }
int SDL_JoystickInit(void) { int status; /* Create the joystick list lock */ if (!SDL_joystick_lock) { SDL_joystick_lock = SDL_CreateMutex(); } /* See if we should allow joystick events while in the background */ SDL_AddHintCallback(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, SDL_JoystickAllowBackgroundEventsChanged, NULL); #if !SDL_EVENTS_DISABLED if (SDL_InitSubSystem(SDL_INIT_EVENTS) < 0) { return -1; } #endif /* !SDL_EVENTS_DISABLED */ status = SDL_SYS_JoystickInit(); if (status >= 0) { status = 0; } return (status); }
void SDL_TicksInit(void) { if (ticks_started) { return; } ticks_started = SDL_TRUE; /* if we didn't set a precision, set it high. This affects lots of things on Windows besides the SDL timers, like audio callbacks, etc. */ SDL_AddHintCallback(SDL_HINT_TIMER_RESOLUTION, SDL_TimerResolutionChanged, NULL); /* Set first ticks value */ /* QueryPerformanceCounter has had problems in the past, but lots of games use it, so we'll rely on it here. */ if (QueryPerformanceFrequency(&hires_ticks_per_second) == TRUE) { hires_timer_available = TRUE; QueryPerformanceCounter(&hires_start_ticks); } else { hires_timer_available = FALSE; #ifndef __WINRT__ start = timeGetTime(); #endif /* __WINRT__ */ } }
void Android_InitTouch(void) { SDL_AddHintCallback(SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH, SeparateEventsHintWatcher, NULL); /* Add all touch devices */ Android_JNI_InitTouch(); }
/* Public functions */ int SDL_MouseInit(void) { SDL_Mouse *mouse = SDL_GetMouse(); SDL_AddHintCallback(SDL_HINT_MOUSE_NORMAL_SPEED_SCALE, SDL_MouseNormalSpeedScaleChanged, mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE, SDL_MouseRelativeSpeedScaleChanged, mouse); SDL_AddHintCallback(SDL_HINT_TOUCH_MOUSE_EVENTS, SDL_TouchMouseEventsChanged, mouse); mouse->cursor_shown = SDL_TRUE; return (0); }
/* Public functions */ int SDL_MouseInit(void) { SDL_Mouse *mouse = SDL_GetMouse(); SDL_zerop(mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_DOUBLE_CLICK_TIME, SDL_MouseDoubleClickTimeChanged, mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS, SDL_MouseDoubleClickRadiusChanged, mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_NORMAL_SPEED_SCALE, SDL_MouseNormalSpeedScaleChanged, mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE, SDL_MouseRelativeSpeedScaleChanged, mouse); SDL_AddHintCallback(SDL_HINT_TOUCH_MOUSE_EVENTS, SDL_TouchMouseEventsChanged, mouse); SDL_AddHintCallback(SDL_HINT_MOUSE_TOUCH_EVENTS, SDL_MouseTouchEventsChanged, mouse); mouse->cursor_shown = SDL_TRUE; return (0); }
void Android_InitTouch(void) { int i; int* ids; const int number = Android_JNI_GetTouchDeviceIds(&ids); SDL_AddHintCallback(SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH, SeparateEventsHintWatcher, NULL); if (0 < number) { for (i = 0; i < number; ++i) { SDL_AddTouch((SDL_TouchID) ids[i], ""); /* no error handling */ } SDL_free(ids); } }
static SDL_bool IBus_SetupConnection(SDL_DBusContext *dbus, const char* addr) { const char *client_name = "SDL2_Application"; const char *path = NULL; SDL_bool result = SDL_FALSE; DBusObjectPathVTable ibus_vtable; SDL_zero(ibus_vtable); ibus_vtable.message_function = &IBus_MessageHandler; ibus_conn = dbus->connection_open_private(addr, NULL); if (!ibus_conn) { return SDL_FALSE; } dbus->connection_flush(ibus_conn); if (!dbus->bus_register(ibus_conn, NULL)) { ibus_conn = NULL; return SDL_FALSE; } dbus->connection_flush(ibus_conn); if (SDL_DBus_CallMethodOnConnection(ibus_conn, IBUS_SERVICE, IBUS_PATH, IBUS_INTERFACE, "CreateInputContext", DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) { SDL_free(input_ctx_path); input_ctx_path = SDL_strdup(path); SDL_AddHintCallback(SDL_HINT_IME_INTERNAL_EDITING, &IBus_SetCapabilities, NULL); dbus->bus_add_match(ibus_conn, "type='signal',interface='org.freedesktop.IBus.InputContext'", NULL); dbus->connection_try_register_object_path(ibus_conn, input_ctx_path, &ibus_vtable, dbus, NULL); dbus->connection_flush(ibus_conn); } SDL_IBus_SetFocus(SDL_GetKeyboardFocus() != NULL); SDL_IBus_UpdateTextRect(NULL); return result; }
static SDL_bool IBus_SetupConnection(SDL_DBusContext *dbus, const char* addr) { const char *path = NULL; SDL_bool result = SDL_FALSE; DBusMessage *msg; DBusObjectPathVTable ibus_vtable = {0}; ibus_vtable.message_function = &IBus_MessageHandler; ibus_conn = dbus->connection_open_private(addr, NULL); if (!ibus_conn) { return SDL_FALSE; } dbus->connection_flush(ibus_conn); if (!dbus->bus_register(ibus_conn, NULL)) { ibus_conn = NULL; return SDL_FALSE; } dbus->connection_flush(ibus_conn); msg = dbus->message_new_method_call(IBUS_SERVICE, IBUS_PATH, IBUS_INTERFACE, "CreateInputContext"); if (msg) { const char *client_name = "SDL2_Application"; dbus->message_append_args(msg, DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID); } if (msg) { DBusMessage *reply; reply = dbus->connection_send_with_reply_and_block(ibus_conn, msg, 1000, NULL); if (reply) { if (dbus->message_get_args(reply, NULL, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) { if (input_ctx_path) { SDL_free(input_ctx_path); } input_ctx_path = SDL_strdup(path); result = SDL_TRUE; } dbus->message_unref(reply); } dbus->message_unref(msg); } if (result) { SDL_AddHintCallback(SDL_HINT_IME_INTERNAL_EDITING, &IBus_SetCapabilities, NULL); dbus->bus_add_match(ibus_conn, "type='signal',interface='org.freedesktop.IBus.InputContext'", NULL); dbus->connection_try_register_object_path(ibus_conn, input_ctx_path, &ibus_vtable, dbus, NULL); dbus->connection_flush(ibus_conn); } SDL_IBus_SetFocus(SDL_GetKeyboardFocus() != NULL); SDL_IBus_UpdateTextRect(NULL); return result; }
static void QtExtendedSurface_Subscribe(struct qt_extended_surface *surface, const char *name) { SDL_AddHintCallback(name, QtExtendedSurface_OnHintChanged, surface); }
static void FcitxClientCreateIC(FcitxClient *client) { char *appname = NULL; pid_t pid = 0; int id = 0; SDL_bool enable; Uint32 arg1, arg2, arg3, arg4; SDL_DBusContext *dbus = client->dbus; DBusMessage *reply = NULL; DBusMessage *msg = dbus->message_new_method_call( client->servicename, FCITX_IM_DBUS_PATH, FCITX_IM_DBUS_INTERFACE, "CreateICv3" ); if (msg == NULL) return ; appname = GetAppName(); pid = getpid(); dbus->message_append_args(msg, DBUS_TYPE_STRING, &appname, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID); do { reply = dbus->connection_send_with_reply_and_block( dbus->session_conn, msg, DBUS_TIMEOUT, NULL); if (!reply) break; if (!dbus->message_get_args(reply, NULL, DBUS_TYPE_INT32, &id, DBUS_TYPE_BOOLEAN, &enable, DBUS_TYPE_UINT32, &arg1, DBUS_TYPE_UINT32, &arg2, DBUS_TYPE_UINT32, &arg3, DBUS_TYPE_UINT32, &arg4, DBUS_TYPE_INVALID)) break; if (id < 0) break; client->id = id; SDL_snprintf(client->icname, IC_NAME_MAX, FCITX_IC_DBUS_PATH, client->id); dbus->bus_add_match(dbus->session_conn, "type='signal', interface='org.fcitx.Fcitx.InputContext'", NULL); dbus->connection_add_filter(dbus->session_conn, &DBus_MessageFilter, dbus, NULL); dbus->connection_flush(dbus->session_conn); SDL_AddHintCallback(SDL_HINT_IME_INTERNAL_EDITING, &Fcitx_SetCapabilities, client); } while (0); if (reply) dbus->message_unref(reply); dbus->message_unref(msg); SDL_free(appname); }