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 | ||||
| %global ver 18.3.0-rc5 | ||||
| Version:        %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} | ||||
| Release:        1%{?dist} | ||||
| Release:        2%{?dist} | ||||
| License:        MIT | ||||
| URL:            http://www.mesa3d.org | ||||
| 
 | ||||
| @ -64,6 +64,10 @@ Patch3:         0003-evergreen-big-endian.patch | ||||
| # https://bugzilla.redhat.com/show_bug.cgi?id=1560481 | ||||
| #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-c++ | ||||
| BuildRequires:  automake | ||||
| @ -625,6 +629,9 @@ popd | ||||
| %{_includedir}/vulkan/ | ||||
| 
 | ||||
| %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 | ||||
| - Update to 18.3.0~rc5 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user