[gnome-shell] Don't use get_core_device
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Don't use get_core_device
- Date: Thu, 27 Feb 2014 19:55:40 +0000 (UTC)
commit b7eb1f3e8b8806eab6bd238cb73745dea3ab524d
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Feb 27 14:01:30 2014 -0500
Don't use get_core_device
clutter_device_manager_get_core_device calls XIGetClientPointer, which
requires a round-trip to the server. Since we do this on StWidget
creation, this means a full round-trip for every created StWidget.
Replace this with get_device with the ID of the VCP/VCK, since mutter
doesn't support MPX, and we know this is what the device is.
src/shell-global.c | 8 ++++----
src/shell-screenshot.c | 2 +-
src/st/st-widget.c | 6 ++++--
3 files changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/src/shell-global.c b/src/shell-global.c
index 59b5273..d44d552 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -819,8 +819,8 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
if (event_gdk->key.window == global->ibus_window)
{
ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
- ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager,
- CLUTTER_KEYBOARD_DEVICE);
+ ClutterInputDevice *keyboard = clutter_device_manager_get_device (device_manager,
+ META_VIRTUAL_CORE_KEYBOARD_ID);
ClutterEvent *event_clutter = clutter_event_new ((event_gdk->type == GDK_KEY_PRESS) ?
CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE);
@@ -1280,8 +1280,8 @@ shell_global_sync_pointer (ShellGlobal *global)
event.y = y;
event.modifier_state = mods;
event.axes = NULL;
- event.device = clutter_device_manager_get_core_device (clutter_device_manager_get_default (),
- CLUTTER_POINTER_DEVICE);
+ event.device = clutter_device_manager_get_device (clutter_device_manager_get_default (),
+ META_VIRTUAL_CORE_POINTER_ID);
/* Leaving event.source NULL will force clutter to look it up, which
* will generate enter/leave events as a side effect, if they are
diff --git a/src/shell-screenshot.c b/src/shell-screenshot.c
index 991a554..a076aaa 100644
--- a/src/shell-screenshot.c
+++ b/src/shell-screenshot.c
@@ -253,7 +253,7 @@ get_pointer_coords (int *x,
ClutterPoint point;
manager = clutter_device_manager_get_default ();
- device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE);
+ device = clutter_device_manager_get_device (manager, META_VIRTUAL_CORE_POINTER_ID);
clutter_input_device_get_coords (device, NULL, &point);
*x = point.x;
diff --git a/src/st/st-widget.c b/src/st/st-widget.c
index 6aa3258..ef0e952 100644
--- a/src/st/st-widget.c
+++ b/src/st/st-widget.c
@@ -46,6 +46,9 @@
#include <gtk/gtk.h>
#include <atk/atk-enum-types.h>
+/* This is set in stone and also hard-coded in GDK. */
+#define VIRTUAL_CORE_POINTER_ID 2
+
/*
* Forward declaration for sake of StWidgetChild
*/
@@ -1722,8 +1725,7 @@ st_widget_sync_hover (StWidget *widget)
ClutterActor *pointer_actor;
device_manager = clutter_device_manager_get_default ();
- pointer = clutter_device_manager_get_core_device (device_manager,
- CLUTTER_POINTER_DEVICE);
+ pointer = clutter_device_manager_get_device (device_manager, VIRTUAL_CORE_POINTER_ID);
pointer_actor = clutter_input_device_get_pointer_actor (pointer);
if (pointer_actor)
st_widget_set_hover (widget, clutter_actor_contains (CLUTTER_ACTOR (widget), pointer_actor));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]