wayland: Move all GSource handling into gdkeventsource.c
This commit is contained in:
@@ -630,7 +630,7 @@ _gdk_wayland_display_open (const char *display_name)
|
||||
display = g_object_new (GDK_TYPE_WAYLAND_DISPLAY, NULL);
|
||||
display_wayland = GDK_WAYLAND_DISPLAY (display);
|
||||
display_wayland->wl_display = wl_display;
|
||||
display_wayland->event_source = _gdk_wayland_display_event_source_new (display);
|
||||
gdk_wayland_display_install_gsource (display_wayland);
|
||||
|
||||
init_settings (display);
|
||||
|
||||
@@ -731,12 +731,7 @@ gdk_wayland_display_dispose (GObject *object)
|
||||
|
||||
g_list_free_full (display_wayland->toplevels, destroy_toplevel);
|
||||
|
||||
if (display_wayland->event_source)
|
||||
{
|
||||
g_source_destroy (display_wayland->event_source);
|
||||
g_source_unref (display_wayland->event_source);
|
||||
display_wayland->event_source = NULL;
|
||||
}
|
||||
gdk_wayland_display_uninstall_gsource (display_wayland);
|
||||
|
||||
g_list_free_full (display_wayland->async_roundtrips, (GDestroyNotify) wl_callback_destroy);
|
||||
|
||||
|
@@ -175,23 +175,23 @@ _gdk_wayland_display_deliver_event (GdkDisplay *display,
|
||||
_gdk_display_get_next_serial (display));
|
||||
}
|
||||
|
||||
GSource *
|
||||
_gdk_wayland_display_event_source_new (GdkDisplay *display)
|
||||
void
|
||||
gdk_wayland_display_install_gsource (GdkWaylandDisplay *display_wayland)
|
||||
{
|
||||
GdkDisplay *display = GDK_DISPLAY (display_wayland);
|
||||
GSource *source;
|
||||
GdkWaylandEventSource *event_source;
|
||||
GdkWaylandDisplay *display_wayland;
|
||||
char *name;
|
||||
|
||||
source = g_source_new (&gdk_wayland_event_source_funcs,
|
||||
sizeof (GdkWaylandEventSource));
|
||||
display_wayland->event_source = source;
|
||||
event_source = (GdkWaylandEventSource *) source;
|
||||
name = g_strdup_printf ("GDK Wayland Event source (%s)",
|
||||
gdk_display_get_name (display));
|
||||
g_source_set_name (source, name);
|
||||
g_free (name);
|
||||
event_source = (GdkWaylandEventSource *) source;
|
||||
|
||||
display_wayland = GDK_WAYLAND_DISPLAY (display);
|
||||
event_source->display = display;
|
||||
event_source->pfd.fd = wl_display_get_fd (display_wayland->wl_display);
|
||||
event_source->pfd.events = G_IO_IN | G_IO_ERR | G_IO_HUP;
|
||||
@@ -200,8 +200,17 @@ _gdk_wayland_display_event_source_new (GdkDisplay *display)
|
||||
g_source_set_priority (source, GDK_PRIORITY_EVENTS);
|
||||
g_source_set_can_recurse (source, TRUE);
|
||||
g_source_attach (source, NULL);
|
||||
}
|
||||
|
||||
return source;
|
||||
void
|
||||
gdk_wayland_display_uninstall_gsource (GdkWaylandDisplay *display_wayland)
|
||||
{
|
||||
if (display_wayland->event_source)
|
||||
{
|
||||
g_source_destroy (display_wayland->event_source);
|
||||
g_source_unref (display_wayland->event_source);
|
||||
display_wayland->event_source = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -183,7 +183,8 @@ void gdk_wayland_device_unset_touch_grab (GdkDevice *device,
|
||||
GdkEventSequence *sequence);
|
||||
|
||||
void _gdk_wayland_display_deliver_event (GdkDisplay *display, GdkEvent *event);
|
||||
GSource *_gdk_wayland_display_event_source_new (GdkDisplay *display);
|
||||
void gdk_wayland_display_install_gsource (GdkWaylandDisplay *display_wayland);
|
||||
void gdk_wayland_display_uninstall_gsource (GdkWaylandDisplay *display_wayland);
|
||||
void _gdk_wayland_display_queue_events (GdkDisplay *display);
|
||||
|
||||
GdkAppLaunchContext *_gdk_wayland_display_get_app_launch_context (GdkDisplay *display);
|
||||
|
Reference in New Issue
Block a user