Added fullscreen support for X11

This commit is contained in:
David Partouche 2014-09-04 11:38:33 +02:00 committed by Tomaka17
parent ac74db979c
commit 55ebd4935e
2 changed files with 6 additions and 3 deletions

View file

@ -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
} }

View file

@ -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