From 70e5700a79b2820eb0d0d90cad744e98e68894e8 Mon Sep 17 00:00:00 2001 From: Dan Spencer Date: Tue, 21 Jul 2015 18:55:04 -0600 Subject: [PATCH] Remove "owned" from Window, alter functions to return id instead of Window --- src/sdl2/keyboard/mod.rs | 5 +++-- src/sdl2/mouse.rs | 5 +++-- src/sdl2/video.rs | 39 +++++++++------------------------------ 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/sdl2/keyboard/mod.rs b/src/sdl2/keyboard/mod.rs index ffaf65db..a3e36f1c 100644 --- a/src/sdl2/keyboard/mod.rs +++ b/src/sdl2/keyboard/mod.rs @@ -30,12 +30,13 @@ bitflags! { } } -pub fn get_keyboard_focus() -> Option { +pub fn get_focused_window_id() -> Option { let raw = unsafe { ll::SDL_GetKeyboardFocus() }; if raw == ptr::null_mut() { None } else { - unsafe { Some(Window::from_ll(raw, false)) } + let id = unsafe { ::sys::video::SDL_GetWindowID(raw) }; + Some(id) } } diff --git a/src/sdl2/mouse.rs b/src/sdl2/mouse.rs index 25295daa..2f8be46d 100644 --- a/src/sdl2/mouse.rs +++ b/src/sdl2/mouse.rs @@ -148,12 +148,13 @@ pub fn wrap_mouse(bitflags: u8) -> Mouse { } } -pub fn get_mouse_focus() -> Option { +pub fn get_focused_window_id() -> Option { let raw = unsafe { ll::SDL_GetMouseFocus() }; if raw == ptr::null_mut() { None } else { - unsafe { Some(video::Window::from_ll(raw, false)) } + let id = unsafe { ::sys::video::SDL_GetWindowID(raw) }; + Some(id) } } diff --git a/src/sdl2/video.rs b/src/sdl2/video.rs index 5803d717..6135da4f 100644 --- a/src/sdl2/video.rs +++ b/src/sdl2/video.rs @@ -401,8 +401,7 @@ impl GLContext { } pub struct Window { - raw: *mut ll::SDL_Window, - owned: bool + raw: *mut ll::SDL_Window } impl_raw_accessors!( @@ -410,21 +409,14 @@ impl_raw_accessors!( (Window, *mut ll::SDL_Window) ); -impl_owned_accessors!( - (Window, owned) -); - impl_raw_constructor!( - (Window, Window (raw: *mut ll::SDL_Window, owned: bool)) + (Window, Window (raw: *mut ll::SDL_Window)) ); impl Drop for Window { + #[inline] fn drop(&mut self) { - if self.owned { - unsafe { - ll::SDL_DestroyWindow(self.raw); - } - } + unsafe { ll::SDL_DestroyWindow(self.raw) }; } } @@ -477,7 +469,7 @@ impl WindowBuilder { if raw == ptr::null_mut() { Err(get_error()) } else { - Ok(Window { raw: raw, owned: true }) + Ok(Window { raw: raw }) } } } @@ -612,20 +604,6 @@ impl Window { } } - /// Get a Window from a stored ID. - /// - /// Warning: This function is unsafe! - /// It may introduce aliased Window values if a Window of the same ID is - /// already being used as a variable in the application. - pub unsafe fn from_id(id: u32) -> SdlResult { - let raw = ll::SDL_GetWindowFromID(id); - if raw == ptr::null_mut() { - Err(get_error()) - } else { - Ok(Window{ raw: raw, owned: false}) - } - } - pub fn get_id(&self) -> u32 { unsafe { ll::SDL_GetWindowID(self.raw) } } @@ -1100,12 +1078,13 @@ pub fn gl_extension_supported(extension: &str) -> bool { } } -pub unsafe fn gl_get_current_window() -> SdlResult { - let raw = ll::SDL_GL_GetCurrentWindow(); +pub fn gl_get_current_window_id() -> SdlResult { + let raw = unsafe { ll::SDL_GL_GetCurrentWindow() }; if raw == ptr::null_mut() { Err(get_error()) } else { - Ok(Window{ raw: raw, owned: false }) + let id = unsafe { ll::SDL_GetWindowID(raw) }; + Ok(id) } }