diff options
author | lukefromdc <[email protected]> | 2019-09-06 17:28:10 -0400 |
---|---|---|
committer | Victor Kareh <[email protected]> | 2019-09-10 11:10:02 -0400 |
commit | 6fa0b14e6d4f55f373e6f561f2a21fb52fcb87a2 (patch) | |
tree | 302d4f60d681f75f4befa52faf586f8bd33c1acc /src/core/frame.c | |
parent | adeb4a8455ba7dc17de0198bb3aae9b9784553e0 (diff) | |
download | marco-6fa0b14e6d4f55f373e6f561f2a21fb52fcb87a2.tar.bz2 marco-6fa0b14e6d4f55f373e6f561f2a21fb52fcb87a2.tar.xz |
Fix use of RBGA visual in frame.c when compositing is not in use
Use the window's visual in all cases, fix problems with drivers forcing use of blit rather than pageflip mode when comppositing is not used or window is unredirected
Apply https://gitlab.gnome.org/GNOME/metacity/commit/5863176a2bd659c8d9a3d1c7b023a27c1a8c0aa5
Diffstat (limited to 'src/core/frame.c')
-rw-r--r-- | src/core/frame.c | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/src/core/frame.c b/src/core/frame.c index 855dc50d..f6e884a5 100644 --- a/src/core/frame.c +++ b/src/core/frame.c @@ -62,10 +62,7 @@ void meta_window_ensure_frame (MetaWindow *window) { MetaFrame *frame; - MetaScreen *screen; XSetWindowAttributes attrs; - XVisualInfo visual_info; - Visual *visual; int status; if (window->frame) @@ -90,47 +87,14 @@ meta_window_ensure_frame (MetaWindow *window) frame->need_reapply_frame_shape = TRUE; frame->is_flashing = FALSE; - meta_verbose ("Framing window %s: visual %s default, depth %d default depth %d\n", - window->desc, - XVisualIDFromVisual (window->xvisual) == - XVisualIDFromVisual (window->screen->default_xvisual) ? - "is" : "is not", - window->depth, window->screen->default_depth); meta_verbose ("Frame geometry %d,%d %dx%d\n", frame->rect.x, frame->rect.y, frame->rect.width, frame->rect.height); - /* Default depth/visual handles clients with weird visuals; they can - * always be children of the root depth/visual obviously, but - * e.g. DRI games can't be children of a parent that has the same - * visual as the client. NULL means default visual. - * - * We look for an ARGB visual if we can find one, otherwise use - * the default of NULL. - */ - - screen = meta_window_get_screen (window); - status = XMatchVisualInfo (window->display->xdisplay, - XScreenNumberOfScreen (screen->xscreen), - 32, TrueColor, - &visual_info); - - if (!status) - { - /* Special case for depth 32 windows (assumed to be ARGB), - * we use the window's visual. Otherwise we just use the system visual. - */ - if (window->depth == 32) - visual = window->xvisual; - else - visual = NULL; - } - else - visual = visual_info.visual; frame->xwindow = meta_ui_create_frame_window (window->screen->ui, window->display->xdisplay, - visual, + window->xvisual, frame->rect.x, frame->rect.y, frame->rect.width, |