diff options
Diffstat (limited to 'chromium-fix-window-flash-for-some-WMs.patch')
-rw-r--r-- | chromium-fix-window-flash-for-some-WMs.patch | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/chromium-fix-window-flash-for-some-WMs.patch b/chromium-fix-window-flash-for-some-WMs.patch deleted file mode 100644 index f977cbf38cc4..000000000000 --- a/chromium-fix-window-flash-for-some-WMs.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 90e226ba50c98b5e60f74f9dce998b17117f9051 Mon Sep 17 00:00:00 2001 -From: Peng Huang <penghuang@chromium.org> -Date: Tue, 7 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@chromium.org> -Reviewed-by: Antoine Labour <piman@chromium.org> -Cr-Commit-Position: refs/heads/master@{#657215} ---- - ui/gl/BUILD.gn | 5 ++++- - ui/gl/gl_surface_glx.cc | 41 ++++++++++++++++++++++++++++------------- - 2 files changed, 32 insertions(+), 14 deletions(-) - -diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn -index 50df0e4085..1753dd480b 100644 ---- a/ui/gl/BUILD.gn -+++ b/ui/gl/BUILD.gn -@@ -274,7 +274,10 @@ jumbo_component("gl") { - "//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 f4c13bed18..777bf767cb 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 @@ bool GLSurfaceGLX::InitializeOneOff() { - } - - 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 @@ bool NativeViewGLSurfaceGLX::Initialize(GLSurfaceFormat format) { - } - 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; |