Update to 3.19.9
This commit is contained in:
		
							parent
							
								
									5af8c4a1bd
								
							
						
					
					
						commit
						54aabc5a1e
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -129,3 +129,4 @@ gtk+-2.90.5.tar.bz2
 | 
				
			|||||||
/gtk+-3.19.6.tar.xz
 | 
					/gtk+-3.19.6.tar.xz
 | 
				
			||||||
/gtk+-3.19.7.tar.xz
 | 
					/gtk+-3.19.7.tar.xz
 | 
				
			||||||
/gtk+-3.19.8.tar.xz
 | 
					/gtk+-3.19.8.tar.xz
 | 
				
			||||||
 | 
					/gtk+-3.19.9.tar.xz
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										159
									
								
								fix-leak.patch
									
									
									
									
									
								
							
							
						
						
									
										159
									
								
								fix-leak.patch
									
									
									
									
									
								
							@ -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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										14
									
								
								gtk3.spec
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								gtk3.spec
									
									
									
									
									
								
							@ -17,19 +17,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 | 
					Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 | 
				
			||||||
Name: gtk3
 | 
					Name: gtk3
 | 
				
			||||||
Version: 3.19.8
 | 
					Version: 3.19.9
 | 
				
			||||||
Release: 4%{?dist}
 | 
					Release: 1%{?dist}
 | 
				
			||||||
License: LGPLv2+
 | 
					License: LGPLv2+
 | 
				
			||||||
Group: System Environment/Libraries
 | 
					Group: System Environment/Libraries
 | 
				
			||||||
URL: http://www.gtk.org
 | 
					URL: http://www.gtk.org
 | 
				
			||||||
#VCS: git:git://git.gnome.org/gtk+
 | 
					#VCS: git:git://git.gnome.org/gtk+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Source: http://download.gnome.org/sources/gtk+/3.19/gtk+-%{version}.tar.xz
 | 
					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: gnome-common autoconf automake intltool gettext
 | 
				
			||||||
BuildRequires: pkgconfig(atk) >= %{atk_version}
 | 
					BuildRequires: pkgconfig(atk) >= %{atk_version}
 | 
				
			||||||
@ -172,8 +167,6 @@ the functionality of the installed %{name} package.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
%prep
 | 
					%prep
 | 
				
			||||||
%setup -q -n gtk+-%{version}
 | 
					%setup -q -n gtk+-%{version}
 | 
				
			||||||
%patch0 -p1 -b .fix-leak
 | 
					 | 
				
			||||||
%patch1 -p1 -b .focus-in-out
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
%build
 | 
					%build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -347,6 +340,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache
 | 
				
			|||||||
%{_datadir}/installed-tests
 | 
					%{_datadir}/installed-tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%changelog
 | 
					%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
 | 
					* Mon Feb 08 2016 Debarshi Ray <rishi@fedoraproject.org> - - 3.19.8-4
 | 
				
			||||||
- Backport fix for missing focus-in/out events (GNOME #677329)
 | 
					- Backport fix for missing focus-in/out events (GNOME #677329)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user