Backport patch to fix totem

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
This commit is contained in:
Igor Gnatenko 2018-12-04 12:17:16 +01:00
parent fa32bd11e2
commit b133108f50
No known key found for this signature in database
GPG Key ID: 695714BD1BBC5F4C
2 changed files with 69 additions and 1 deletions

View File

@ -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

View File

@ -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