diff --git a/clutter/clutter/x11/clutter-backend-x11.c b/clutter/clutter/x11/clutter-backend-x11.c index 3c47ca2f3..0172da6a0 100644 --- a/clutter/clutter/x11/clutter-backend-x11.c +++ b/clutter/clutter/x11/clutter-backend-x11.c @@ -42,13 +42,8 @@ #include "xsettings/xsettings-common.h" -#if HAVE_XCOMPOSITE #include -#endif - -#if HAVE_XINPUT_2 #include -#endif #include #include @@ -241,7 +236,6 @@ clutter_backend_x11_create_device_manager (ClutterBackendX11 *backend_x11) ClutterEventTranslator *translator; ClutterBackend *backend; -#ifdef HAVE_XINPUT_2 if (clutter_enable_xinput) { int event_base, first_event, first_error; @@ -270,7 +264,6 @@ clutter_backend_x11_create_device_manager (ClutterBackendX11 *backend_x11) } if (backend_x11->device_manager == NULL) -#endif /* HAVE_XINPUT_2 */ { CLUTTER_NOTE (BACKEND, "Creating Core device manager"); backend_x11->has_xinput = FALSE; @@ -517,14 +510,12 @@ static const GOptionEntry entries[] = G_OPTION_ARG_NONE, &clutter_synchronise, N_("Make X calls synchronous"), NULL }, -#ifdef HAVE_XINPUT_2 { "disable-xinput", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &clutter_enable_xinput, N_("Disable XInput support"), NULL }, -#endif /* HAVE_XINPUT_2 */ { NULL } }; @@ -1218,7 +1209,6 @@ clutter_x11_get_input_devices (void) gboolean clutter_x11_has_xinput (void) { -#ifdef HAVE_XINPUT_2 ClutterBackend *backend = clutter_get_default_backend (); if (backend == NULL) @@ -1234,9 +1224,6 @@ clutter_x11_has_xinput (void) } return CLUTTER_BACKEND_X11 (backend)->has_xinput; -#else - return FALSE; -#endif } /** @@ -1250,7 +1237,6 @@ clutter_x11_has_xinput (void) gboolean clutter_x11_has_composite_extension (void) { -#if HAVE_XCOMPOSITE static gboolean have_composite = FALSE, done_check = FALSE; int error = 0, event = 0; Display *dpy; @@ -1281,9 +1267,6 @@ clutter_x11_has_composite_extension (void) done_check = TRUE; return have_composite; -#else - return FALSE; -#endif /* HAVE_XCOMPOSITE */ } /** diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.c b/clutter/clutter/x11/clutter-device-manager-xi2.c index 141f424b5..fb60cc8d9 100644 --- a/clutter/clutter/x11/clutter-device-manager-xi2.c +++ b/clutter/clutter/x11/clutter-device-manager-xi2.c @@ -199,7 +199,6 @@ translate_device_classes (Display *xdisplay, (XIValuatorClassInfo *) class_info); break; -#ifdef HAVE_XINPUT_2_2 case XIScrollClass: { XIScrollClassInfo *scroll_info = (XIScrollClassInfo *) class_info; @@ -223,7 +222,6 @@ translate_device_classes (Display *xdisplay, scroll_info->increment); } break; -#endif /* HAVE_XINPUT_2_2 */ default: break; @@ -237,7 +235,6 @@ is_touch_device (XIAnyClassInfo **classes, ClutterInputDeviceType *device_type, guint *n_touch_points) { -#ifdef HAVE_XINPUT_2_2 guint i; for (i = 0; i < n_classes; i++) @@ -261,7 +258,6 @@ is_touch_device (XIAnyClassInfo **classes, return TRUE; } } -#endif return FALSE; } @@ -771,11 +767,9 @@ get_event_stage (ClutterEventTranslator *translator, case XI_ButtonPress: case XI_ButtonRelease: case XI_Motion: -#ifdef HAVE_XINPUT_2_2 case XI_TouchBegin: case XI_TouchUpdate: case XI_TouchEnd: -#endif /* HAVE_XINPUT_2_2 */ { XIDeviceEvent *xev = (XIDeviceEvent *) xi_event; @@ -1037,7 +1031,6 @@ clutter_device_manager_xi2_select_stage_events (ClutterDeviceManager *manager, XISetMask (mask, XI_Enter); XISetMask (mask, XI_Leave); -#ifdef HAVE_XINPUT_2_2 /* enable touch event support if we're running on XInput 2.2 */ if (backend_x11->xi_minor >= 2) { @@ -1045,7 +1038,6 @@ clutter_device_manager_xi2_select_stage_events (ClutterDeviceManager *manager, XISetMask (mask, XI_TouchUpdate); XISetMask (mask, XI_TouchEnd); } -#endif /* HAVE_XINPUT_2_2 */ xi_event_mask.deviceid = XIAllMasterDevices; xi_event_mask.mask = mask; @@ -1472,11 +1464,7 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, "invalid", event->scroll.x, event->scroll.y, -#ifdef HAVE_XINPUT_2_2 (xev->flags & XIPointerEmulated) ? "yes" : "no" -#else - "no" -#endif ); break; @@ -1522,11 +1510,7 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, event->button.x, event->button.y, event->button.axes != NULL ? "yes" : "no", -#ifdef HAVE_XINPUT_2_2 (xev->flags & XIPointerEmulated) ? "yes" : "no" -#else - "no" -#endif ); break; } @@ -1534,10 +1518,8 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, if (source_device != NULL && device->stage != NULL) _clutter_input_device_set_stage (source_device, device->stage); -#ifdef HAVE_XINPUT_2_2 if (xev->flags & XIPointerEmulated) _clutter_event_set_pointer_emulated (event, TRUE); -#endif /* HAVE_XINPUT_2_2 */ if (xi_event->evtype == XI_ButtonPress) _clutter_stage_x11_set_user_time (stage_x11, event->button.time); @@ -1627,10 +1609,8 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, if (source_device != NULL && device->stage != NULL) _clutter_input_device_set_stage (source_device, device->stage); -#ifdef HAVE_XINPUT_2_2 if (xev->flags & XIPointerEmulated) _clutter_event_set_pointer_emulated (event, TRUE); -#endif /* HAVE_XINPUT_2_2 */ CLUTTER_NOTE (EVENT, "motion: win:0x%x device:%d '%s' (x:%.2f, y:%.2f, axes:%s)", (unsigned int) stage_x11->xwin, @@ -1644,7 +1624,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, } break; -#ifdef HAVE_XINPUT_2_2 case XI_TouchBegin: { XIDeviceEvent *xev = (XIDeviceEvent *) xi_event; @@ -1756,7 +1735,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, retval = CLUTTER_TRANSLATE_QUEUE; } break; -#endif /* HAVE_XINPUT_2_2 */ case XI_Enter: case XI_Leave: diff --git a/clutter/clutter/x11/clutter-keymap-x11.c b/clutter/clutter/x11/clutter-keymap-x11.c index c34e676a4..57b6e409d 100644 --- a/clutter/clutter/x11/clutter-keymap-x11.c +++ b/clutter/clutter/x11/clutter-keymap-x11.c @@ -31,10 +31,7 @@ #include "clutter-private.h" #include - -#ifdef HAVE_XKB #include -#endif typedef struct _ClutterKeymapX11Class ClutterKeymapX11Class; typedef struct _DirectionCacheEntry DirectionCacheEntry; @@ -71,7 +68,6 @@ struct _ClutterKeymapX11 PangoDirection current_direction; -#ifdef HAVE_XKB XkbDescPtr xkb_desc; int xkb_event_base; guint xkb_map_serial; @@ -79,7 +75,6 @@ struct _ClutterKeymapX11 guint current_cache_serial; DirectionCacheEntry group_direction_cache[4]; int current_group; -#endif guint caps_lock_state : 1; guint num_lock_state : 1; @@ -110,8 +105,6 @@ G_DEFINE_TYPE_WITH_CODE (ClutterKeymapX11, clutter_keymap_x11, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_EVENT_TRANSLATOR, clutter_event_translator_iface_init)); -#ifdef HAVE_XKB - /* code adapted from gdk/x11/gdkkeys-x11.c - update_modmap */ static void update_modmap (Display *display, @@ -214,9 +207,7 @@ get_xkb (ClutterKeymapX11 *keymap_x11) return keymap_x11->xkb_desc; } -#endif /* HAVE_XKB */ -#ifdef HAVE_XKB static void update_locked_mods (ClutterKeymapX11 *keymap_x11, gint locked_mods) @@ -242,9 +233,7 @@ update_locked_mods (ClutterKeymapX11 *keymap_x11, g_signal_emit_by_name (keymap_x11->backend, "key-lock-changed"); #endif } -#endif /* HAVE_XKB */ -#ifdef HAVE_XKB /* the code to retrieve the keymap direction and cache it * is taken from GDK: * gdk/x11/gdkkeys-x11.c @@ -345,13 +334,11 @@ get_direction_from_cache (ClutterKeymapX11 *keymap_x11, return direction; } -#endif /* HAVE_XKB */ static void update_direction (ClutterKeymapX11 *keymap_x11, int group) { -#ifdef HAVE_XKB XkbDescPtr xkb = get_xkb (keymap_x11); Atom group_atom; @@ -363,7 +350,6 @@ update_direction (ClutterKeymapX11 *keymap_x11, keymap_x11->current_group_atom = group_atom; keymap_x11->has_direction = TRUE; } -#endif /* HAVE_XKB */ } static void @@ -371,54 +357,49 @@ clutter_keymap_x11_constructed (GObject *gobject) { ClutterKeymapX11 *keymap_x11 = CLUTTER_KEYMAP_X11 (gobject); ClutterBackendX11 *backend_x11; + gint xkb_major = XkbMajorVersion; + gint xkb_minor = XkbMinorVersion; g_assert (keymap_x11->backend != NULL); backend_x11 = CLUTTER_BACKEND_X11 (keymap_x11->backend); -#ifdef HAVE_XKB - { - gint xkb_major = XkbMajorVersion; - gint xkb_minor = XkbMinorVersion; + if (XkbLibraryVersion (&xkb_major, &xkb_minor)) + { + xkb_major = XkbMajorVersion; + xkb_minor = XkbMinorVersion; - if (XkbLibraryVersion (&xkb_major, &xkb_minor)) - { - xkb_major = XkbMajorVersion; - xkb_minor = XkbMinorVersion; + if (XkbQueryExtension (backend_x11->xdpy, + NULL, + &keymap_x11->xkb_event_base, + NULL, + &xkb_major, &xkb_minor)) + { + Bool detectable_autorepeat_supported; - if (XkbQueryExtension (backend_x11->xdpy, - NULL, - &keymap_x11->xkb_event_base, - NULL, - &xkb_major, &xkb_minor)) - { - Bool detectable_autorepeat_supported; + backend_x11->use_xkb = TRUE; - backend_x11->use_xkb = TRUE; + XkbSelectEvents (backend_x11->xdpy, + XkbUseCoreKbd, + XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask, + XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask); - XkbSelectEvents (backend_x11->xdpy, - XkbUseCoreKbd, - XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask, - XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask); + XkbSelectEventDetails (backend_x11->xdpy, + XkbUseCoreKbd, XkbStateNotify, + XkbAllStateComponentsMask, + XkbGroupLockMask | XkbModifierLockMask); - XkbSelectEventDetails (backend_x11->xdpy, - XkbUseCoreKbd, XkbStateNotify, - XkbAllStateComponentsMask, - XkbGroupLockMask | XkbModifierLockMask); + /* enable XKB autorepeat */ + XkbSetDetectableAutoRepeat (backend_x11->xdpy, + True, + &detectable_autorepeat_supported); - /* enable XKB autorepeat */ - XkbSetDetectableAutoRepeat (backend_x11->xdpy, - True, - &detectable_autorepeat_supported); + backend_x11->have_xkb_autorepeat = detectable_autorepeat_supported; - backend_x11->have_xkb_autorepeat = detectable_autorepeat_supported; - - CLUTTER_NOTE (BACKEND, "Detectable autorepeat: %s", - backend_x11->have_xkb_autorepeat ? "supported" - : "not supported"); - } - } - } -#endif /* HAVE_XKB */ + CLUTTER_NOTE (BACKEND, "Detectable autorepeat: %s", + backend_x11->have_xkb_autorepeat ? "supported" + : "not supported"); + } + } } static void @@ -450,12 +431,10 @@ clutter_keymap_x11_finalize (GObject *gobject) keymap = CLUTTER_KEYMAP_X11 (gobject); translator = CLUTTER_EVENT_TRANSLATOR (keymap); -#ifdef HAVE_XKB _clutter_backend_remove_event_translator (keymap->backend, translator); if (keymap->xkb_desc != NULL) XkbFreeKeyboard (keymap->xkb_desc, XkbAllComponentsMask, True); -#endif G_OBJECT_CLASS (clutter_keymap_x11_parent_class)->finalize (gobject); } @@ -503,7 +482,6 @@ clutter_keymap_x11_translate_event (ClutterEventTranslator *translator, retval = CLUTTER_TRANSLATE_CONTINUE; -#ifdef HAVE_XKB if (xevent->type == keymap_x11->xkb_event_base) { XkbEvent *xkb_event = (XkbEvent *) xevent; @@ -530,7 +508,6 @@ clutter_keymap_x11_translate_event (ClutterEventTranslator *translator, break; } } -#endif /* HAVE_XKB */ return retval; } @@ -545,11 +522,7 @@ gint _clutter_keymap_x11_get_key_group (ClutterKeymapX11 *keymap, ClutterModifierType state) { -#ifdef HAVE_XKB return XkbGroupForCoreState (state); -#else - return 0; -#endif /* HAVE_XKB */ } gboolean @@ -606,7 +579,6 @@ _clutter_keymap_x11_translate_key_state (ClutterKeymapX11 *keymap, backend_x11 = CLUTTER_BACKEND_X11 (keymap->backend); -#ifdef HAVE_XKB if (backend_x11->use_xkb) { XkbDescRec *xkb = get_xkb (keymap); @@ -622,7 +594,6 @@ _clutter_keymap_x11_translate_key_state (ClutterKeymapX11 *keymap, retval = 0; } else -#endif /* HAVE_XKB */ retval = translate_keysym (keymap, hardware_keycode); if (mods_p) @@ -644,7 +615,6 @@ _clutter_keymap_x11_get_is_modifier (ClutterKeymapX11 *keymap, if (keycode < keymap->min_keycode || keycode > keymap->max_keycode) return FALSE; -#ifdef HAVE_XKB if (CLUTTER_BACKEND_X11 (keymap->backend)->use_xkb) { XkbDescRec *xkb = get_xkb (keymap); @@ -652,7 +622,6 @@ _clutter_keymap_x11_get_is_modifier (ClutterKeymapX11 *keymap, if (xkb->map->modmap && xkb->map->modmap[keycode] != 0) return TRUE; } -#endif /* HAVE_XKB */ return FALSE; } @@ -662,7 +631,6 @@ _clutter_keymap_x11_get_direction (ClutterKeymapX11 *keymap) { g_return_val_if_fail (CLUTTER_IS_KEYMAP_X11 (keymap), PANGO_DIRECTION_NEUTRAL); -#ifdef HAVE_XKB if (CLUTTER_BACKEND_X11 (keymap->backend)->use_xkb) { if (!keymap->has_direction) @@ -677,7 +645,6 @@ _clutter_keymap_x11_get_direction (ClutterKeymapX11 *keymap) return keymap->current_direction; } else -#endif return PANGO_DIRECTION_NEUTRAL; } @@ -687,7 +654,6 @@ clutter_keymap_x11_get_entries_for_keyval (ClutterKeymapX11 *keymap_x11, ClutterKeymapKey **keys, gint *n_keys) { -#ifdef HAVE_XKB if (CLUTTER_BACKEND_X11 (keymap_x11->backend)->use_xkb) { XkbDescRec *xkb = get_xkb (keymap_x11); @@ -760,7 +726,6 @@ clutter_keymap_x11_get_entries_for_keyval (ClutterKeymapX11 *keymap_x11, return *n_keys > 0; } else -#endif { return FALSE; } @@ -771,7 +736,6 @@ clutter_keymap_x11_latch_modifiers (ClutterKeymapX11 *keymap_x11, uint32_t level, gboolean enable) { -#ifdef HAVE_XKB ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (keymap_x11->backend); uint32_t modifiers[] = { 0, @@ -794,7 +758,6 @@ clutter_keymap_x11_latch_modifiers (ClutterKeymapX11 *keymap_x11, XkbLatchModifiers (clutter_x11_get_default_display (), XkbUseCoreKbd, modifiers[level], value); -#endif } static uint32_t diff --git a/clutter/clutter/x11/clutter-x11-texture-pixmap.c b/clutter/clutter/x11/clutter-x11-texture-pixmap.c index 92f0a6106..edb3e499f 100644 --- a/clutter/clutter/x11/clutter-x11-texture-pixmap.c +++ b/clutter/clutter/x11/clutter-x11-texture-pixmap.c @@ -57,10 +57,7 @@ #include #include - -#if HAVE_XCOMPOSITE #include -#endif enum { @@ -960,7 +957,6 @@ clutter_x11_texture_pixmap_set_window (ClutterX11TexturePixmap *texture, if (dpy == NULL) return; -#if HAVE_XCOMPOSITE priv = texture->priv; if (priv->window == window && automatic == priv->window_redirect_automatic) @@ -1024,8 +1020,6 @@ clutter_x11_texture_pixmap_set_window (ClutterX11TexturePixmap *texture, attr.width, attr.height, attr.override_redirect); g_object_unref (texture); - -#endif /* HAVE_XCOMPOSITE */ } static void diff --git a/clutter/configure.ac b/clutter/configure.ac index c88dac271..6089e0b88 100644 --- a/clutter/configure.ac +++ b/clutter/configure.ac @@ -283,13 +283,11 @@ AS_IF([test "x$SUPPORT_X11" = "x1"], [AC_MSG_ERROR([not found])] ) - # XCOMPOSITE (optional) + # XCOMPOSITE (required) AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION]) PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no]) AS_IF([test "x$have_xcomposite" = "xyes"], [ - AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension]) - X11_LIBS="$X11_LIBS -lXcomposite" X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION" X11_EXTS="$X11_EXTS xcomposite" @@ -333,61 +331,25 @@ AS_IF([test "x$SUPPORT_X11" = "x1"], CPPFLAGS="$clutter_save_CPPFLAGS" LIBS="$clutter_save_LIBS" - # XI (optional) - AC_ARG_ENABLE([xinput], - [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])], - [], - [enable_xinput=yes]) + PKG_CHECK_EXISTS([xi], [have_xinput=yes], AC_MSG_ERROR([XI support not found])) + AC_CHECK_HEADERS([X11/extensions/XInput2.h], + [], + AC_MSG_ERROR([XI2 not found])) + AC_CHECK_FUNC([XIAllowTouchEvents], + [ + AC_CHECK_MEMBER([XIScrollClassInfo.number], + [], + AC_MSG_ERROR([XIScrollClasSInfo.number member missing in XI2]), + [[#include ]]) + ]) + LIBS="$clutter_save_LIBS" - AS_IF([test "x$enable_xinput" = "xyes"], - [ - PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no]) - ], - [ - have_xinput=no - ]) + X11_LIBS="$X11_LIBS $XINPUT_LIBS" + X11_PC_FILES="$X11_PC_FILES xi" - AS_CASE([$have_xinput], - - [yes], - [ - AC_CHECK_HEADERS([X11/extensions/XInput2.h], - [ - have_xinput2=yes - AC_DEFINE([HAVE_XINPUT_2], - [1], - [Define to 1 if XI2 is available]) - ]) - - clutter_save_LIBS="$LIBS" - LIBS="$LIBS -lXi" - - AC_CHECK_FUNC([XIAllowTouchEvents], - [ - AC_CHECK_MEMBER([XIScrollClassInfo.number], - [ - have_xinput_2_2=yes - AC_DEFINE([HAVE_XINPUT_2_2], [1], [Define to 1 if XInput 2.2 is available]) - ], - [have_xinput_2_2=no], - [[#include ]])]) - - LIBS="$clutter_save_LIBS" - - X11_LIBS="$X11_LIBS $XINPUT_LIBS" - X11_PC_FILES="$X11_PC_FILES xi" - - AS_IF([test "x$have_xinput_2_2" = "xyes"], - [X11_EXTS="$X11_EXTS xi2.2"], - [X11_EXTS="$X11_EXTS xi2.0"]) - ], - - [no], - [have_xinput2=no], - - [*], - [AC_MSG_ERROR([Invalid argument for --enable-xinput])] - ) + AS_IF([test "x$have_xinput_2_2" = "xyes"], + [X11_EXTS="$X11_EXTS xi2.2"], + [X11_EXTS="$X11_EXTS xi2.0"]) # XKB clutter_save_CPPFLAGS="$CPPFLAGS" @@ -396,14 +358,9 @@ AS_IF([test "x$SUPPORT_X11" = "x1"], clutter_save_LIBS="$LIBS" LIBS="$LIBS $X11_LIBS" - have_xkb=no AC_CHECK_FUNC([XkbQueryExtension], - [ - AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]) - have_xkb=yes - - X11_EXTS="$X11_EXTS xkb" - ]) + [], + [AC_MSG_ERROR([XKB support not found])]) CPPFLAGS="$clutter_save_CPPFLAGS" LIBS="$clutter_save_LIBS" diff --git a/clutter/tests/conform/events-touch.c b/clutter/tests/conform/events-touch.c index c87429794..25d8f21be 100644 --- a/clutter/tests/conform/events-touch.c +++ b/clutter/tests/conform/events-touch.c @@ -21,7 +21,7 @@ #include -#if defined CLUTTER_WINDOWING_X11 && HAVE_XINPUT_2_2 +#ifdef CLUTTER_WINDOWING_X11 #include #include @@ -355,12 +355,12 @@ error: return 0; } -#endif /* defined CLUTTER_WINDOWING_X11 && HAVE_XINPUT_2_2 */ +#endif /* CLUTTER_WINDOWING_X11 */ static void events_touch (void) { -#if defined CLUTTER_WINDOWING_X11 && HAVE_XINPUT_2_2 +#ifdef CLUTTER_WINDOWING_X11 ClutterActor *stage; State state; @@ -384,7 +384,7 @@ events_touch (void) g_print ("end result: %s\n", state.pass ? "pass" : "FAIL"); g_assert (state.pass); -#endif /* defined CLUTTER_WINDOWING_X11 && HAVE_XINPUT_2_2 */ +#endif /* CLUTTER_WINDOWING_X11 */ } CLUTTER_TEST_SUITE (