Add safe constructors for display and window handles
notgull opened this issue · 3 comments
notgull commented
There are some DisplayHandle
and WindowHandle
variants that are completely safe to construct. For instance:
- Most
DisplayHandle
s are just indicators of the currently running display system and don't involve any borrowed state. - An
[Xlib/Xcb]DisplayHandle
with a display ofNone
can be constructed safely. Win32WindowHandle
,[Xlib/Xcb]WindowHandle
and WASM web handles involve window IDs with no borrowed state.
It should be possible to construct these safely, with constructors on the safe types.
kchibisov commented
The reason everything in unsafe
is forward compat, I guess? Because unsafe -> safe is a breaking change, but not otherwise.
kchibisov commented
Also, isn't Default
basically it?
notgull commented
I was thinking more along these lines:
impl DisplayHandle<'static> {
pub fn windows() -> Self {
unsafe { Self::borrow_raw(WindowsDisplayHandle::new().into()) }
}
pub fn xlib_no_display() -> Self {
unsafe { Self::borrow_raw(XlibDisplayHandle::new(None).into()) }
}
}
Basically, to allow for more ways of creating DisplayHandle
and WindowHandle
without needing to go through borrow_raw
.