]> Pileus Git - ~andy/gtk/commitdiff
wayland: Add basic multiple output support
authorRob Bradford <rob@linux.intel.com>
Thu, 14 Feb 2013 13:00:19 +0000 (13:00 +0000)
committerRob Bradford <rob@linux.intel.com>
Thu, 14 Feb 2013 13:02:27 +0000 (13:02 +0000)
Store the wl_output pointer within the the GdkWaylandMonitor structure.

gdk/wayland/gdkdisplay-wayland.c
gdk/wayland/gdkdisplay-wayland.h
gdk/wayland/gdkscreen-wayland.c

index 640e3e900c0c083d039e4eccf843b83d896c9447..ecb0e6491ccbb3ec84fbf90007110d72f1b52aed 100644 (file)
@@ -95,6 +95,7 @@ gdk_registry_handle_global(void *data, struct wl_registry *registry, uint32_t id
   GdkWaylandDisplay *display_wayland = data;
   GdkDisplay *gdk_display = GDK_DISPLAY_OBJECT (data);
   struct wl_seat *seat;
+  struct wl_output *output;
 
   if (strcmp(interface, "wl_compositor") == 0) {
     display_wayland->compositor =
@@ -109,9 +110,9 @@ gdk_registry_handle_global(void *data, struct wl_registry *registry, uint32_t id
     display_wayland->shell =
        wl_registry_bind(display_wayland->wl_registry, id, &wl_shell_interface, 1);
   } else if (strcmp(interface, "wl_output") == 0) {
-    display_wayland->output =
+    output =
       wl_registry_bind(display_wayland->wl_registry, id, &wl_output_interface, 1);
-    _gdk_wayland_screen_add_output(display_wayland->screen, display_wayland->output);
+    _gdk_wayland_screen_add_output(display_wayland->screen, output);
   } else if (strcmp(interface, "wl_seat") == 0) {
     seat = wl_registry_bind(display_wayland->wl_registry, id, &wl_seat_interface, 1);
     _gdk_wayland_device_manager_add_device (gdk_display->device_manager,
index fc9042904ba4b44126f1b95c7d14999b29e629fc..fb284e323c7af4b89ffb534892f5aaee082dad73 100644 (file)
@@ -61,7 +61,6 @@ struct _GdkWaylandDisplay
   struct wl_compositor *compositor;
   struct wl_shm *shm;
   struct wl_shell *shell;
-  struct wl_output *output;
   struct wl_input_device *input_device;
   struct wl_data_device_manager *data_device_manager;
 
index cf4bd2d4f846cdcb547019746bafd91f35378b3c..d30cc7c1c9ebd5dac525d12c7a5649f8eaeffaa1 100644 (file)
@@ -67,6 +67,7 @@ struct _GdkWaylandScreenClass
 
 struct _GdkWaylandMonitor
 {
+  struct wl_output *output;
   GdkRectangle  geometry;
   int          width_mm;
   int          height_mm;
@@ -589,6 +590,7 @@ _gdk_wayland_screen_add_output (GdkScreen *screen,
   GdkWaylandScreen *screen_wayland = GDK_WAYLAND_SCREEN (screen);
   GdkWaylandMonitor *monitor = g_new0(GdkWaylandMonitor, 1);
 
+  monitor->output = output;
   g_ptr_array_add(screen_wayland->monitors, monitor);
 
   wl_output_add_listener(output, &output_listener, monitor);