diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index e837b19a6..46720d285 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -175,6 +175,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); @@ -933,10 +941,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); } @@ -962,6 +973,7 @@ static gboolean init_clutter (MetaBackend *backend, GError **error) { + MetaBackendSource *backend_source; GSource *source; clutter_set_custom_backend_func (meta_get_clutter_backend); @@ -973,7 +985,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 b7d8e6adf..b2785838c 100644 --- a/src/backends/native/meta-seat-native.c +++ b/src/backends/native/meta-seat-native.c @@ -246,15 +246,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 */ - return; - } - - event->any.stage = stage; _clutter_event_push (event, FALSE); } @@ -1339,7 +1330,6 @@ meta_event_dispatch (GSource *g_source, { MetaEventSource *source = (MetaEventSource *) g_source; MetaSeatNative *seat; - ClutterEvent *event; seat = source->seat;