Backport patch to fix totem
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
This commit is contained in:
		
							parent
							
								
									fa32bd11e2
								
							
						
					
					
						commit
						b133108f50
					
				| @ -0,0 +1,61 @@ | |||||||
|  | From 0f0d7cd2ecf20d0f74df6c6ec7d04bb3b7156c30 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Carlos Garnacho <carlosg@gnome.org> | ||||||
|  | Date: Tue, 20 Nov 2018 18:06:38 +0100 | ||||||
|  | Subject: [PATCH] wayland/egl: Ensure EGL surface is resized on DRI | ||||||
|  |  update_buffers() | ||||||
|  | 
 | ||||||
|  | Fullscreening and unfullscreening a totem window while playing a video | ||||||
|  | sometimes results in the video subsurface not changing size along. This | ||||||
|  | is also reproducible with epiphany. | ||||||
|  | 
 | ||||||
|  | If a surface gets resized while we have an active back buffer for it, the | ||||||
|  | resized dimensions won't get neither immediately applied on the resize | ||||||
|  | callback, nor correctly synchronized on update_buffers(), as the | ||||||
|  | (now stale) surface size and currently attached buffer size still do match. | ||||||
|  | 
 | ||||||
|  | There's actually 2 things to synchronize here, first the surface query | ||||||
|  | size might not be updated yet to the wl_egl_window's (i.e. resize_callback | ||||||
|  | happened while there is a back buffer), and second the wayland buffers | ||||||
|  | would need dropping if new surface size differs with the currently attached | ||||||
|  | buffer. These are done in separate steps now. | ||||||
|  | 
 | ||||||
|  | https://bugzilla.redhat.com/show_bug.cgi?id=1650929 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Carlos Garnacho <carlosg@gnome.org> | ||||||
|  | Tested-by: Bastien Nocera <hadess@hadess.net> | ||||||
|  | ---
 | ||||||
|  |  src/egl/drivers/dri2/platform_wayland.c | 11 +++++++---- | ||||||
|  |  1 file changed, 7 insertions(+), 4 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
 | ||||||
|  | index 34e09d7ec1..474a13316b 100644
 | ||||||
|  | --- a/src/egl/drivers/dri2/platform_wayland.c
 | ||||||
|  | +++ b/src/egl/drivers/dri2/platform_wayland.c
 | ||||||
|  | @@ -597,10 +597,8 @@ update_buffers(struct dri2_egl_surface *dri2_surf)
 | ||||||
|  |     struct dri2_egl_display *dri2_dpy = | ||||||
|  |        dri2_egl_display(dri2_surf->base.Resource.Display); | ||||||
|  |   | ||||||
|  | -   if (dri2_surf->base.Width != dri2_surf->wl_win->attached_width ||
 | ||||||
|  | -       dri2_surf->base.Height != dri2_surf->wl_win->attached_height) {
 | ||||||
|  | -
 | ||||||
|  | -      dri2_wl_release_buffers(dri2_surf);
 | ||||||
|  | +   if (dri2_surf->base.Width != dri2_surf->wl_win->width ||
 | ||||||
|  | +       dri2_surf->base.Height != dri2_surf->wl_win->height) {
 | ||||||
|  |   | ||||||
|  |        dri2_surf->base.Width  = dri2_surf->wl_win->width; | ||||||
|  |        dri2_surf->base.Height = dri2_surf->wl_win->height; | ||||||
|  | @@ -608,6 +606,11 @@ update_buffers(struct dri2_egl_surface *dri2_surf)
 | ||||||
|  |        dri2_surf->dy = dri2_surf->wl_win->dy; | ||||||
|  |     } | ||||||
|  |   | ||||||
|  | +   if (dri2_surf->base.Width != dri2_surf->wl_win->attached_width ||
 | ||||||
|  | +       dri2_surf->base.Height != dri2_surf->wl_win->attached_height) {
 | ||||||
|  | +      dri2_wl_release_buffers(dri2_surf);
 | ||||||
|  | +   }
 | ||||||
|  | +
 | ||||||
|  |     if (get_back_bo(dri2_surf) < 0) { | ||||||
|  |        _eglError(EGL_BAD_ALLOC, "failed to allocate color buffer"); | ||||||
|  |        return -1; | ||||||
|  | -- 
 | ||||||
|  | 2.20.0.rc2 | ||||||
|  | 
 | ||||||
| @ -43,7 +43,7 @@ Name:           mesa | |||||||
| Summary:        Mesa graphics libraries | Summary:        Mesa graphics libraries | ||||||
| %global ver 18.3.0-rc5 | %global ver 18.3.0-rc5 | ||||||
| Version:        %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} | Version:        %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} | ||||||
| Release:        1%{?dist} | Release:        2%{?dist} | ||||||
| License:        MIT | License:        MIT | ||||||
| URL:            http://www.mesa3d.org | URL:            http://www.mesa3d.org | ||||||
| 
 | 
 | ||||||
| @ -64,6 +64,10 @@ Patch3:         0003-evergreen-big-endian.patch | |||||||
| # https://bugzilla.redhat.com/show_bug.cgi?id=1560481 | # https://bugzilla.redhat.com/show_bug.cgi?id=1560481 | ||||||
| #Patch7:         0001-gallium-Disable-rgb10-configs-by-default.patch | #Patch7:         0001-gallium-Disable-rgb10-configs-by-default.patch | ||||||
| 
 | 
 | ||||||
|  | # https://lists.freedesktop.org/archives/mesa-dev/2018-November/210797.html | ||||||
|  | # https://bugzilla.redhat.com/show_bug.cgi?id=1650929 | ||||||
|  | Patch10:        0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch | ||||||
|  | 
 | ||||||
| BuildRequires:  gcc | BuildRequires:  gcc | ||||||
| BuildRequires:  gcc-c++ | BuildRequires:  gcc-c++ | ||||||
| BuildRequires:  automake | BuildRequires:  automake | ||||||
| @ -625,6 +629,9 @@ popd | |||||||
| %{_includedir}/vulkan/ | %{_includedir}/vulkan/ | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Tue Dec 04 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 18.3.0~rc5-2 | ||||||
|  | - Backport patch to fix totem | ||||||
|  | 
 | ||||||
| * Tue Dec  4 2018 Peter Robinson <pbrobinson@fedoraproject.org> 18.3.0~rc5-1 | * Tue Dec  4 2018 Peter Robinson <pbrobinson@fedoraproject.org> 18.3.0~rc5-1 | ||||||
| - Update to 18.3.0~rc5 | - Update to 18.3.0~rc5 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user