[mutter] backend: Move out some code from post_init()
- From: Jonas Ã…dahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend: Move out some code from post_init()
- Date: Wed, 24 May 2017 03:20:46 +0000 (UTC)
commit 755755a2f348f4f3bab27555fa9ef0ebcc0c4c03
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Apr 10 16:33:00 2017 +0800
backend: Move out some code from post_init()
meta_backend_real_post_init() had some open coded initialization with
some unexpected interdependencies. Split these up and move them to their
own functions in order to make meta_backend_real_post_init() a bit more
readable.
https://bugzilla.gnome.org/show_bug.cgi?id=782152
src/backends/meta-backend.c | 85 +++++++++++++++++++++++++++++--------------
1 files changed, 58 insertions(+), 27 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 3b97876..5e478c8 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -45,6 +45,8 @@
#include "backends/meta-monitor-manager-dummy.h"
#include "ui/theme-private.h"
+#define META_IDLE_MONITOR_CORE_DEVICE 0
+
enum
{
KEYMAP_CHANGED,
@@ -246,6 +248,16 @@ destroy_device_monitor (MetaBackend *backend,
}
static void
+meta_backend_monitor_device (MetaBackend *backend,
+ ClutterInputDevice *device)
+{
+ int device_id;
+
+ device_id = clutter_input_device_get_device_id (device);
+ create_device_monitor (backend, device_id);
+}
+
+static void
on_device_added (ClutterDeviceManager *device_manager,
ClutterInputDevice *device,
gpointer user_data)
@@ -353,9 +365,49 @@ create_monitor_manager (MetaBackend *backend)
}
static void
+create_device_monitors (MetaBackend *backend,
+ ClutterDeviceManager *device_manager)
+{
+ const GSList *devices;
+ const GSList *l;
+
+ create_device_monitor (backend, META_IDLE_MONITOR_CORE_DEVICE);
+
+ devices = clutter_device_manager_peek_devices (device_manager);
+ for (l = devices; l; l = l->next)
+ {
+ ClutterInputDevice *device = l->data;
+
+ meta_backend_monitor_device (backend, device);
+ }
+}
+
+static void
+set_initial_pointer_visibility (MetaBackend *backend,
+ ClutterDeviceManager *device_manager)
+{
+ MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+ const GSList *devices;
+ const GSList *l;
+ gboolean has_touchscreen = FALSE;
+
+ devices = clutter_device_manager_peek_devices (device_manager);
+ for (l = devices; l; l = l->next)
+ {
+ ClutterInputDevice *device = l->data;
+
+ has_touchscreen |= device_is_slave_touchscreen (device);
+ }
+
+ meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker,
+ !has_touchscreen);
+}
+
+static void
meta_backend_real_post_init (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+ ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
priv->stage = meta_stage_new ();
clutter_actor_realize (priv->stage);
@@ -373,35 +425,14 @@ meta_backend_real_post_init (MetaBackend *backend)
g_hash_table_new_full (g_int_hash, g_int_equal,
NULL, (GDestroyNotify) g_object_unref);
- {
- MetaCursorTracker *cursor_tracker;
- ClutterDeviceManager *manager;
- gboolean has_touchscreen = FALSE;
- GSList *devices, *l;
-
- /* Create the core device monitor. */
- create_device_monitor (backend, 0);
-
- manager = clutter_device_manager_get_default ();
- g_signal_connect_object (manager, "device-added",
- G_CALLBACK (on_device_added), backend, 0);
- g_signal_connect_object (manager, "device-removed",
- G_CALLBACK (on_device_removed), backend, 0);
-
- devices = clutter_device_manager_list_devices (manager);
-
- for (l = devices; l != NULL; l = l->next)
- {
- ClutterInputDevice *device = l->data;
- on_device_added (manager, device, backend);
- has_touchscreen |= device_is_slave_touchscreen (device);
- }
+ create_device_monitors (backend, device_manager);
- cursor_tracker = priv->cursor_tracker;
- meta_cursor_tracker_set_pointer_visible (cursor_tracker, !has_touchscreen);
+ g_signal_connect_object (device_manager, "device-added",
+ G_CALLBACK (on_device_added), backend, 0);
+ g_signal_connect_object (device_manager, "device-removed",
+ G_CALLBACK (on_device_removed), backend, 0);
- g_slist_free (devices);
- }
+ set_initial_pointer_visibility (backend, device_manager);
priv->input_settings = meta_input_settings_create ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]