From 1333764c9eba8fbe5c0d5969279909899bb4e200 Mon Sep 17 00:00:00 2001 From: Nicolas Patry Date: Thu, 26 Mar 2020 23:57:26 +0100 Subject: [PATCH] Fixing a bug where Linux would go out of X11 clients and crashing. --- src/linux/display.rs | 6 +++++- src/linux/keyboard_state.rs | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/linux/display.rs b/src/linux/display.rs index dc92f93a..7e2e06e7 100644 --- a/src/linux/display.rs +++ b/src/linux/display.rs @@ -11,6 +11,10 @@ pub fn display_size() -> (u64, u64) { if screen.is_null() { panic!("We can't connect to screen of X server"); } - ((*screen).width as u64, (*screen).height as u64) + let res = ((*screen).width as u64, (*screen).height as u64); + + xlib::XCloseDisplay(dpy); + + res } } diff --git a/src/linux/keyboard_state.rs b/src/linux/keyboard_state.rs index c075c29b..f9649b57 100644 --- a/src/linux/keyboard_state.rs +++ b/src/linux/keyboard_state.rs @@ -16,6 +16,13 @@ pub struct KeyboardState { keysym: Box, status: Box, } +impl Drop for KeyboardState { + fn drop(&mut self) { + unsafe { + xlib::XCloseDisplay(*self.display); + } + } +} impl KeyboardState { pub fn new() -> Result {