From 19dd961752319276fa170c07e46963de9e3b589c Mon Sep 17 00:00:00 2001 From: Francesca Frangipane Date: Sun, 3 Jun 2018 13:11:54 -0400 Subject: [PATCH] X11: Fix flickering when resizing with transparency enabled (#546) * X11: Fix flickering when resizing with transparency enabled * X11: Fix with_override_redirect --- CHANGELOG.md | 4 +++- src/platform/linux/x11/window.rs | 9 +-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddf697da..7c072fed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,10 @@ - On X11, the `Moved` event is no longer sent when the window is resized without changing position. - `MouseCursor` and `CursorState` now implement `Default`. - `WindowBuilder::with_resizable` implemented for Windows. -- On X11, if width or height is reported as 0, the DPI is now 1.0 instead of +inf. +- On X11, if the monitor's width or height in millimeters is reported as 0, the DPI is now 1.0 instead of +inf. - On X11, the environment variable `WINIT_HIDPI_FACTOR` has been added for overriding DPI factor. +- On X11, enabling transparency no longer causes the window contents to flicker when resizing. +- On X11, `with_override_redirect` now actually enables override redirect. # Version 0.15.0 (2018-05-22) diff --git a/src/platform/linux/x11/window.rs b/src/platform/linux/x11/window.rs index 4f8a2632..90d3cc97 100644 --- a/src/platform/linux/x11/window.rs +++ b/src/platform/linux/x11/window.rs @@ -102,19 +102,12 @@ impl UnownedWindow { | ffi::ButtonReleaseMask | ffi::PointerMotionMask; swa.border_pixel = 0; - if window_attrs.transparent { - swa.background_pixel = 0; - } - swa.override_redirect = 0; + swa.override_redirect = pl_attribs.override_redirect as c_int; swa }; let mut window_attributes = ffi::CWBorderPixel | ffi::CWColormap | ffi::CWEventMask; - if window_attrs.transparent { - window_attributes |= ffi::CWBackPixel; - } - if pl_attribs.override_redirect { window_attributes |= ffi::CWOverrideRedirect; }