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.
This commit is contained in:
parent
3f28091e52
commit
b7eb1f3e8b
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user