Corrections to sharing data

This commit is contained in:
Aceeri 2015-11-09 02:49:50 -08:00
parent 78eb4a5990
commit d6a53cf5d3
3 changed files with 20 additions and 19 deletions

View file

@ -10,6 +10,7 @@ use WindowAttributes;
use CursorState;
use Event;
use super::event;
use super::WindowState;
use user32;
use shell32;
@ -20,13 +21,6 @@ use winapi;
/// a thread-local variable.
thread_local!(pub static CONTEXT_STASH: RefCell<Option<ThreadLocalData>> = RefCell::new(None));
/// Contains information about states and the window for the callback.
#[derive(Clone)]
pub struct WindowState {
pub cursor_state: CursorState,
pub attributes: WindowAttributes
}
pub struct ThreadLocalData {
pub win: winapi::HWND,
pub sender: Sender<Event>,
@ -257,7 +251,7 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT,
let cstash = cstash.as_ref();
// there's a very bizarre borrow checker bug
// possibly related to rust-lang/rust/#23338
let _window_state = if let Some(cstash) = cstash {
let _cursor_state = if let Some(cstash) = cstash {
if let Ok(window_state) = cstash.window_state.lock() {
match window_state.cursor_state {
CursorState::Normal => {