Example #1
0
static void
gdk_registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
					const char *interface, uint32_t version)
{
  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 =
      wl_registry_bind(display_wayland->wl_registry, id, &wl_compositor_interface, MIN (version, 3));
    display_wayland->compositor_version = MIN (version, 3);
  } else if (strcmp(interface, "wl_shm") == 0) {
   display_wayland->shm =
	wl_registry_bind(display_wayland->wl_registry, id, &wl_shm_interface, 1);

    /* SHM interface is prerequisite */
    _gdk_wayland_display_load_cursor_theme(display_wayland);
  } else if (strcmp(interface, "xdg_shell") == 0) {
    display_wayland->xdg_shell =
      wl_registry_bind(display_wayland->wl_registry, id, &xdg_shell_interface, 1);
    xdg_shell_use_unstable_version(display_wayland->xdg_shell, XDG_SHELL_VERSION_CURRENT);
    xdg_shell_add_listener(display_wayland->xdg_shell, &xdg_shell_listener, display_wayland);
  } else if (strcmp(interface, "gtk_shell") == 0) {
    display_wayland->gtk_shell =
      wl_registry_bind(display_wayland->wl_registry, id, &gtk_shell_interface, 1);
    _gdk_wayland_screen_set_has_gtk_shell (display_wayland->screen);
  } else if (strcmp(interface, "wl_output") == 0) {
    output =
      wl_registry_bind(display_wayland->wl_registry, id, &wl_output_interface, MIN (version, 2));
    _gdk_wayland_screen_add_output(display_wayland->screen, id, output, MIN (version, 2));
  } else if (strcmp(interface, "wl_seat") == 0) {
    seat = wl_registry_bind(display_wayland->wl_registry, id, &wl_seat_interface, 4);
    _gdk_wayland_device_manager_add_seat (gdk_display->device_manager, id, seat);
  } else if (strcmp(interface, "wl_data_device_manager") == 0) {
      display_wayland->data_device_manager =
        wl_registry_bind(display_wayland->wl_registry, id,
					&wl_data_device_manager_interface, 1);
  } else if (strcmp (interface, "wl_subcompositor") == 0) {
    display_wayland->subcompositor =
      wl_registry_bind (display_wayland->wl_registry, id,
                        &wl_subcompositor_interface, 1);
  }
}
Example #2
0
static void
gdk_registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
					const char *interface, uint32_t version)
{
  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 =
      wl_registry_bind(display_wayland->wl_registry, id, &wl_compositor_interface, MIN (version, 3));
    display_wayland->compositor_version = MIN (version, 3);
  } else if (strcmp(interface, "wl_shm") == 0) {
   display_wayland->shm =
	wl_registry_bind(display_wayland->wl_registry, id, &wl_shm_interface, 1);

    /* SHM interface is prerequisite */
    _gdk_wayland_display_load_cursor_theme(display_wayland);
  } else if (strcmp(interface, "wl_shell") == 0) {
    display_wayland->shell =
	wl_registry_bind(display_wayland->wl_registry, id, &wl_shell_interface, 1);
  } else if (strcmp(interface, "wl_output") == 0) {
    output =
      wl_registry_bind(display_wayland->wl_registry, id, &wl_output_interface, MIN (version, 2));
    _gdk_wayland_screen_add_output(display_wayland->screen, id, output, MIN (version, 2));
    /* We need another roundtrip to receive the modes and geometry
     * events for the output, which gives us the physical properties
     * and available modes on the output. */
    wait_for_roundtrip(display_wayland);
  } 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_seat (gdk_display->device_manager, id, seat);
    /* We need another roundtrip to receive the wl_seat capabilities
     * event which informs us of available input devices on this
     * seat. */
    wait_for_roundtrip(display_wayland);
  } else if (strcmp(interface, "wl_data_device_manager") == 0) {
      display_wayland->data_device_manager =
        wl_registry_bind(display_wayland->wl_registry, id,
					&wl_data_device_manager_interface, 1);
  }
}
Example #3
0
static void
load_cursor_theme_closure_run (GdkWaylandDisplay *display_wayland,
                               OnHasGlobalsClosure *closure)
{
  _gdk_wayland_display_load_cursor_theme (display_wayland);
}