[gtk/wip/carlosg/no-x11-core-events: 1/5] gdk/x11: Make XInput2 a mandatory build time dependency for x11
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/carlosg/no-x11-core-events: 1/5] gdk/x11: Make XInput2 a mandatory build time dependency for x11
- Date: Tue, 14 May 2019 23:07:37 +0000 (UTC)
commit f3250172a44821ed4325f544f06ba4308ab03b68
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue May 14 23:48:58 2019 +0200
gdk/x11: Make XInput2 a mandatory build time dependency for x11
XInput2 is more than a decade old already, and the input improvements
there (and in every other backend really) make it untenable to have
support for X11 core input events dragging things behind.
config.h.meson | 3 ---
gdk/x11/gdkdevicemanager-core-x11.c | 6 -----
gdk/x11/gdkdevicemanager-x11.c | 46 +++++++++++++++----------------------
gdk/x11/gdkdrag-x11.c | 6 -----
gdk/x11/gdkprivate-x11.h | 4 ----
gdk/x11/gdksurface-x11.c | 12 ++--------
meson.build | 25 ++++++++++----------
7 files changed, 33 insertions(+), 69 deletions(-)
---
diff --git a/config.h.meson b/config.h.meson
index a549f58ecc..436e1a1501 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -241,9 +241,6 @@
#endif
-/* Define to 1 if XInput 2.0 is available */
-#mesondefine XINPUT_2
-
/* Define to 1 if XInput 2.2 is available */
#mesondefine XINPUT_2_2
diff --git a/gdk/x11/gdkdevicemanager-core-x11.c b/gdk/x11/gdkdevicemanager-core-x11.c
index ee7e369584..fb740286b5 100644
--- a/gdk/x11/gdkdevicemanager-core-x11.c
+++ b/gdk/x11/gdkdevicemanager-core-x11.c
@@ -769,10 +769,8 @@ _gdk_device_manager_core_handle_focus (GdkSurface *surface,
if (toplevel->has_pointer &&
!x11_screen->wmspec_check_window &&
mode != NotifyGrab &&
-#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
mode != XINotifyPassiveUngrab &&
-#endif /* XINPUT_2 */
mode != NotifyUngrab)
toplevel->has_pointer_focus = (focus_in) ? FALSE : TRUE;
G_GNUC_FALLTHROUGH;
@@ -780,10 +778,8 @@ _gdk_device_manager_core_handle_focus (GdkSurface *surface,
case NotifyNonlinear:
case NotifyNonlinearVirtual:
if (mode != NotifyGrab &&
-#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
mode != XINotifyPassiveUngrab &&
-#endif /* XINPUT_2 */
mode != NotifyUngrab)
toplevel->has_focus_window = (focus_in) ? TRUE : FALSE;
/* We pretend that the focus moves to the grab
@@ -800,10 +796,8 @@ _gdk_device_manager_core_handle_focus (GdkSurface *surface,
*/
if (!x11_screen->wmspec_check_window &&
mode != NotifyGrab &&
-#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
mode != XINotifyPassiveUngrab &&
-#endif /* XINPUT_2 */
mode != NotifyUngrab)
toplevel->has_pointer_focus = (focus_in) ? TRUE : FALSE;
break;
diff --git a/gdk/x11/gdkdevicemanager-x11.c b/gdk/x11/gdkdevicemanager-x11.c
index ada4724e70..68cd0a06bf 100644
--- a/gdk/x11/gdkdevicemanager-x11.c
+++ b/gdk/x11/gdkdevicemanager-x11.c
@@ -19,9 +19,7 @@
#include "gdkx11devicemanager-core.h"
#include "gdkdevicemanagerprivate-core.h"
-#ifdef XINPUT_2
#include "gdkx11devicemanager-xi2.h"
-#endif
#include "gdkinternals.h"
#include "gdkprivate-x11.h"
#include "gdkdisplay-x11.h"
@@ -39,7 +37,6 @@ _gdk_x11_device_manager_new (GdkDisplay *display)
{
if (!g_getenv ("GDK_CORE_DEVICE_EVENTS"))
{
-#ifdef XINPUT_2
int opcode, firstevent, firsterror;
Display *xdisplay;
@@ -70,7 +67,6 @@ _gdk_x11_device_manager_new (GdkDisplay *display)
return GDK_X11_DEVICE_MANAGER_CORE (device_manager_xi2);
}
}
-#endif /* XINPUT_2 */
}
GDK_DISPLAY_NOTE (display, INPUT, g_message ("Creating core device manager"));
@@ -98,23 +94,20 @@ gdk_x11_device_manager_lookup (GdkX11DeviceManagerCore *device_manager,
g_return_val_if_fail (GDK_IS_X11_DEVICE_MANAGER_CORE (device_manager), NULL);
-#ifdef XINPUT_2
if (GDK_IS_X11_DEVICE_MANAGER_XI2 (device_manager))
device = _gdk_x11_device_manager_xi2_lookup (GDK_X11_DEVICE_MANAGER_XI2 (device_manager),
device_id);
- else
-#endif /* XINPUT_2 */
- if (GDK_IS_X11_DEVICE_MANAGER_CORE (device_manager))
- {
- /* It is a core/xi1 device manager, we only map
- * IDs 2 and 3, matching XI2's Virtual Core Pointer
- * and Keyboard.
- */
- if (device_id == VIRTUAL_CORE_POINTER_ID)
- device = GDK_X11_DEVICE_MANAGER_CORE (device_manager)->core_pointer;
- else if (device_id == VIRTUAL_CORE_KEYBOARD_ID)
- device = GDK_X11_DEVICE_MANAGER_CORE (device_manager)->core_keyboard;
- }
+ else if (GDK_IS_X11_DEVICE_MANAGER_CORE (device_manager))
+ {
+ /* It is a core/xi1 device manager, we only map
+ * IDs 2 and 3, matching XI2's Virtual Core Pointer
+ * and Keyboard.
+ */
+ if (device_id == VIRTUAL_CORE_POINTER_ID)
+ device = GDK_X11_DEVICE_MANAGER_CORE (device_manager)->core_pointer;
+ else if (device_id == VIRTUAL_CORE_KEYBOARD_ID)
+ device = GDK_X11_DEVICE_MANAGER_CORE (device_manager)->core_keyboard;
+ }
return device;
}
@@ -140,18 +133,15 @@ gdk_x11_device_get_id (GdkDevice *device)
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
-#ifdef XINPUT_2
if (GDK_IS_X11_DEVICE_XI2 (device))
device_id = _gdk_x11_device_xi2_get_id (GDK_X11_DEVICE_XI2 (device));
- else
-#endif /* XINPUT_2 */
- if (GDK_IS_X11_DEVICE_CORE (device))
- {
- if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
- device_id = VIRTUAL_CORE_KEYBOARD_ID;
- else
- device_id = VIRTUAL_CORE_POINTER_ID;
- }
+ else if (GDK_IS_X11_DEVICE_CORE (device))
+ {
+ if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
+ device_id = VIRTUAL_CORE_KEYBOARD_ID;
+ else
+ device_id = VIRTUAL_CORE_POINTER_ID;
+ }
return device_id;
}
diff --git a/gdk/x11/gdkdrag-x11.c b/gdk/x11/gdkdrag-x11.c
index 43779168ff..aacbbe6095 100644
--- a/gdk/x11/gdkdrag-x11.c
+++ b/gdk/x11/gdkdrag-x11.c
@@ -1940,11 +1940,9 @@ drag_grab (GdkDrag *drag)
root = GDK_DISPLAY_XROOTWIN (display);
seat = gdk_device_get_seat (gdk_drag_get_device (drag));
-#ifdef XINPUT_2
if (GDK_IS_X11_DEVICE_XI2 (device))
capabilities = GDK_SEAT_CAPABILITY_ALL_POINTING;
else
-#endif
capabilities = GDK_SEAT_CAPABILITY_ALL;
cursor = gdk_drag_get_cursor (drag, x11_drag->current_action);
@@ -1966,7 +1964,6 @@ drag_grab (GdkDrag *drag)
if (keycode == NoSymbol)
continue;
-#ifdef XINPUT_2
if (GDK_IS_X11_DEVICE_XI2 (device))
{
gint deviceid = gdk_x11_device_get_id (gdk_seat_get_keyboard (seat));
@@ -1998,7 +1995,6 @@ drag_grab (GdkDrag *drag)
&mods);
}
else
-#endif
{
XGrabKey (GDK_DISPLAY_XDISPLAY (display),
keycode, grab_keys[i].modifiers,
@@ -2040,7 +2036,6 @@ drag_ungrab (GdkDrag *drag)
if (keycode == NoSymbol)
continue;
-#ifdef XINPUT_2
if (GDK_IS_X11_DEVICE_XI2 (keyboard))
{
XIGrabModifiers mods;
@@ -2057,7 +2052,6 @@ drag_ungrab (GdkDrag *drag)
&mods);
}
else
-#endif /* XINPUT_2 */
{
XUngrabKey (GDK_DISPLAY_XDISPLAY (display),
keycode, grab_keys[i].modifiers,
diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h
index 813fa81e1c..2700dcbe56 100644
--- a/gdk/x11/gdkprivate-x11.h
+++ b/gdk/x11/gdkprivate-x11.h
@@ -37,9 +37,7 @@
#include <X11/Xlib.h>
#include <X11/Xutil.h>
-#ifdef XINPUT_2
#include <X11/extensions/XInput2.h>
-#endif
#include <cairo-xlib.h>
@@ -134,7 +132,6 @@ void _gdk_x11_device_check_extension_events (GdkDevice *device);
GdkX11DeviceManagerCore *_gdk_x11_device_manager_new (GdkDisplay *display);
-#ifdef XINPUT_2
guchar * _gdk_x11_device_xi2_translate_event_mask (GdkX11DeviceManagerXI2 *device_manager_xi2,
GdkEventMask event_mask,
gint *len);
@@ -164,7 +161,6 @@ gdouble gdk_x11_device_xi2_get_last_axis_value (GdkX11DeviceXI2 *device,
void gdk_x11_device_xi2_store_axes (GdkX11DeviceXI2 *device,
gdouble *axes,
gint n_axes);
-#endif
GdkAtom _gdk_x11_display_manager_atom_intern (GdkDisplayManager *manager,
const gchar *atom_name,
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index 9dfeb06703..530b80ff26 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -3690,27 +3690,21 @@ handle_wmspec_button_release (GdkDisplay *display,
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
GdkSurface *surface;
-#if defined (HAVE_XGENERICEVENTS) && defined (XINPUT_2)
XIEvent *xiev = (XIEvent *) xevent->xcookie.data;
XIDeviceEvent *xidev = (XIDeviceEvent *) xiev;
if (xevent->xany.type == GenericEvent)
surface = gdk_x11_surface_lookup_for_display (display, xidev->event);
else
-#endif
surface = gdk_x11_surface_lookup_for_display (display, xevent->xany.window);
if (display_x11->wm_moveresize_button != 0 && surface != NULL)
{
if ((xevent->xany.type == ButtonRelease &&
- xevent->xbutton.button == display_x11->wm_moveresize_button)
-#if defined (HAVE_XGENERICEVENTS) && defined (XINPUT_2)
- ||
+ xevent->xbutton.button == display_x11->wm_moveresize_button) ||
(xevent->xany.type == GenericEvent &&
xiev->evtype == XI_ButtonRelease &&
- xidev->detail == display_x11->wm_moveresize_button)
-#endif
- )
+ xidev->detail == display_x11->wm_moveresize_button))
{
display_x11->wm_moveresize_button = 0;
wmspec_send_message (display, surface, 0, 0, _NET_WM_MOVERESIZE_CANCEL, 0);
@@ -4102,7 +4096,6 @@ _gdk_x11_moveresize_handle_event (const XEvent *event)
}
break;
-#if defined (HAVE_XGENERICEVENTS) && defined (XINPUT_2)
case GenericEvent:
{
/* we just assume this is an XI2 event */
@@ -4138,7 +4131,6 @@ _gdk_x11_moveresize_handle_event (const XEvent *event)
}
}
break;
-#endif
default:
break;
diff --git a/meson.build b/meson.build
index bbc5aaee31..2189ee8b61 100644
--- a/meson.build
+++ b/meson.build
@@ -542,18 +542,19 @@ if x11_enabled
cdata.set('HAVE_XGENERICEVENTS', 1)
endif
- if xi_dep.found() and cc.has_header('X11/extensions/XInput2.h', dependencies: xi_dep)
- cdata.set('XINPUT_2', 1)
- # Note that we also check that the XIScrollClassInfo struct is defined,
- # because at least Ubuntu Oneiric seems to have XIAllowTouchEvents(),
- # but not the XIScrollClassInfo struct
- has_allow_touch_evens = cc.has_function('XIAllowTouchEvents', dependencies: xi_dep)
- has_scroll_class_info = cc.has_member('XIScrollClassInfo', 'number', dependencies: xi_dep,
- prefix: '''#include <X11/Xlib.h>
- #include <X11/extensions/XInput2.h>''')
- if has_allow_touch_evens and has_scroll_class_info
- cdata.set('XINPUT_2_2', 1)
- endif
+ if not xi_dep.found() or not cc.has_header('X11/extensions/XInput2.h', dependencies: xi_dep)
+ error('X11 backend enabled, but XInput2 not found.')
+ endif
+
+ # Note that we also check that the XIScrollClassInfo struct is defined,
+ # because at least Ubuntu Oneiric seems to have XIAllowTouchEvents(),
+ # but not the XIScrollClassInfo struct
+ has_allow_touch_evens = cc.has_function('XIAllowTouchEvents', dependencies: xi_dep)
+ has_scroll_class_info = cc.has_member('XIScrollClassInfo', 'number', dependencies: xi_dep,
+ prefix: '''#include <X11/Xlib.h>
+ #include <X11/extensions/XInput2.h>''')
+ if has_allow_touch_evens and has_scroll_class_info
+ cdata.set('XINPUT_2_2', 1)
endif
enable_xinerama = get_option('xinerama')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]