[mutter/wip/xinput2r: 52/68] core: enable XInput2 by default
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/xinput2r: 52/68] core: enable XInput2 by default
- Date: Wed, 24 Oct 2012 16:13:41 +0000 (UTC)
commit 33917053f84b6ddfdc5273d61550a1df9e23b57c
Author: Carlos Garnacho <carlosg gnome org>
Date: Sat Jul 9 18:49:35 2011 +0200
core: enable XInput2 by default
This is nothing but the beginning, things work with a single
pointer/keyboard pair, but will be largely broken with multiple
devices interacting simultaneously, so we first need a policy
to establish a sensible behavior for extra pointer/keyboard
pairs.
the MUTTER_USE_CORE_DEVICES envvar has been added to force use
of Xlib core events for devices in order to check for regressions.
src/core/display.c | 3 ++-
src/core/main.c | 7 ++++++-
src/core/util.c | 13 +++++++++++++
src/meta/util.h | 3 +++
src/ui/ui.c | 11 ++---------
5 files changed, 26 insertions(+), 11 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index 34668e7..9eea880 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -552,7 +552,8 @@ meta_display_open (void)
the_display->static_gravity_works = g_getenv ("MUTTER_USE_STATIC_GRAVITY") != NULL;
meta_bell_init (the_display);
- the_display->device_map = meta_device_map_new (the_display, TRUE);
+ the_display->device_map = meta_device_map_new (the_display,
+ meta_get_use_core_devices ());
meta_display_init_keys (the_display);
diff --git a/src/core/main.c b/src/core/main.c
index 00f36ed..9d9cfde 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -301,9 +301,12 @@ static GSourceFuncs event_funcs = {
static void
meta_clutter_init (void)
{
+ if (!meta_get_use_core_devices ())
+ clutter_x11_enable_xinput ();
+
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
clutter_x11_disable_event_retrieval ();
-
+
if (CLUTTER_INIT_SUCCESS == clutter_init (NULL, NULL))
{
GSource *source = g_source_new (&event_funcs, sizeof (GSource));
@@ -414,6 +417,8 @@ meta_init (void)
meta_set_verbose (TRUE);
if (g_getenv ("MUTTER_DEBUG"))
meta_set_debugging (TRUE);
+ if (g_getenv ("MUTTER_USE_CORE_DEVICES"))
+ meta_set_use_core_devices (TRUE);
if (g_get_home_dir ())
if (chdir (g_get_home_dir ()) < 0)
diff --git a/src/core/util.c b/src/core/util.c
index 0ab87bb..81c0f8f 100644
--- a/src/core/util.c
+++ b/src/core/util.c
@@ -50,6 +50,7 @@ meta_topic_real_valist (MetaDebugTopic topic,
static gint verbose_topics = 0;
static gboolean is_debugging = FALSE;
static gboolean replace_current = FALSE;
+static gboolean use_core_devices = FALSE;
static int no_prefix = 0;
#ifdef WITH_VERBOSE_MODE
@@ -179,6 +180,18 @@ meta_set_debugging (gboolean setting)
}
gboolean
+meta_get_use_core_devices (void)
+{
+ return use_core_devices;
+}
+
+void
+meta_set_use_core_devices (gboolean setting)
+{
+ use_core_devices = setting;
+}
+
+gboolean
meta_get_replace_current_wm (void)
{
return replace_current;
diff --git a/src/meta/util.h b/src/meta/util.h
index 04bb7bf..c1b2bd9 100644
--- a/src/meta/util.h
+++ b/src/meta/util.h
@@ -38,6 +38,9 @@ gboolean meta_is_syncing (void);
void meta_set_syncing (gboolean setting);
void meta_set_replace_current_wm (gboolean setting);
+gboolean meta_get_use_core_devices (void);
+void meta_set_use_core_devices (gboolean setting);
+
void meta_debug_spew_real (const char *format,
...) G_GNUC_PRINTF (1, 2);
void meta_verbose_real (const char *format,
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 5650574..87419d9 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -61,15 +61,8 @@ struct _MetaUI
void
meta_ui_init (void)
{
- /* As of 2.91.7, Gdk uses XI2 by default, which conflicts with the
- * direct X calls we use - in particular, events caused by calls to
- * XGrabPointer/XGrabKeyboard are no longer understood by GDK, while
- * GDK will no longer generate the core XEvents we process.
- * So at least for now, enforce the previous behavior.
- */
-#if GTK_CHECK_VERSION(2, 91, 7)
- gdk_disable_multidevice ();
-#endif
+ if (meta_get_use_core_devices ())
+ gdk_disable_multidevice ();
if (!gtk_init_check (NULL, NULL))
meta_fatal ("Unable to open X display %s\n", XDisplayName (NULL));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]