From 032688800c9926f2f86bdcaf0bf30147f994cfcc Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Wed, 10 Jul 2013 16:34:48 -0400 Subject: [PATCH] device-manager: Don't pass the event mask around There's no point in doing this, as we always use a constant event mask. Simply do what everything else does. https://bugzilla.gnome.org/show_bug.cgi?id=703969 --- clutter/clutter-device-manager-private.h | 9 +++---- clutter/clutter-device-manager.c | 5 ++-- clutter/clutter-input-device.c | 6 ++--- clutter/x11/clutter-input-device-xi2.c | 30 +++++++----------------- clutter/x11/clutter-stage-x11.c | 26 ++++---------------- clutter/x11/clutter-stage-x11.h | 2 +- 6 files changed, 21 insertions(+), 57 deletions(-) diff --git a/clutter/clutter-device-manager-private.h b/clutter/clutter-device-manager-private.h index 8bc5330d7..631a77665 100644 --- a/clutter/clutter-device-manager-private.h +++ b/clutter/clutter-device-manager-private.h @@ -138,8 +138,7 @@ struct _ClutterInputDeviceClass GObjectClass parent_class; void (* select_stage_events) (ClutterInputDevice *device, - ClutterStage *stage, - gint event_mask); + ClutterStage *stage); gboolean (* keycode_to_evdev) (ClutterInputDevice *device, guint hardware_keycode, guint *evdev_keycode); @@ -152,8 +151,7 @@ void _clutter_device_manager_remove_device (ClutterDeviceMa ClutterInputDevice *device); void _clutter_device_manager_update_devices (ClutterDeviceManager *device_manager); void _clutter_device_manager_select_stage_events (ClutterDeviceManager *device_manager, - ClutterStage *stage, - gint event_mask); + ClutterStage *stage); ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager); /* input device */ @@ -199,8 +197,7 @@ void _clutter_input_device_remove_slave (ClutterInputDev ClutterInputDevice *slave); void _clutter_input_device_select_stage_events (ClutterInputDevice *device, - ClutterStage *stage, - gint event_flags); + ClutterStage *stage); gboolean _clutter_input_device_translate_axis (ClutterInputDevice *device, guint index_, diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c index d4bb6b247..4a007a6cb 100644 --- a/clutter/clutter-device-manager.c +++ b/clutter/clutter-device-manager.c @@ -304,8 +304,7 @@ clutter_device_manager_get_core_device (ClutterDeviceManager *device_manager, void _clutter_device_manager_select_stage_events (ClutterDeviceManager *device_manager, - ClutterStage *stage, - gint event_flags) + ClutterStage *stage) { ClutterDeviceManagerClass *manager_class; const GSList *devices, *d; @@ -320,7 +319,7 @@ _clutter_device_manager_select_stage_events (ClutterDeviceManager *device_manage ClutterInputDevice *device = d->data; if (device->is_enabled) - _clutter_input_device_select_stage_events (device, stage, event_flags); + _clutter_input_device_select_stage_events (device, stage); } } diff --git a/clutter/clutter-input-device.c b/clutter/clutter-input-device.c index e92cf22a7..b7f69ef26 100644 --- a/clutter/clutter-input-device.c +++ b/clutter/clutter-input-device.c @@ -1619,7 +1619,6 @@ clutter_input_device_get_associated_device (ClutterInputDevice *device) * clutter_input_device_select_stage_events: * @device: a #ClutterInputDevice * @stage: the #ClutterStage to select events on - * @event_mask: platform-specific mask of events * * Selects input device events on @stage. * @@ -1627,14 +1626,13 @@ clutter_input_device_get_associated_device (ClutterInputDevice *device) */ void _clutter_input_device_select_stage_events (ClutterInputDevice *device, - ClutterStage *stage, - gint event_mask) + ClutterStage *stage) { ClutterInputDeviceClass *device_class; device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device); if (device_class->select_stage_events != NULL) - device_class->select_stage_events (device, stage, event_mask); + device_class->select_stage_events (device, stage); } /** diff --git a/clutter/x11/clutter-input-device-xi2.c b/clutter/x11/clutter-input-device-xi2.c index 5923977d3..cd65b7b32 100644 --- a/clutter/x11/clutter-input-device-xi2.c +++ b/clutter/x11/clutter-input-device-xi2.c @@ -55,8 +55,7 @@ G_DEFINE_TYPE (ClutterInputDeviceXI2, static void clutter_input_device_xi2_select_stage_events (ClutterInputDevice *device, - ClutterStage *stage, - gint event_mask) + ClutterStage *stage) { ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); ClutterBackendX11 *backend_x11; @@ -71,26 +70,13 @@ clutter_input_device_xi2_select_stage_events (ClutterInputDevice *device, len = XIMaskLen (XI_LASTEVENT); mask = g_new0 (unsigned char, len); - if (event_mask & PointerMotionMask) - XISetMask (mask, XI_Motion); - - if (event_mask & ButtonPressMask) - XISetMask (mask, XI_ButtonPress); - - if (event_mask & ButtonReleaseMask) - XISetMask (mask, XI_ButtonRelease); - - if (event_mask & KeyPressMask) - XISetMask (mask, XI_KeyPress); - - if (event_mask & KeyReleaseMask) - XISetMask (mask, XI_KeyRelease); - - if (event_mask & EnterWindowMask) - XISetMask (mask, XI_Enter); - - if (event_mask & LeaveWindowMask) - XISetMask (mask, XI_Leave); + XISetMask (mask, XI_Motion); + XISetMask (mask, XI_ButtonPress); + XISetMask (mask, XI_ButtonRelease); + XISetMask (mask, XI_KeyPress); + XISetMask (mask, XI_KeyRelease); + 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 */ diff --git a/clutter/x11/clutter-stage-x11.c b/clutter/x11/clutter-stage-x11.c index 230172cc9..08b8e15da 100644 --- a/clutter/x11/clutter-stage-x11.c +++ b/clutter/x11/clutter-stage-x11.c @@ -547,14 +547,10 @@ _clutter_stage_x11_events_device_changed (ClutterStageX11 *stage_x11, ClutterDeviceManager *device_manager) { ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_x11); - int event_flags = 0; if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_FLOATING) - event_flags = CLUTTER_STAGE_X11_EVENT_MASK; - - _clutter_device_manager_select_stage_events (device_manager, - stage_cogl->wrapper, - event_flags); + _clutter_device_manager_select_stage_events (device_manager, + stage_cogl->wrapper); } static void @@ -564,12 +560,10 @@ stage_events_device_added (ClutterDeviceManager *device_manager, { ClutterStageWindow *stage_window = user_data; ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_window); - int event_flags = CLUTTER_STAGE_X11_EVENT_MASK; if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_FLOATING) _clutter_device_manager_select_stage_events (device_manager, - stage_cogl->wrapper, - event_flags); + stage_cogl->wrapper); } static gboolean @@ -580,7 +574,6 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window) ClutterBackend *backend = CLUTTER_BACKEND (stage_cogl->backend); ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); ClutterDeviceManager *device_manager; - int event_flags; gfloat width, height; clutter_actor_get_size (CLUTTER_ACTOR (stage_cogl->wrapper), @@ -623,14 +616,6 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window) set_wm_title (stage_x11); set_cursor_visible (stage_x11); - - /* the masks for the events we want to select on a stage window; - * KeyPressMask and KeyReleaseMask are necessary even with XI1 - * because key events are broken with that extension, and will - * be fixed by XI2 - */ - event_flags = CLUTTER_STAGE_X11_EVENT_MASK; - /* we unconditionally select input events even with event retrieval * disabled because we need to guarantee that the Clutter internal * state is maintained when calling clutter_x11_handle_event() without @@ -648,7 +633,7 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window) * for an example of things that break if we do conditional event * selection. */ - XSelectInput (backend_x11->xdpy, stage_x11->xwin, event_flags); + XSelectInput (backend_x11->xdpy, stage_x11->xwin, CLUTTER_STAGE_X11_EVENT_MASK); /* input events also depent on the actual device, so we need to * use the device manager to let every device select them, using @@ -658,8 +643,7 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window) if (G_UNLIKELY (device_manager != NULL)) { _clutter_device_manager_select_stage_events (device_manager, - stage_cogl->wrapper, - event_flags); + stage_cogl->wrapper); g_signal_connect (device_manager, "device-added", G_CALLBACK (stage_events_device_added), diff --git a/clutter/x11/clutter-stage-x11.h b/clutter/x11/clutter-stage-x11.h index c7a7a1b3c..8b610563e 100644 --- a/clutter/x11/clutter-stage-x11.h +++ b/clutter/x11/clutter-stage-x11.h @@ -86,7 +86,7 @@ struct _ClutterStageX11Class KeyReleaseMask | \ ButtonPressMask | \ ButtonReleaseMask | \ - PointerMotionMask; + PointerMotionMask GType _clutter_stage_x11_get_type (void) G_GNUC_CONST;