backends: Assign stage to events in MetaBackend

Don't do this in the MetaSeatNative, this should be detached from
the stage.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403>
This commit is contained in:
Carlos Garnacho 2020-07-31 20:17:31 +02:00 committed by Marge Bot
parent 05edf4815b
commit 0cb0dd3538
2 changed files with 15 additions and 12 deletions

View File

@ -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);

View File

@ -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;