[mutter/wip/carlosg/input-thread: 159/185] backends: Assign stage to events in MetaBackend




commit 4296d6703a8f3dbe7c3c38169e5db358117945bc
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Jul 31 20:17:31 2020 +0200

    backends: Assign stage to events in MetaBackend
    
    Don't do this in the MetaSeatNative, this should be detached from
    the stage.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403

 src/backends/meta-backend.c            | 16 +++++++++++++++-
 src/backends/native/meta-seat-native.c | 11 -----------
 2 files changed, 15 insertions(+), 12 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 3996fbd73d..2a2f9c7db8 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -174,6 +174,14 @@ struct _MetaBackendPrivate
 };
 typedef struct _MetaBackendPrivate MetaBackendPrivate;
 
+typedef struct _MetaBackendSource MetaBackendSource;
+
+struct _MetaBackendSource
+{
+  GSource parent;
+  MetaBackend *backend;
+};
+
 static void
 initable_iface_init (GInitableIface *initable_iface);
 
@@ -931,10 +939,13 @@ clutter_source_dispatch (GSource     *source,
                          GSourceFunc  callback,
                          gpointer     user_data)
 {
+  MetaBackendSource *backend_source = (MetaBackendSource *) source;
   ClutterEvent *event = clutter_event_get ();
 
   if (event)
     {
+      event->any.stage =
+        CLUTTER_STAGE (meta_backend_get_stage (backend_source->backend));
       clutter_do_event (event);
       clutter_event_free (event);
     }
@@ -960,6 +971,7 @@ static gboolean
 init_clutter (MetaBackend  *backend,
               GError      **error)
 {
+  MetaBackendSource *backend_source;
   GSource *source;
 
   clutter_set_custom_backend_func (meta_get_clutter_backend);
@@ -971,7 +983,9 @@ init_clutter (MetaBackend  *backend,
       return FALSE;
     }
 
-  source = g_source_new (&clutter_source_funcs, sizeof (GSource));
+  source = g_source_new (&clutter_source_funcs, sizeof (MetaBackendSource));
+  backend_source = (MetaBackendSource *) source;
+  backend_source->backend = backend;
   g_source_attach (source, NULL);
   g_source_unref (source);
 
diff --git a/src/backends/native/meta-seat-native.c b/src/backends/native/meta-seat-native.c
index cd6e9cccf1..a18754c6be 100644
--- a/src/backends/native/meta-seat-native.c
+++ b/src/backends/native/meta-seat-native.c
@@ -248,16 +248,6 @@ static void
 queue_event (MetaSeatNative *seat,
              ClutterEvent   *event)
 {
-  ClutterStage *stage = meta_seat_native_get_stage (seat);
-
-  if (!stage)
-    {
-      /* No stage yet, drop this event on the floor */
-      clutter_event_free (event);
-      return;
-    }
-
-  event->any.stage = stage;
   _clutter_event_push (event, FALSE);
 }
 
@@ -1341,7 +1331,6 @@ meta_event_dispatch (GSource     *g_source,
 {
   MetaEventSource *source = (MetaEventSource *) g_source;
   MetaSeatNative *seat;
-  ClutterEvent *event;
 
   seat = source->seat;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]