commit 0681269771c424d34670a796d6cd47f43be8cea4
Author: Akarshan Biswas <akarshanbiswas(a)fedoraproject.org>
Date: Wed May 8 14:57:53 2019 +0530
Add a patch from upstream to Fix window flash for some WMs; remove rasterization flag
from wrapper due to graphic problems on some GPUs
chromium-vaapi.sh | 1 -
chromium-vaapi.spec | 4 +++
fixwindowflashm74.patch | 95 +++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 99 insertions(+), 1 deletion(-)
---
diff --git a/chromium-vaapi.sh b/chromium-vaapi.sh
index 12770d7..d01dba8 100644
--- a/chromium-vaapi.sh
+++ b/chromium-vaapi.sh
@@ -58,7 +58,6 @@ CHROMIUM_DISTRO_FLAGS+=" --enable-plugins \
--enable-user-scripts \
--enable-features=WebRTCPipeWireCapturer \
--enable-printing \
- --enable-gpu-rasterization \
--enable-sync"
exec -a "$0" "@@CHROMIUMDIR@@/$(basename "$0" | sed
's/\.sh$//')" $CHROMIUM_DISTRO_FLAGS "$@"
diff --git a/chromium-vaapi.spec b/chromium-vaapi.spec
index 1005317..a807c6e 100644
--- a/chromium-vaapi.spec
+++ b/chromium-vaapi.spec
@@ -204,6 +204,9 @@ Patch54: brand.patch
Patch65: chromium-73.0.3683.75-pipewire-cstring-fix.patch
# Update Linux Seccomp syscall restrictions to EPERM posix_spawn/vfork
Patch66: chromium-glibc-2.29.patch
+# Fix some chromium regressions against certain type of window compositors
+# Patch status: backported from
https://chromium-review.googlesource.com/c/chromium/src/+/1597388
+Patch67: fixwindowflashm74.patch
%description
chromium-vaapi is an open-source web browser, powered by WebKit (Blink)
@@ -225,6 +228,7 @@ chromium-vaapi is an open-source web browser, powered by WebKit
(Blink)
%patch65 -p1 -b .pipewire
%endif
%patch66 -p1 -b .glibc
+%patch67 -p1 -b .fwfm74
%if 0%{?fedora} >= 30
# Add a workaround for a race condition in clang-llvm8+ compiler
diff --git a/fixwindowflashm74.patch b/fixwindowflashm74.patch
new file mode 100644
index 0000000..42076de
--- /dev/null
+++ b/fixwindowflashm74.patch
@@ -0,0 +1,95 @@
+From 90e226ba50c98b5e60f74f9dce998b17117f9051 Mon Sep 17 00:00:00 2001
+From: Peng Huang <penghuang(a)chromium.org>
+Date: Tue, 07 May 2019 13:16:21 +0000
+Subject: [PATCH] Fix window flash for some WMs
+
+Bug: 956061
+Change-Id: I0d8d196395e70006a8fdc770f1e4a5ba6f93dd57
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1597388
+Commit-Queue: Peng Huang <penghuang(a)chromium.org>
+Reviewed-by: Antoine Labour <piman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#657215}
+---
+
+diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn
+index 50df0e4..1753dd48 100644
+--- a/ui/gl/BUILD.gn
++++ b/ui/gl/BUILD.gn
+@@ -274,7 +274,10 @@
+ "//build/config/linux:xext",
+ ]
+
+- deps += [ "//ui/gfx/x" ]
++ deps += [
++ "//ui/base/x",
++ "//ui/gfx/x",
++ ]
+ }
+ if (is_win) {
+ sources += [
+diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc
+index f4c13be..777bf76 100644
+--- a/ui/gl/gl_surface_glx.cc
++++ b/ui/gl/gl_surface_glx.cc
+@@ -21,6 +21,7 @@
+ #include "base/time/time.h"
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
++#include "ui/base/x/x11_util.h"
+ #include "ui/events/platform/platform_event_source.h"
+ #include "ui/gfx/x/x11.h"
+ #include "ui/gfx/x/x11_connection.h"
+@@ -431,7 +432,9 @@
+ }
+
+ const XVisualInfo& visual_info =
+- gl::GLVisualPickerGLX::GetInstance()->rgba_visual();
++ ui::IsCompositingManagerPresent()
++ ? gl::GLVisualPickerGLX::GetInstance()->rgba_visual()
++ : gl::GLVisualPickerGLX::GetInstance()->system_visual();
+ g_visual = visual_info.visual;
+ g_depth = visual_info.depth;
+ g_colormap =
+@@ -581,18 +584,30 @@
+ }
+ size_ = gfx::Size(attributes.width, attributes.height);
+
+- XSetWindowAttributes swa;
+- memset(&swa, 0, sizeof(swa));
+- swa.background_pixmap = 0;
+- swa.bit_gravity = NorthWestGravity;
+- swa.colormap = g_colormap;
+- swa.background_pixel = 0;
+- swa.border_pixel = 0;
+- window_ = XCreateWindow(
+- gfx::GetXDisplay(), parent_window_, 0 /* x */, 0 /* y */, size_.width(),
+- size_.height(), 0 /* border_width */, g_depth, InputOutput, g_visual,
+- CWBackPixmap | CWBitGravity | CWColormap | CWBackPixel | CWBorderPixel,
+- &swa);
++ XSetWindowAttributes swa = {
++ .background_pixmap = 0,
++ .bit_gravity = NorthWestGravity,
++ .colormap = g_colormap,
++ .background_pixel = 0, // ARGB(0,0,0,0) for compositing WM
++ .border_pixel = 0,
++ };
++ auto value_mask = CWBackPixmap | CWBitGravity | CWColormap | CWBorderPixel;
++ if (ui::IsCompositingManagerPresent() &&
++ XVisualIDFromVisual(attributes.visual) == XVisualIDFromVisual(g_visual)) {
++ // When parent and child are using the same visual, the back buffer will be
++ // shared between parent and child. If WM compositing is enabled, we set
++ // child's background pixel to ARGB(0,0,0,0), so ARGB(0,0,0,0) will be
++ // filled to the shared buffer, when the child window is mapped. It can
++ // avoid an annoying flash when the child window is mapped below.
++ // If WM compositing is disabled, we don't set the background pixel, so
++ // nothing will be draw when the child window is mapped.
++ value_mask |= CWBackPixel;
++ }
++
++ window_ =
++ XCreateWindow(gfx::GetXDisplay(), parent_window_, 0 /* x */, 0 /* y */,
++ size_.width(), size_.height(), 0 /* border_width */,
++ g_depth, InputOutput, g_visual, value_mask, &swa);
+ if (!window_) {
+ LOG(ERROR) << "XCreateWindow failed";
+ return false;