]> Pileus Git - ~andy/gtk/blobdiff - gdk/wayland/gdkdisplay-wayland.c
wayland: Update to recent API changes
[~andy/gtk] / gdk / wayland / gdkdisplay-wayland.c
index 8481e8b598cda109f7e14e51f93f41e537277ecf..929ab5868dcfbd0efcf133e23daa9acf88e2f999 100644 (file)
@@ -143,31 +143,6 @@ display_handle_mode(void *data,
 {
 }
 
-static void
-compositor_handle_visual(void *data,
-                        struct wl_compositor *compositor,
-                        uint32_t id, uint32_t token)
-{
-       GdkDisplayWayland *d = data;
-
-       switch (token) {
-       case WL_COMPOSITOR_VISUAL_ARGB32:
-               d->argb_visual = wl_visual_create(d->wl_display, id, 1);
-               break;
-       case WL_COMPOSITOR_VISUAL_PREMULTIPLIED_ARGB32:
-               d->premultiplied_argb_visual =
-                       wl_visual_create(d->wl_display, id, 1);
-               break;
-       case WL_COMPOSITOR_VISUAL_XRGB32:
-               d->rgb_visual = wl_visual_create(d->wl_display, id, 1);
-               break;
-       }
-}
-
-static const struct wl_compositor_listener compositor_listener = {
-       compositor_handle_visual,
-};
-
 static const struct wl_output_listener output_listener = {
        output_handle_geometry,
        display_handle_mode
@@ -182,21 +157,21 @@ gdk_display_handle_global(struct wl_display *display, uint32_t id,
   struct wl_input_device *input;
 
   if (strcmp(interface, "wl_compositor") == 0) {
-    display_wayland->compositor = wl_compositor_create(display, id, 1);
-    wl_compositor_add_listener(display_wayland->compositor,
-                                          &compositor_listener, display_wayland);
+    display_wayland->compositor =
+      wl_display_bind(display, id, &wl_compositor_interface);
   } else if (strcmp(interface, "wl_shm") == 0) {
-    display_wayland->shm = wl_shm_create(display, id, 1);
+    display_wayland->shm = wl_display_bind(display, id, &wl_shm_interface);
   } else if (strcmp(interface, "wl_shell") == 0) {
-    display_wayland->shell = wl_shell_create(display, id, 1);
+    display_wayland->shell = wl_display_bind(display, id, &wl_shell_interface);
     wl_shell_add_listener(display_wayland->shell,
                          &shell_listener, display_wayland);
   } else if (strcmp(interface, "wl_output") == 0) {
-    display_wayland->output = wl_output_create(display, id, 1);
+    display_wayland->output =
+      wl_display_bind(display, id, &wl_output_interface);
     wl_output_add_listener(display_wayland->output,
                           &output_listener, display_wayland);
   } else if (strcmp(interface, "wl_input_device") == 0) {
-    input = wl_input_device_create(display, id, 1);
+    input = wl_display_bind(display, id, &wl_input_device_interface);
     _gdk_wayland_device_manager_add_device (gdk_display->device_manager,
                                            input);
   }
@@ -375,28 +350,16 @@ gdk_wayland_display_beep (GdkDisplay *display)
   g_return_if_fail (GDK_IS_DISPLAY (display));
 }
 
-static void
-sync_callback(void *data)
-{
-  gboolean *done = data;
-
-  *done = TRUE;
-}
-
 static void
 gdk_wayland_display_sync (GdkDisplay *display)
 {
   GdkDisplayWayland *display_wayland;
-  gboolean done;
 
   g_return_if_fail (GDK_IS_DISPLAY (display));
 
   display_wayland = GDK_DISPLAY_WAYLAND (display);
 
-  wl_display_sync_callback(display_wayland->wl_display, sync_callback, &done);
-  wl_display_iterate(display_wayland->wl_display, WL_DISPLAY_WRITABLE);
-  while (!done)
-    wl_display_iterate(display_wayland->wl_display, WL_DISPLAY_READABLE);
+  wl_display_roundtrip(display_wayland->wl_display);
 }
 
 static void