svn commit: r502903 - in head/www/chromium: . files

Carlos J. Puga Medina cpm at FreeBSD.org
Tue May 28 17:26:34 UTC 2019


Author: cpm
Date: Tue May 28 17:26:32 2019
New Revision: 502903
URL: https://svnweb.freebsd.org/changeset/ports/502903

Log:
  - Add an upstream fix for issue 956061: Context menu and on top elements draw a black rectangle.
  
  Read for more details: https://bugs.chromium.org/p/chromium/issues/detail?id=956061

Added:
  head/www/chromium/files/patch-ui_gl_gl__surface__glx.cc   (contents, props changed)
  head/www/chromium/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc   (contents, props changed)
Modified:
  head/www/chromium/Makefile
  head/www/chromium/files/patch-ui_gl_BUILD.gn

Modified: head/www/chromium/Makefile
==============================================================================
--- head/www/chromium/Makefile	Tue May 28 16:39:37 2019	(r502902)
+++ head/www/chromium/Makefile	Tue May 28 17:26:32 2019	(r502903)
@@ -3,6 +3,7 @@
 
 PORTNAME=	chromium
 PORTVERSION=	74.0.3729.157
+PORTREVISION=	1
 CATEGORIES?=	www
 MASTER_SITES=	https://commondatastorage.googleapis.com/chromium-browser-official/ \
 		LOCAL/cpm/chromium/:fonts

Modified: head/www/chromium/files/patch-ui_gl_BUILD.gn
==============================================================================
--- head/www/chromium/files/patch-ui_gl_BUILD.gn	Tue May 28 16:39:37 2019	(r502902)
+++ head/www/chromium/files/patch-ui_gl_BUILD.gn	Tue May 28 17:26:32 2019	(r502903)
@@ -1,6 +1,6 @@
---- ui/gl/BUILD.gn.orig	2019-04-30 22:23:42 UTC
-+++ ui/gl/BUILD.gn
-@@ -213,7 +213,7 @@ jumbo_component("gl") {
+--- ui/gl/BUILD.gn.orig	2019-05-14 20:51:39.000000000 +0200
++++ ui/gl/BUILD.gn	2019-05-28 10:25:43.492274000 +0200
+@@ -213,7 +213,7 @@
        ]
      }
  
@@ -9,3 +9,15 @@
        # Windows has USE_EGL but doesn't support base::FileDescriptor.
        # libsync isn't supported or needed on MacOSX.
        # Fuchsia is excluded due to a libsync dependency and because it's
+@@ -272,7 +272,10 @@
+       "//build/config/linux:xext",
+     ]
+ 
+-    deps += [ "//ui/gfx/x" ]
++    deps += [
++      "//ui/base/x",
++      "//ui/gfx/x",
++    ]
+   }
+   if (is_win) {
+     sources += [

Added: head/www/chromium/files/patch-ui_gl_gl__surface__glx.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/chromium/files/patch-ui_gl_gl__surface__glx.cc	Tue May 28 17:26:32 2019	(r502903)
@@ -0,0 +1,64 @@
+--- ui/gl/gl_surface_glx.cc.orig	2019-05-28 10:26:51.705074000 +0200
++++ ui/gl/gl_surface_glx.cc	2019-05-28 10:44:19.461809000 +0200
+@@ -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;

Added: head/www/chromium/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/chromium/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc	Tue May 28 17:26:32 2019	(r502903)
@@ -0,0 +1,32 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.orig	2019-05-28 10:19:21.517467000 +0200
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc	2019-05-28 10:22:46.373548000 +0200
+@@ -1440,24 +1440,15 @@
+   if (swa.override_redirect)
+     attribute_mask |= CWOverrideRedirect;
+ 
+-  bool enable_transparent_visuals;
+-  switch (params.opacity) {
+-    case Widget::InitParams::OPAQUE_WINDOW:
+-      enable_transparent_visuals = false;
+-      break;
+-    case Widget::InitParams::TRANSLUCENT_WINDOW:
+-      enable_transparent_visuals = true;
+-      break;
+-    case Widget::InitParams::INFER_OPACITY:
+-    default:
+-      enable_transparent_visuals = params.type == Widget::InitParams::TYPE_DRAG;
+-  }
+-
+   Visual* visual = CopyFromParent;
+   int depth = CopyFromParent;
+   Colormap colormap = CopyFromParent;
++
++  // GLSurfaceGLX always create child window with alpha channel. If the parent
++  // window doesn't have alpha channel, it causes flash, so always request argb
++  // visual.
+   ui::XVisualManager::GetInstance()->ChooseVisualForWindow(
+-      enable_transparent_visuals, &visual, &depth, &colormap,
++      true /* want_argb_visual */, &visual, &depth, &colormap,
+       &use_argb_visual_);
+ 
+   if (colormap != CopyFromParent) {


More information about the svn-ports-head mailing list