Open notgull opened 1 year ago
The reason everything in unsafe
is forward compat, I guess? Because unsafe -> safe is a breaking change, but not otherwise.
Also, isn't Default
basically it?
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
.
There are some
DisplayHandle
andWindowHandle
variants that are completely safe to construct. For instance:DisplayHandle
s are just indicators of the currently running display system and don't involve any borrowed state.[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.