From 3bfb580d7ac1c1fbf74b2868103efd237df7e048 Mon Sep 17 00:00:00 2001 From: sandmor Date: Tue, 24 Aug 2021 05:35:11 -0500 Subject: [PATCH] Fix potential bug (#2009) * polish and failed to find visual warning * improvement --- src/platform_impl/linux/x11/window.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/platform_impl/linux/x11/window.rs b/src/platform_impl/linux/x11/window.rs index 247a289b..ea8bc616 100644 --- a/src/platform_impl/linux/x11/window.rs +++ b/src/platform_impl/linux/x11/window.rs @@ -181,8 +181,8 @@ impl UnownedWindow { }; // creating - let (visual, depth) = match pl_attribs.visual_infos { - Some(vi) => (vi.visual, vi.depth), + let (visual, depth, require_colormap) = match pl_attribs.visual_infos { + Some(vi) => (vi.visual, vi.depth, false), None if window_attrs.transparent == true => { // Find a suitable visual let mut vinfo = MaybeUninit::uninit(); @@ -197,13 +197,21 @@ impl UnownedWindow { }; if vinfo_initialized { let vinfo = unsafe { vinfo.assume_init() }; - (vinfo.visual, vinfo.depth) + (vinfo.visual, vinfo.depth, true) } else { debug!("Could not set transparency, because XMatchVisualInfo returned zero for the required parameters"); - (ffi::CopyFromParent as *mut ffi::Visual, ffi::CopyFromParent) + ( + ffi::CopyFromParent as *mut ffi::Visual, + ffi::CopyFromParent, + false, + ) } } - _ => (ffi::CopyFromParent as *mut ffi::Visual, ffi::CopyFromParent), + _ => ( + ffi::CopyFromParent as *mut ffi::Visual, + ffi::CopyFromParent, + false, + ), }; let mut set_win_attr = { @@ -213,7 +221,7 @@ impl UnownedWindow { let visual = vi.visual; (xconn.xlib.XCreateColormap)(xconn.display, root, visual, ffi::AllocNone) } - } else if window_attrs.transparent { + } else if require_colormap { unsafe { (xconn.xlib.XCreateColormap)(xconn.display, root, visual, ffi::AllocNone) } } else { 0