summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-08-21 16:09:37 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-08-22 18:21:32 +0300
commit55dacbf595590aa656a04c4d516ac8f3c1fbbd27 (patch)
tree2793eb5a3ff8cc81cd95e3ad3feed818418f6c59
parent93340f5b796b64061cad0fea8872d68956c5b842 (diff)
downloadmetacity-55dacbf595590aa656a04c4d516ac8f3c1fbbd27.tar.gz
xrender: use toplevel visual
-rw-r--r--src/compositor/meta-compositor-xrender.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 284dbdcf..ed31da71 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -174,6 +174,15 @@ struct _MetaCompositorXRender
G_DEFINE_TYPE (MetaCompositorXRender, meta_compositor_xrender, META_TYPE_COMPOSITOR)
+static Visual *
+get_toplevel_xvisual (MetaWindow *window)
+{
+ if (window->frame != NULL)
+ return meta_frame_get_xvisual (window->frame);
+
+ return window->xvisual;
+}
+
static Window
get_toplevel_xwindow (MetaWindow *window)
{
@@ -1232,7 +1241,7 @@ get_window_format (Display *xdisplay,
{
XRenderPictFormat *format;
- format = XRenderFindVisualFormat (xdisplay, cw->window->xvisual);
+ format = XRenderFindVisualFormat (xdisplay, get_toplevel_xvisual (cw->window));
if (!format)
{
@@ -1952,7 +1961,7 @@ determine_mode (MetaCompositorXRender *xrender,
cw->alpha_pict = None;
}
- format = XRenderFindVisualFormat (xdisplay, cw->window->xvisual);
+ format = XRenderFindVisualFormat (xdisplay, get_toplevel_xvisual (cw->window));
if ((format && format->type == PictTypeDirect && format->direct.alphaMask)
|| cw->window->opacity != (guint) OPAQUE)
@@ -2795,7 +2804,7 @@ meta_compositor_xrender_get_window_surface (MetaCompositor *compositor,
height = shaded ? cw->shaded.height : cw->rect.height;
back_surface = cairo_xlib_surface_create (xdisplay, back_pixmap,
- cw->window->xvisual,
+ get_toplevel_xvisual (cw->window),
width, height);
window_surface = cairo_surface_create_similar (back_surface,