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 {