X11: Improve performance of Window::set_cursor_icon (#1116)
* X11: Fix performance issue with rapidly resetting cursor icon * When setting cursor icon, if the new icon value is the same as the current value, no messages are sent the X server. * X11: Cache cursor objects in XConnection * Add changelog entry
This commit is contained in:
parent
f085b7349c
commit
0b497b62d8
5 changed files with 143 additions and 126 deletions
|
|
@ -1,8 +1,10 @@
|
|||
use std::{error::Error, fmt, os::raw::c_int, ptr};
|
||||
use std::{collections::HashMap, error::Error, fmt, os::raw::c_int, ptr};
|
||||
|
||||
use libc;
|
||||
use parking_lot::Mutex;
|
||||
|
||||
use crate::window::CursorIcon;
|
||||
|
||||
use super::ffi;
|
||||
|
||||
/// A connection to an X server.
|
||||
|
|
@ -19,6 +21,7 @@ pub struct XConnection {
|
|||
pub display: *mut ffi::Display,
|
||||
pub x11_fd: c_int,
|
||||
pub latest_error: Mutex<Option<XError>>,
|
||||
pub cursor_cache: Mutex<HashMap<Option<CursorIcon>, ffi::Cursor>>,
|
||||
}
|
||||
|
||||
unsafe impl Send for XConnection {}
|
||||
|
|
@ -64,6 +67,7 @@ impl XConnection {
|
|||
display,
|
||||
x11_fd: fd,
|
||||
latest_error: Mutex::new(None),
|
||||
cursor_cache: Default::default(),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue