diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | 0001-x11-Avoid-setting-has_pointer_focus-if-a-EWMH-compli.patch | 45 | ||||
-rw-r--r-- | fix-leak.patch | 159 | ||||
-rw-r--r-- | gtk3.spec | 14 | ||||
-rw-r--r-- | sources | 2 |
5 files changed, 7 insertions, 214 deletions
@@ -129,3 +129,4 @@ gtk+-2.90.5.tar.bz2 /gtk+-3.19.6.tar.xz /gtk+-3.19.7.tar.xz /gtk+-3.19.8.tar.xz +/gtk+-3.19.9.tar.xz diff --git a/0001-x11-Avoid-setting-has_pointer_focus-if-a-EWMH-compli.patch b/0001-x11-Avoid-setting-has_pointer_focus-if-a-EWMH-compli.patch deleted file mode 100644 index ac7a7e2..0000000 --- a/0001-x11-Avoid-setting-has_pointer_focus-if-a-EWMH-compli.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 5b395e7bb44651f57246e9dcc78d6e1bd373f6a6 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho <carlosg@gnome.org> -Date: Fri, 13 Jun 2014 14:38:03 +0200 -Subject: [PATCH] x11: Avoid setting has_pointer_focus if a EWMH compliant WM - is present - -This is mostly useful to have focus behave sanely on lack of WM, so avoid -any check there if we're positive there is a WM handling focus. - -https://bugzilla.gnome.org/show_bug.cgi?id=677329 ---- - gdk/x11/gdkdevicemanager-core-x11.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/gdk/x11/gdkdevicemanager-core-x11.c b/gdk/x11/gdkdevicemanager-core-x11.c -index 8d6848869e0d..c4aac3f4dee9 100644 ---- a/gdk/x11/gdkdevicemanager-core-x11.c -+++ b/gdk/x11/gdkdevicemanager-core-x11.c -@@ -820,6 +820,7 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window, - int mode) - { - GdkToplevelX11 *toplevel; -+ GdkX11Screen *x11_screen; - gboolean had_focus; - - g_return_if_fail (GDK_IS_WINDOW (window)); -@@ -880,11 +881,14 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window, - toplevel->has_focus = (focus_in) ? TRUE : FALSE; - break; - case NotifyPointer: -+ x11_screen = GDK_X11_SCREEN (gdk_window_get_screen (window)); -+ - /* The X server sends NotifyPointer/NotifyGrab, - * but the pointer focus is ignored while a - * grab is in effect - */ -- if (mode != NotifyGrab && -+ if (!x11_screen->wmspec_check_window && -+ mode != NotifyGrab && - #ifdef XINPUT_2 - mode != XINotifyPassiveGrab && - mode != XINotifyPassiveUngrab && --- -2.5.0 - diff --git a/fix-leak.patch b/fix-leak.patch deleted file mode 100644 index be499df..0000000 --- a/fix-leak.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 4bb5bc005f8ffea31fa104a7238b855c7c20cba6 Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Fri, 29 Jan 2016 11:19:03 -0500 -Subject: [PATCH] wayland: Don't call set_busy twice on the same surface - -If the compositor is using a shared memory buffer allocated by -a client, then it's the client's responsibility to refrain from -destroying the buffer until the compositor releases it. - -This is accomplished by taking a reference to the cairo surface -assocatiated with the buffer after a frame, and dropping the -reference when the compositor releases the buffer. - -In some cases though, the compositor doesn't release the buffer -until a new buffer is set, so if we have staged drawing before -the frame completes we can end up taking multiple references to -the buffer and keeping it alive after it's released. - -This commit solves the problem by ensuring we only call -_gdk_wayland_shm_surface_set_busy if isn't already busy. - -https://bugzilla.gnome.org/show_bug.cgi?id=761312 ---- - gdk/wayland/gdkdisplay-wayland.c | 3 +++ - gdk/wayland/gdkwindow-wayland.c | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c -index f200800..a589756 100644 ---- a/gdk/wayland/gdkdisplay-wayland.c -+++ b/gdk/wayland/gdkdisplay-wayland.c -@@ -1020,54 +1020,57 @@ _gdk_wayland_display_create_shm_surface (GdkWaylandDisplay *display, - width*scale, height*scale, - stride, WL_SHM_FORMAT_ARGB8888); - wl_buffer_add_listener (data->buffer, &buffer_listener, surface); - - cairo_surface_set_user_data (surface, &gdk_wayland_cairo_key, - data, gdk_wayland_cairo_surface_destroy); - - cairo_surface_set_device_scale (surface, scale, scale); - - status = cairo_surface_status (surface); - if (status != CAIRO_STATUS_SUCCESS) - { - g_critical (G_STRLOC ": Unable to create Cairo image surface: %s", - cairo_status_to_string (status)); - } - - return surface; - } - - struct wl_buffer * - _gdk_wayland_shm_surface_get_wl_buffer (cairo_surface_t *surface) - { - GdkWaylandCairoSurfaceData *data = cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key); - return data->buffer; - } - - void - _gdk_wayland_shm_surface_set_busy (cairo_surface_t *surface) - { - GdkWaylandCairoSurfaceData *data = cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key); -+ -+ g_assert (!data->busy); -+ - data->busy = TRUE; - cairo_surface_reference (surface); - } - - gboolean - _gdk_wayland_shm_surface_get_busy (cairo_surface_t *surface) - { - GdkWaylandCairoSurfaceData *data = cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key); - return data->busy; - } - - gboolean - _gdk_wayland_is_shm_surface (cairo_surface_t *surface) - { - return cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key) != NULL; - } - - GdkWaylandSelection * - gdk_wayland_display_get_selection (GdkDisplay *display) - { - GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (display); - - return wayland_display->selection; - } -diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c -index 8e74ef4..6dac820 100644 ---- a/gdk/wayland/gdkwindow-wayland.c -+++ b/gdk/wayland/gdkwindow-wayland.c -@@ -420,61 +420,61 @@ on_frame_clock_before_paint (GdkFrameClock *clock, - timings->predicted_presentation_time = presentation_time + refresh_interval; - } - else - { - /* As above, but we don't actually know the phase of the vblank, - * so just assume that we're half way through a refresh cycle. - */ - timings->predicted_presentation_time = timings->frame_time + refresh_interval / 2 + refresh_interval; - } - } - - static void - on_frame_clock_after_paint (GdkFrameClock *clock, - GdkWindow *window) - { - GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - struct wl_callback *callback; - - if (!impl->pending_commit) - return; - - impl->pending_commit = FALSE; - impl->pending_frame_counter = gdk_frame_clock_get_frame_counter (clock); - impl->awaiting_frame = TRUE; - - callback = wl_surface_frame (impl->surface); - wl_callback_add_listener (callback, &frame_listener, window); - _gdk_frame_clock_freeze (clock); - - wl_surface_commit (impl->surface); -- if (_gdk_wayland_is_shm_surface (impl->cairo_surface)) -+ if (_gdk_wayland_is_shm_surface (impl->cairo_surface) && !_gdk_wayland_shm_surface_get_busy (impl->cairo_surface)) - _gdk_wayland_shm_surface_set_busy (impl->cairo_surface); - - g_signal_emit (impl, signals[COMMITTED], 0); - } - - static void - window_update_scale (GdkWindow *window) - { - GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - GdkWaylandDisplay *wayland_display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); - guint32 scale; - GSList *l; - - if (wayland_display->compositor_version < WL_SURFACE_HAS_BUFFER_SCALE) - { - /* We can't set the scale on this surface */ - return; - } - - scale = 1; - for (l = impl->outputs; l != NULL; l = l->next) - { - guint32 output_scale = - _gdk_wayland_screen_get_output_scale (wayland_display->screen, l->data); - scale = MAX (scale, output_scale); - } - - /* Notify app that scale changed */ - gdk_wayland_window_configure (window, window->width, window->height, scale); - } --- -2.7.0 - @@ -17,19 +17,14 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk3 -Version: 3.19.8 -Release: 4%{?dist} +Version: 3.19.9 +Release: 1%{?dist} License: LGPLv2+ Group: System Environment/Libraries URL: http://www.gtk.org #VCS: git:git://git.gnome.org/gtk+ Source: http://download.gnome.org/sources/gtk+/3.19/gtk+-%{version}.tar.xz -Patch0: fix-leak.patch - -# https://bugzilla.gnome.org/show_bug.cgi?id=677329 -# https://bugzilla.gnome.org/show_bug.cgi?id=725342 -Patch1: 0001-x11-Avoid-setting-has_pointer_focus-if-a-EWMH-compli.patch BuildRequires: gnome-common autoconf automake intltool gettext BuildRequires: pkgconfig(atk) >= %{atk_version} @@ -172,8 +167,6 @@ the functionality of the installed %{name} package. %prep %setup -q -n gtk+-%{version} -%patch0 -p1 -b .fix-leak -%patch1 -p1 -b .focus-in-out %build @@ -347,6 +340,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache %{_datadir}/installed-tests %changelog +* Wed Feb 17 2016 Richard Hughes <rhughes@redhat.com> - 3.19.9-1 +- Update to 3.19.9 + * Mon Feb 08 2016 Debarshi Ray <rishi@fedoraproject.org> - - 3.19.8-4 - Backport fix for missing focus-in/out events (GNOME #677329) @@ -1 +1 @@ -6dae5303d2252d8463937ff9e36faf8f gtk+-3.19.8.tar.xz +0f0b388b6d288566307a3b7385f15ab6 gtk+-3.19.9.tar.xz |