diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 124ea74c0..ddcf29aaf 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); @@ -926,10 +934,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); } @@ -955,6 +966,7 @@ static gboolean init_clutter (MetaBackend *backend, GError **error) { + MetaBackendSource *backend_source; GSource *source; clutter_set_custom_backend_func (meta_get_clutter_backend); @@ -966,7 +978,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 5bf93ea5a..9fd88c92d 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); } @@ -1335,7 +1325,6 @@ meta_event_dispatch (GSource *g_source, { MetaEventSource *source = (MetaEventSource *) g_source; MetaSeatNative *seat; - ClutterEvent *event; seat = source->seat;