mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 22:31:30 +11:00
Added fullscreen support for X11
This commit is contained in:
parent
ac74db979c
commit
55ebd4935e
|
@ -58,6 +58,7 @@ pub struct WindowBuilder {
|
||||||
title: String,
|
title: String,
|
||||||
monitor: Option<winimpl::MonitorID>,
|
monitor: Option<winimpl::MonitorID>,
|
||||||
gl_version: Option<(uint, uint)>,
|
gl_version: Option<(uint, uint)>,
|
||||||
|
is_fullscreen: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WindowBuilder {
|
impl WindowBuilder {
|
||||||
|
@ -68,6 +69,7 @@ impl WindowBuilder {
|
||||||
title: "gl-init-rs window".to_string(),
|
title: "gl-init-rs window".to_string(),
|
||||||
monitor: None,
|
monitor: None,
|
||||||
gl_version: None,
|
gl_version: None,
|
||||||
|
is_fullscreen: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +93,7 @@ impl WindowBuilder {
|
||||||
pub fn with_fullscreen(mut self, monitor: MonitorID) -> WindowBuilder {
|
pub fn with_fullscreen(mut self, monitor: MonitorID) -> WindowBuilder {
|
||||||
let MonitorID(monitor) = monitor;
|
let MonitorID(monitor) = monitor;
|
||||||
self.monitor = Some(monitor);
|
self.monitor = Some(monitor);
|
||||||
|
self.is_fullscreen = true;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ impl Window {
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut window_attributes = ffi::CWBorderPixel | ffi::CWColormap | ffi:: CWEventMask;
|
let mut window_attributes = ffi::CWBorderPixel | ffi::CWColormap | ffi:: CWEventMask;
|
||||||
if builder.monitor.is_some() {
|
if builder.is_fullscreen {
|
||||||
window_attributes |= ffi::CWOverrideRedirect;
|
window_attributes |= ffi::CWOverrideRedirect;
|
||||||
unsafe {
|
unsafe {
|
||||||
ffi::XF86VidModeSwitchToMode(display, screen_id, *modes.offset(best_mode as int));
|
ffi::XF86VidModeSwitchToMode(display, screen_id, *modes.offset(best_mode as int));
|
||||||
|
@ -140,7 +140,7 @@ impl Window {
|
||||||
|
|
||||||
// finally creating the window
|
// finally creating the window
|
||||||
let window = unsafe {
|
let window = unsafe {
|
||||||
let win = ffi::XCreateWindow(display, root, 0, 0, dimensions.val0() as libc::c_uint,
|
let win = ffi::XCreateWindow(display, root, 50, 50, dimensions.val0() as libc::c_uint,
|
||||||
dimensions.val1() as libc::c_uint, 0, visual_infos.depth, ffi::InputOutput,
|
dimensions.val1() as libc::c_uint, 0, visual_infos.depth, ffi::InputOutput,
|
||||||
visual_infos.visual, window_attributes,
|
visual_infos.visual, window_attributes,
|
||||||
&mut set_win_attr);
|
&mut set_win_attr);
|
||||||
|
@ -251,7 +251,7 @@ impl Window {
|
||||||
wm_delete_window: wm_delete_window,
|
wm_delete_window: wm_delete_window,
|
||||||
xf86_desk_mode: xf86_desk_mode,
|
xf86_desk_mode: xf86_desk_mode,
|
||||||
screen_id: screen_id,
|
screen_id: screen_id,
|
||||||
is_fullscreen: builder.monitor.is_some(),
|
is_fullscreen: builder.is_fullscreen,
|
||||||
};
|
};
|
||||||
|
|
||||||
// calling glViewport
|
// calling glViewport
|
||||||
|
|
Loading…
Reference in a new issue