server: don't crash if set_fullscreen fails.
Gotta stop assuming that the X server has my best interests at heart. Fixes #95
This commit is contained in:
parent
9de1334c0c
commit
3a981c5249
1 changed files with 17 additions and 7 deletions
|
|
@ -670,7 +670,10 @@ impl<C: XConnection> ServerState<C> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_window_serial(&mut self, window: x::Window, serial: [u32; 2]) {
|
pub fn set_window_serial(&mut self, window: x::Window, serial: [u32; 2]) {
|
||||||
let win = self.windows.get_mut(&window).unwrap();
|
let Some(win) = self.windows.get_mut(&window) else {
|
||||||
|
warn!("Tried to set serial for unknown window {window:?}");
|
||||||
|
return;
|
||||||
|
};
|
||||||
win.surface_serial = Some(serial);
|
win.surface_serial = Some(serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -768,7 +771,10 @@ impl<C: XConnection> ServerState<C> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_fullscreen(&mut self, window: x::Window, state: super::xstate::SetState) {
|
pub fn set_fullscreen(&mut self, window: x::Window, state: super::xstate::SetState) {
|
||||||
let win = self.windows.get(&window).unwrap();
|
let Some(win) = self.windows.get(&window) else {
|
||||||
|
warn!("Tried to set unknown window {window:?} fullscreen");
|
||||||
|
return;
|
||||||
|
};
|
||||||
let Some(key) = win.surface_key else {
|
let Some(key) = win.surface_key else {
|
||||||
warn!("Tried to set window without surface fullscreen: {window:?}");
|
warn!("Tried to set window without surface fullscreen: {window:?}");
|
||||||
return;
|
return;
|
||||||
|
|
@ -783,10 +789,11 @@ impl<C: XConnection> ServerState<C> {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use crate::xstate::SetState;
|
||||||
match state {
|
match state {
|
||||||
crate::xstate::SetState::Add => toplevel.toplevel.set_fullscreen(None),
|
SetState::Add => toplevel.toplevel.set_fullscreen(None),
|
||||||
crate::xstate::SetState::Remove => toplevel.toplevel.unset_fullscreen(),
|
SetState::Remove => toplevel.toplevel.unset_fullscreen(),
|
||||||
crate::xstate::SetState::Toggle => {
|
SetState::Toggle => {
|
||||||
if toplevel.fullscreen {
|
if toplevel.fullscreen {
|
||||||
toplevel.toplevel.unset_fullscreen()
|
toplevel.toplevel.unset_fullscreen()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -829,7 +836,7 @@ impl<C: XConnection> ServerState<C> {
|
||||||
self.clientside
|
self.clientside
|
||||||
.queue
|
.queue
|
||||||
.dispatch_pending(&mut self.clientside.globals)
|
.dispatch_pending(&mut self.clientside.globals)
|
||||||
.unwrap();
|
.expect("Failed dispatching client side Wayland events");
|
||||||
self.handle_clientside_events();
|
self.handle_clientside_events();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -867,7 +874,10 @@ impl<C: XConnection> ServerState<C> {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.handle_clipboard_events();
|
self.handle_clipboard_events();
|
||||||
self.clientside.queue.flush().unwrap();
|
self.clientside
|
||||||
|
.queue
|
||||||
|
.flush()
|
||||||
|
.expect("Failed flushing clientside events");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_selection(&mut self) -> Option<ForeignSelection> {
|
pub fn new_selection(&mut self) -> Option<ForeignSelection> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue