diff options
author | Matthias Clasen <mclasen@redhat.com> | 2014-10-25 10:31:31 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-10-25 10:32:53 -0400 |
commit | f733fa88f585693a12137210c02aa93451b293c9 (patch) | |
tree | cb1c3fefc2f4516f8d8e5347450fb1abea3b835b /gdk/broadway/gdkwindow-broadway.c | |
parent | 23641e3103a9d2883634e496a34e96d407b3d63b (diff) | |
download | gtk+-f733fa88f585693a12137210c02aa93451b293c9.tar.gz |
Broadway: Remove display assumptions
In various places, the broadway backend was just using
the default display and assumed that it is the broadway
display. That may not be the case in a multi-backend world,
so instead iterate over all displays and use the first
broadway display - still not perfect, but enough to survive
for now.
Diffstat (limited to 'gdk/broadway/gdkwindow-broadway.c')
-rw-r--r-- | gdk/broadway/gdkwindow-broadway.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c index 24db20ce01..e0bded15e6 100644 --- a/gdk/broadway/gdkwindow-broadway.c +++ b/gdk/broadway/gdkwindow-broadway.c @@ -28,6 +28,8 @@ #include "gdkwindow-broadway.h" #include "gdkscreen-broadway.h" +#include "gdkbroadwaydisplay.h" +#include "gdkdisplay.h" #include "gdkwindow.h" #include "gdkwindowimpl.h" #include "gdkdisplay-broadway.h" @@ -81,6 +83,28 @@ G_DEFINE_TYPE (GdkWindowImplBroadway, gdk_window_impl_broadway, GDK_TYPE_WINDOW_IMPL) +static GdkDisplay * +find_broadway_display (void) +{ + GdkDisplay *display; + GSList *list, *l; + + display = NULL; + + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = list; l; l = l->next) + { + if (GDK_IS_BROADWAY_DISPLAY (l->data)) + { + display = l->data; + break; + } + } + g_slist_free (list); + + return display; +} + static void update_dirty_windows_and_sync (void) { @@ -88,7 +112,8 @@ update_dirty_windows_and_sync (void) GdkBroadwayDisplay *display; gboolean updated_surface; - display = GDK_BROADWAY_DISPLAY (gdk_display_get_default ()); + display = GDK_BROADWAY_DISPLAY (find_broadway_display ()); + g_assert (display != NULL); updated_surface = FALSE; for (l = display->toplevels; l != NULL; l = l->next) @@ -120,7 +145,7 @@ flush_idle (gpointer data) { flush_id = 0; - gdk_display_flush (gdk_display_get_default ()); + gdk_display_flush (find_broadway_display ()); return FALSE; } |