diff -Nru gtk+3.0-3.6.2/debian/changelog gtk+3.0-3.6.2/debian/changelog --- gtk+3.0-3.6.2/debian/changelog 2012-11-12 19:52:40.000000000 +0000 +++ gtk+3.0-3.6.2/debian/changelog 2012-12-17 12:16:19.000000000 +0000 @@ -1,3 +1,13 @@ +gtk+3.0 (3.6.2-0ubuntu2) UNRELEASED; urgency=low + + [ Darxus ] + * Enable Wayland backend (LP: #954352) + + [ Iain Lane ] + * Backport some upstream commits to support the wayland 1.0 API in raring. + + -- Darxus Mon, 24 Sep 2012 12:48:14 -0400 + gtk+3.0 (3.6.2-0ubuntu1) raring; urgency=low * New upstream version: diff -Nru gtk+3.0-3.6.2/debian/control gtk+3.0-3.6.2/debian/control --- gtk+3.0-3.6.2/debian/control 2012-11-12 19:52:43.000000000 +0000 +++ gtk+3.0-3.6.2/debian/control 2013-01-09 11:40:17.000000000 +0000 @@ -37,7 +37,9 @@ libcolord-dev (>= 0.1.9), gobject-introspection (>= 1.32.0), libgirepository1.0-dev (>= 1.32.0), - xvfb + xvfb, + libwayland-dev (>= 1.0.0), + libxkbcommon-dev Build-Depends-Indep: docbook-xml, docbook-utils, libglib2.0-doc, diff -Nru gtk+3.0-3.6.2/debian/control.in gtk+3.0-3.6.2/debian/control.in --- gtk+3.0-3.6.2/debian/control.in 2012-11-12 19:52:43.000000000 +0000 +++ gtk+3.0-3.6.2/debian/control.in 2013-01-09 11:40:17.000000000 +0000 @@ -37,7 +37,9 @@ libcolord-dev (>= 0.1.9), gobject-introspection (>= 1.32.0), libgirepository1.0-dev (>= 1.32.0), - xvfb + xvfb, + libwayland-dev (>= 1.0.0), + libxkbcommon-dev Build-Depends-Indep: docbook-xml, docbook-utils, libglib2.0-doc, diff -Nru gtk+3.0-3.6.2/debian/libgtk-3-0.symbols gtk+3.0-3.6.2/debian/libgtk-3-0.symbols --- gtk+3.0-3.6.2/debian/libgtk-3-0.symbols 2012-11-12 19:52:40.000000000 +0000 +++ gtk+3.0-3.6.2/debian/libgtk-3-0.symbols 2013-01-09 11:40:14.000000000 +0000 @@ -43,6 +43,7 @@ gdk_cursor_ref@Base 3.0.0 gdk_cursor_type_get_type@Base 3.0.0 gdk_cursor_unref@Base 3.0.0 + gdk_device_core_get_type@Base 3.6.2-0ubuntu2~ gdk_device_free_history@Base 3.0.0 gdk_device_get_associated_device@Base 3.0.0 gdk_device_get_axis@Base 3.0.0 @@ -66,6 +67,7 @@ gdk_device_grab_info_libgtk_only@Base 3.0.0 gdk_device_list_axes@Base 3.0.0 gdk_device_list_slave_devices@Base 3.0.0 + gdk_device_manager_core_get_type@Base 3.6.2-0ubuntu2~ gdk_device_manager_get_client_pointer@Base 3.0.0 gdk_device_manager_get_display@Base 3.0.0 gdk_device_manager_get_type@Base 3.0.0 @@ -349,6 +351,15 @@ gdk_visual_get_type@Base 3.0.0 gdk_visual_get_visual_type@Base 3.0.0 gdk_visual_type_get_type@Base 3.0.0 + gdk_wayland_app_launch_context_get_type@Base 3.6.2-0ubuntu2~ + gdk_wayland_device_clear_selection_content_libgtk_only@Base 3.6.2-0ubuntu2~ + gdk_wayland_device_get_selection_type_atoms_libgtk_only@Base 3.6.2-0ubuntu2~ + gdk_wayland_device_offer_selection_content_libgtk_only@Base 3.6.2-0ubuntu2~ + gdk_wayland_device_request_selection_content_libgtk_only@Base 3.6.2-0ubuntu2~ + gdk_wayland_display_broadcast_startup_message@Base 3.6.2-0ubuntu2~ + gdk_wayland_display_manager_get_type@Base 3.6.2-0ubuntu2~ + gdk_wayland_drag_context_get_type@Base 3.6.2-0ubuntu2~ + gdk_wayland_window_set_modal_hint@Base 3.6.2-0ubuntu2~ gdk_window_add_filter@Base 3.0.0 gdk_window_at_pointer@Base 3.0.0 gdk_window_attributes_type_get_type@Base 3.0.0 diff -Nru gtk+3.0-3.6.2/debian/patches/102_add_wayland_symbols.patch gtk+3.0-3.6.2/debian/patches/102_add_wayland_symbols.patch --- gtk+3.0-3.6.2/debian/patches/102_add_wayland_symbols.patch 1970-01-01 01:00:00.000000000 +0100 +++ gtk+3.0-3.6.2/debian/patches/102_add_wayland_symbols.patch 2012-12-17 12:38:24.000000000 +0000 @@ -0,0 +1,34 @@ +--- gtk+3.0-3.5.16.orig/gdk/gdk.symbols 2012-08-16 10:49:17.000000000 -0400 ++++ gtk+3.0-3.5.16/gdk/gdk.symbols 2012-09-06 18:39:54.102504997 -0400 +@@ -44,6 +44,7 @@ + gdk_cursor_ref + gdk_cursor_type_get_type + gdk_cursor_unref ++gdk_device_core_get_type + gdk_device_free_history + gdk_device_get_associated_device + gdk_device_get_axis +@@ -67,6 +68,7 @@ + gdk_device_grab_info_libgtk_only + gdk_device_list_axes + gdk_device_list_slave_devices ++gdk_device_manager_core_get_type + gdk_device_manager_get_client_pointer + gdk_device_manager_get_display + gdk_device_manager_get_type +@@ -350,6 +352,15 @@ + gdk_visual_get_type + gdk_visual_get_visual_type + gdk_visual_type_get_type ++gdk_wayland_app_launch_context_get_type ++gdk_wayland_device_clear_selection_content_libgtk_only ++gdk_wayland_device_get_selection_type_atoms_libgtk_only ++gdk_wayland_device_offer_selection_content_libgtk_only ++gdk_wayland_device_request_selection_content_libgtk_only ++gdk_wayland_display_broadcast_startup_message ++gdk_wayland_display_manager_get_type ++gdk_wayland_drag_context_get_type ++gdk_wayland_window_set_modal_hint + #ifdef GDK_WINDOWING_WIN32 + gdk_win32_handle_table_lookup + gdk_win32_icon_to_pixbuf_libgtk_only diff -Nru gtk+3.0-3.6.2/debian/patches/series gtk+3.0-3.6.2/debian/patches/series --- gtk+3.0-3.6.2/debian/patches/series 2012-11-12 19:52:40.000000000 +0000 +++ gtk+3.0-3.6.2/debian/patches/series 2012-12-17 12:38:50.000000000 +0000 @@ -9,7 +9,9 @@ 073_treeview_almost_fixed.patch 075_expose_gdkwidget_for_gtkrange.patch 099_eventbox_scroll_mask.patch +102_add_wayland_symbols.patch git_gtkcellrenderer_grabbing_modifier.patch ubuntu_gtk_custom_menu_items.patch print-dialog-show-options-of-remote-dnssd-printers.patch revert_git_a11y_stopped.patch +wayland-1.0-api.patch diff -Nru gtk+3.0-3.6.2/debian/patches/wayland-1.0-api.patch gtk+3.0-3.6.2/debian/patches/wayland-1.0-api.patch --- gtk+3.0-3.6.2/debian/patches/wayland-1.0-api.patch 1970-01-01 01:00:00.000000000 +0100 +++ gtk+3.0-3.6.2/debian/patches/wayland-1.0-api.patch 2012-12-17 12:23:22.000000000 +0000 @@ -0,0 +1,237 @@ +Description: Backport upstream commits to support new wayland API +Origin: upstream, commit:commitca0662dba4456233360d01455b8757edfa6c9bff commit:e5b88f1bdd570e9f411a8be41199adceb950c61c +Forwarded: not-needed + +Index: b/gdk/wayland/gdkdevice-wayland.c +=================================================================== +--- a/gdk/wayland/gdkdevice-wayland.c ++++ b/gdk/wayland/gdkdevice-wayland.c +@@ -183,6 +183,7 @@ + x, y); + wl_surface_attach (wd->pointer_surface, buffer, 0, 0); + wl_surface_damage (wd->pointer_surface, 0, 0, w, h); ++ wl_surface_commit(wd->pointer_surface); + + g_object_unref (cursor); + } +Index: b/gdk/wayland/gdkdisplay-wayland.c +=================================================================== +--- a/gdk/wayland/gdkdisplay-wayland.c ++++ b/gdk/wayland/gdkdisplay-wayland.c +@@ -96,7 +96,8 @@ + output_handle_geometry(void *data, + struct wl_output *wl_output, + int x, int y, int physical_width, int physical_height, +- int subpixel, const char *make, const char *model) ++ int subpixel, const char *make, const char *model, ++ int32_t transform) + { + /* + g_signal_emit_by_name (screen, "monitors-changed"); +@@ -119,8 +120,8 @@ + }; + + static void +-gdk_display_handle_global(struct wl_display *display, uint32_t id, +- const char *interface, uint32_t version, void *data) ++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); +@@ -128,27 +129,29 @@ + + if (strcmp(interface, "wl_compositor") == 0) { + display_wayland->compositor = +- wl_display_bind(display, id, &wl_compositor_interface); ++ wl_registry_bind(display_wayland->wl_registry, id, &wl_compositor_interface, 1); + } else if (strcmp(interface, "wl_shm") == 0) { +- display_wayland->shm = wl_display_bind(display, id, &wl_shm_interface); ++ 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_display_bind(display, id, &wl_shell_interface); ++ 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 = +- wl_display_bind(display, id, &wl_output_interface); ++ wl_registry_bind(display_wayland->wl_registry, id, &wl_output_interface, 1); + wl_output_add_listener(display_wayland->output, + &output_listener, display_wayland); + } else if (strcmp(interface, "wl_seat") == 0) { +- seat = wl_display_bind (display, id, &wl_seat_interface); ++ seat = wl_registry_bind(display_wayland->wl_registry, id, &wl_seat_interface, 1); + _gdk_wayland_device_manager_add_device (gdk_display->device_manager, + seat); + } else if (strcmp(interface, "wl_data_device_manager") == 0) { + display_wayland->data_device_manager = +- wl_display_bind(display, id, +- &wl_data_device_manager_interface); ++ wl_registry_bind(display_wayland->wl_registry, id, ++ &wl_data_device_manager_interface, 1); + } + } + +@@ -210,6 +213,10 @@ + } + #endif + ++static const struct wl_registry_listener registry_listener = { ++ gdk_registry_handle_global ++}; ++ + GdkDisplay * + _gdk_wayland_display_open (const gchar *display_name) + { +@@ -231,14 +238,13 @@ + display->device_manager = _gdk_wayland_device_manager_new (display); + + /* Set up listener so we'll catch all events. */ +- wl_display_add_global_listener(display_wayland->wl_display, +- gdk_display_handle_global, display_wayland); ++ display_wayland->wl_registry = wl_display_get_registry(display_wayland->wl_display); ++ wl_registry_add_listener(display_wayland->wl_registry, ®istry_listener, display_wayland); + + #ifdef GDK_WAYLAND_USE_EGL + gdk_display_init_egl(display); + #else +- wl_display_iterate(wl_display, WL_DISPLAY_READABLE); +- wl_display_roundtrip(wl_display); ++ wl_display_dispatch(display_wayland->wl_display); + #endif + + display_wayland->event_source = +@@ -351,8 +357,7 @@ + g_return_if_fail (GDK_IS_DISPLAY (display)); + + if (!display->closed) +- _gdk_wayland_display_flush (display, +- GDK_WAYLAND_DISPLAY (display)->event_source); ++ wl_display_flush(GDK_WAYLAND_DISPLAY (display)->wl_display);; + } + + static gboolean +Index: b/gdk/wayland/gdkdisplay-wayland.h +=================================================================== +--- a/gdk/wayland/gdkdisplay-wayland.h ++++ b/gdk/wayland/gdkdisplay-wayland.h +@@ -76,6 +76,7 @@ + + /* Wayland fields below */ + struct wl_display *wl_display; ++ struct wl_registry *wl_registry; + struct wl_compositor *compositor; + struct wl_shm *shm; + struct wl_shell *shell; +Index: b/gdk/wayland/gdkeventsource.c +=================================================================== +--- a/gdk/wayland/gdkeventsource.c ++++ b/gdk/wayland/gdkeventsource.c +@@ -44,8 +44,7 @@ + if (_gdk_event_queue_find_first (source->display) != NULL) + return TRUE; + +- while (source->mask & WL_DISPLAY_WRITABLE) +- wl_display_iterate(display->wl_display, WL_DISPLAY_WRITABLE); ++ wl_display_flush(display->wl_display); + + return FALSE; + } +@@ -97,16 +96,6 @@ + gdk_event_source_finalize + }; + +-static int +-gdk_event_source_update(uint32_t mask, void *data) +-{ +- GdkWaylandEventSource *source = data; +- +- source->mask = mask; +- +- return 0; +-} +- + void + _gdk_wayland_display_deliver_event (GdkDisplay *display, GdkEvent *event) + { +@@ -134,8 +123,7 @@ + + display_wayland = GDK_WAYLAND_DISPLAY (display); + wl_source->display = display; +- wl_source->pfd.fd = wl_display_get_fd(display_wayland->wl_display, +- gdk_event_source_update, source); ++ wl_source->pfd.fd = wl_display_get_fd(display_wayland->wl_display); + wl_source->pfd.events = G_IO_IN | G_IO_ERR; + g_source_add_poll(source, &wl_source->pfd); + +@@ -149,16 +137,6 @@ + } + + void +-_gdk_wayland_display_flush (GdkDisplay *display, GSource *source) +-{ +- GdkWaylandEventSource *wayland_source = (GdkWaylandEventSource *) source; +- +- while (wayland_source->mask & WL_DISPLAY_WRITABLE) +- wl_display_iterate(GDK_WAYLAND_DISPLAY (display)->wl_display, +- WL_DISPLAY_WRITABLE); +-} +- +-void + _gdk_wayland_display_queue_events (GdkDisplay *display) + { + GdkWaylandDisplay *display_wayland; +@@ -166,10 +144,9 @@ + + display_wayland = GDK_WAYLAND_DISPLAY (display); + source = (GdkWaylandEventSource *) display_wayland->event_source; +- + if (source->pfd.revents) + { +- wl_display_iterate(display_wayland->wl_display, WL_DISPLAY_READABLE); +- source->pfd.revents = 0; ++ wl_display_dispatch(display_wayland->wl_display); ++ source->pfd.revents = 0; + } + } +Index: b/gdk/wayland/gdkprivate-wayland.h +=================================================================== +--- a/gdk/wayland/gdkprivate-wayland.h ++++ b/gdk/wayland/gdkprivate-wayland.h +@@ -137,7 +137,6 @@ + void _gdk_wayland_display_deliver_event (GdkDisplay *display, GdkEvent *event); + GSource *_gdk_wayland_display_event_source_new (GdkDisplay *display); + void _gdk_wayland_display_queue_events (GdkDisplay *display); +-void _gdk_wayland_display_flush (GdkDisplay *display, GSource *source); + + GdkAppLaunchContext *_gdk_wayland_display_get_app_launch_context (GdkDisplay *display); + +Index: b/gdk/wayland/gdkwindow-wayland.c +=================================================================== +--- a/gdk/wayland/gdkwindow-wayland.c ++++ b/gdk/wayland/gdkwindow-wayland.c +@@ -1563,6 +1563,7 @@ + cairo_region_get_rectangle (region, i, &rect); + wl_surface_damage (impl->surface, + rect.x, rect.y, rect.width, rect.height); ++ wl_surface_commit(impl->surface); + } + + _gdk_window_process_updates_recurse (window, region); +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -407,7 +407,7 @@ + have_gio_unix=yes + GDK_WINDOWING="$GDK_WINDOWING + #define GDK_WINDOWING_WAYLAND" +- WAYLAND_PACKAGES="wayland-client xkbcommon wayland-cursor" ++ WAYLAND_PACKAGES="wayland-client >= 1.0.0 xkbcommon wayland-cursor" + if test "x$enable_wayland_cairo_gl" = "xyes"; then + WAYLAND_PACKAGES="$WAYLAND_PACKAGES wayland-egl egl" + fi diff -Nru gtk+3.0-3.6.2/debian/rules gtk+3.0-3.6.2/debian/rules --- gtk+3.0-3.6.2/debian/rules 2012-11-12 19:52:40.000000000 +0000 +++ gtk+3.0-3.6.2/debian/rules 2012-12-17 11:37:47.000000000 +0000 @@ -54,7 +54,9 @@ DEB_CONFIGURE_EXTRA_FLAGS = \ --libdir=/$(LIBDIR) \ - --enable-test-print-backend + --enable-test-print-backend \ + --enable-wayland-backend \ + --enable-x11-backend DEB_CONFIGURE_FLAGS_shared = \ --enable-gtk-doc \