1
0
Fork 0

api unification: return shared WindowHandle in platform code

This commit is contained in:
Joakim Frostegård 2020-11-24 20:41:55 +01:00
parent a8c7c707d2
commit 1ddd6fa47e
4 changed files with 18 additions and 9 deletions

View file

@ -56,7 +56,10 @@ impl WindowHandle {
} }
impl Window { impl Window {
pub fn open<H, B>(options: WindowOpenOptions, build: B) -> WindowHandle pub fn open<H, B>(
options: WindowOpenOptions,
build: B
) -> crate::WindowHandle
where H: WindowHandler, where H: WindowHandler,
B: FnOnce(&mut crate::Window) -> H, B: FnOnce(&mut crate::Window) -> H,
B: Send + 'static B: Send + 'static
@ -195,7 +198,7 @@ impl Window {
) )
} }
WindowHandle crate::WindowHandle(WindowHandle)
} }
} }

View file

@ -176,7 +176,10 @@ impl WindowHandle {
} }
impl Window { impl Window {
pub fn open<H, B>(options: WindowOpenOptions, build: B) -> WindowHandle pub fn open<H, B>(
options: WindowOpenOptions,
build: B
) -> crate::WindowHandle
where H: WindowHandler, where H: WindowHandler,
B: FnOnce(&mut crate::Window) -> H, B: FnOnce(&mut crate::Window) -> H,
B: Send + 'static B: Send + 'static
@ -252,7 +255,7 @@ impl Window {
SetWindowLongPtrA(hwnd, GWLP_USERDATA, Box::into_raw(window_state) as *const _ as _); SetWindowLongPtrA(hwnd, GWLP_USERDATA, Box::into_raw(window_state) as *const _ as _);
SetTimer(hwnd, 4242, 13, None); SetTimer(hwnd, 4242, 13, None);
WindowHandle { hwnd } crate::WindowHandle(WindowHandle { hwnd })
} }
} }
} }

View file

@ -9,7 +9,7 @@ use crate::x11 as platform;
use crate::macos as platform; use crate::macos as platform;
pub struct WindowHandle(platform::WindowHandle); pub struct WindowHandle(pub(crate) platform::WindowHandle);
impl WindowHandle { impl WindowHandle {
@ -31,6 +31,6 @@ impl <'a>Window<'a> {
B: FnOnce(&mut Window) -> H, B: FnOnce(&mut Window) -> H,
B: Send + 'static B: Send + 'static
{ {
WindowHandle(platform::Window::open::<H, B>(options, build)) platform::Window::open::<H, B>(options, build)
} }
} }

View file

@ -44,7 +44,10 @@ impl WindowHandle {
type WindowOpenResult = Result<(), ()>; type WindowOpenResult = Result<(), ()>;
impl Window { impl Window {
pub fn open<H, B>(options: WindowOpenOptions, build: B) -> WindowHandle pub fn open<H, B>(
options: WindowOpenOptions,
build: B
) -> crate::WindowHandle
where H: WindowHandler, where H: WindowHandler,
B: FnOnce(&mut crate::Window) -> H, B: FnOnce(&mut crate::Window) -> H,
B: Send + 'static B: Send + 'static
@ -60,7 +63,7 @@ impl Window {
// FIXME: placeholder types for returning errors in the future // FIXME: placeholder types for returning errors in the future
let _ = rx.recv(); let _ = rx.recv();
WindowHandle { thread } crate::WindowHandle(WindowHandle { thread })
} }
fn window_thread<H, B>(options: WindowOpenOptions, build: B, fn window_thread<H, B>(options: WindowOpenOptions, build: B,