shell: Using parking_lot's RwLock for fairness guarantees
This commit is contained in:
parent
8194be30c6
commit
465813c1c5
42 changed files with 247 additions and 396 deletions
|
|
@ -695,7 +695,7 @@ impl CosmicStack {
|
|||
surface.send_configure();
|
||||
if let Some(surface) = surface.wl_surface().map(Cow::into_owned) {
|
||||
let _ = data.common.event_loop_handle.insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().move_request(
|
||||
let res = state.common.shell.write().move_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
@ -837,7 +837,7 @@ impl Program for CosmicStackInternal {
|
|||
.map(Cow::into_owned)
|
||||
{
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().move_request(
|
||||
let res = state.common.shell.write().move_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
@ -867,12 +867,8 @@ impl Program for CosmicStackInternal {
|
|||
*self.potential_drag.lock().unwrap() = None;
|
||||
if let Some(surface) = self.windows.lock().unwrap().get(idx).cloned() {
|
||||
loop_handle.insert_idle(move |state| {
|
||||
if let Some(mapped) = state
|
||||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.element_for_surface(&surface)
|
||||
if let Some(mapped) =
|
||||
state.common.shell.read().element_for_surface(&surface)
|
||||
{
|
||||
mapped.stack_ref().unwrap().set_active(&surface);
|
||||
}
|
||||
|
|
@ -896,7 +892,7 @@ impl Program for CosmicStackInternal {
|
|||
.map(Cow::into_owned)
|
||||
{
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
if let Some(mapped) = shell.element_for_surface(&surface).cloned() {
|
||||
let position = if let Some((output, set)) =
|
||||
shell.workspaces.sets.iter().find(|(_, set)| {
|
||||
|
|
@ -950,7 +946,7 @@ impl Program for CosmicStackInternal {
|
|||
.map(Cow::into_owned)
|
||||
{
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
if let Some(mapped) = shell.element_for_surface(&surface).cloned() {
|
||||
if let Some(workspace) = shell.space_for(&mapped) {
|
||||
let Some(elem_geo) = workspace.element_geometry(&mapped) else {
|
||||
|
|
@ -1407,7 +1403,7 @@ impl PointerTarget<State> for CosmicStack {
|
|||
return;
|
||||
};
|
||||
self.0.loop_handle().insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().resize_request(
|
||||
let res = state.common.shell.write().resize_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
@ -1481,7 +1477,7 @@ impl PointerTarget<State> for CosmicStack {
|
|||
surface.send_configure();
|
||||
if let Some(surface) = surface.wl_surface().map(Cow::into_owned) {
|
||||
let _ = data.common.event_loop_handle.insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().move_request(
|
||||
let res = state.common.shell.write().move_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
|
|||
|
|
@ -441,7 +441,7 @@ impl Program for CosmicWindowInternal {
|
|||
if let Some((seat, serial)) = last_seat.cloned() {
|
||||
if let Some(surface) = self.window.wl_surface().map(Cow::into_owned) {
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().move_request(
|
||||
let res = state.common.shell.write().move_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
@ -467,7 +467,7 @@ impl Program for CosmicWindowInternal {
|
|||
Message::Minimize => {
|
||||
if let Some(surface) = self.window.wl_surface().map(Cow::into_owned) {
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
if let Some(mapped) = shell.element_for_surface(&surface).cloned() {
|
||||
shell.minimize_request(&mapped)
|
||||
}
|
||||
|
|
@ -477,7 +477,7 @@ impl Program for CosmicWindowInternal {
|
|||
Message::Maximize => {
|
||||
if let Some(surface) = self.window.wl_surface().map(Cow::into_owned) {
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
if let Some(mapped) = shell.element_for_surface(&surface).cloned() {
|
||||
let seat = shell.seats.last_active().clone();
|
||||
shell.maximize_toggle(&mapped, &seat)
|
||||
|
|
@ -490,7 +490,7 @@ impl Program for CosmicWindowInternal {
|
|||
if let Some((seat, serial)) = last_seat.cloned() {
|
||||
if let Some(surface) = self.window.wl_surface().map(Cow::into_owned) {
|
||||
loop_handle.insert_idle(move |state| {
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
if let Some(mapped) = shell.element_for_surface(&surface).cloned() {
|
||||
let position = if let Some((output, set)) =
|
||||
shell.workspaces.sets.iter().find(|(_, set)| {
|
||||
|
|
@ -763,7 +763,7 @@ impl PointerTarget<State> for CosmicWindow {
|
|||
return;
|
||||
};
|
||||
self.0.loop_handle().insert_idle(move |state| {
|
||||
let res = state.common.shell.write().unwrap().resize_request(
|
||||
let res = state.common.shell.write().resize_request(
|
||||
&surface,
|
||||
&seat,
|
||||
serial,
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ impl Shell {
|
|||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.element_for_surface(window)
|
||||
.cloned(),
|
||||
_ => None,
|
||||
|
|
@ -123,17 +122,12 @@ impl Shell {
|
|||
return;
|
||||
}
|
||||
|
||||
state
|
||||
.common
|
||||
.shell
|
||||
.write()
|
||||
.unwrap()
|
||||
.append_focus_stack(&mapped, seat);
|
||||
state.common.shell.write().append_focus_stack(&mapped, seat);
|
||||
}
|
||||
|
||||
update_focus_state(seat, target, state, serial, update_cursor);
|
||||
|
||||
state.common.shell.write().unwrap().update_active();
|
||||
state.common.shell.write().update_active();
|
||||
}
|
||||
|
||||
pub fn append_focus_stack(&mut self, mapped: &CosmicMapped, seat: &Seat<State>) {
|
||||
|
|
@ -242,7 +236,7 @@ fn update_focus_state(
|
|||
if should_update_cursor && state.common.config.cosmic_conf.cursor_follows_focus {
|
||||
if target.is_some() {
|
||||
//need to borrow mutably for surface under
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
// get the top left corner of the target element
|
||||
let geometry = shell.focused_geometry(target.unwrap());
|
||||
if let Some(geometry) = geometry {
|
||||
|
|
@ -292,7 +286,6 @@ fn update_focus_state(
|
|||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.get_output_for_focus(seat)
|
||||
.as_ref(),
|
||||
)
|
||||
|
|
@ -339,14 +332,13 @@ impl Common {
|
|||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.seats
|
||||
.iter()
|
||||
.cloned()
|
||||
.collect::<Vec<_>>();
|
||||
for seat in &seats {
|
||||
{
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
let focused_output = seat.focused_output();
|
||||
let active_output = seat.active_output();
|
||||
|
||||
|
|
@ -365,7 +357,7 @@ impl Common {
|
|||
update_pointer_focus(state, &seat);
|
||||
|
||||
let output = seat.focused_or_active_output();
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let last_known_focus = ActiveFocus::get(&seat);
|
||||
|
||||
if let Some(target) = last_known_focus {
|
||||
|
|
@ -454,7 +446,7 @@ impl Common {
|
|||
}
|
||||
}
|
||||
|
||||
state.common.shell.write().unwrap().update_active()
|
||||
state.common.shell.write().update_active()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -582,7 +574,7 @@ fn update_pointer_focus(state: &mut State, seat: &Seat<State>) {
|
|||
let output = seat.active_output();
|
||||
let position = pointer.current_location().as_global();
|
||||
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let under = State::surface_under(position, &output, &mut shell)
|
||||
.map(|(target, pos)| (target, pos.as_logical()));
|
||||
drop(shell);
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ impl IsAlive for KeyboardFocusTarget {
|
|||
|
||||
impl PointerTarget<State> for PointerFocusTarget {
|
||||
fn enter(&self, seat: &Seat<State>, data: &mut State, event: &PointerMotionEvent) {
|
||||
let toplevel = self.toplevel(&*data.common.shell.read().unwrap());
|
||||
let toplevel = self.toplevel(&*data.common.shell.read());
|
||||
if let Some(element) = toplevel {
|
||||
for session in element.cursor_sessions() {
|
||||
session.set_cursor_pos(Some(
|
||||
|
|
@ -270,7 +270,7 @@ impl PointerTarget<State> for PointerFocusTarget {
|
|||
}
|
||||
}
|
||||
fn motion(&self, seat: &Seat<State>, data: &mut State, event: &PointerMotionEvent) {
|
||||
let toplevel = self.toplevel(&*data.common.shell.read().unwrap());
|
||||
let toplevel = self.toplevel(&*data.common.shell.read());
|
||||
if let Some(element) = toplevel {
|
||||
for session in element.cursor_sessions() {
|
||||
session.set_cursor_pos(Some(
|
||||
|
|
@ -346,7 +346,7 @@ impl PointerTarget<State> for PointerFocusTarget {
|
|||
}
|
||||
}
|
||||
fn leave(&self, seat: &Seat<State>, data: &mut State, serial: Serial, time: u32) {
|
||||
let toplevel = self.toplevel(&*data.common.shell.read().unwrap());
|
||||
let toplevel = self.toplevel(&*data.common.shell.read());
|
||||
if let Some(element) = toplevel {
|
||||
for session in element.cursor_sessions() {
|
||||
session.set_cursor_pos(None);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use crate::{
|
|||
use super::{Item, ResizeEdge};
|
||||
|
||||
fn toggle_stacking(state: &mut State, mapped: &CosmicMapped) {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
if let Some(new_focus) = shell.toggle_stacking(&seat, mapped) {
|
||||
std::mem::drop(shell);
|
||||
|
|
@ -25,7 +25,7 @@ fn toggle_stacking(state: &mut State, mapped: &CosmicMapped) {
|
|||
}
|
||||
|
||||
fn move_prev_workspace(state: &mut State, mapped: &CosmicMapped) {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let (current_handle, output) = {
|
||||
let Some(ws) = shell.space_for(mapped) else {
|
||||
|
|
@ -58,7 +58,7 @@ fn move_prev_workspace(state: &mut State, mapped: &CosmicMapped) {
|
|||
}
|
||||
|
||||
fn move_next_workspace(state: &mut State, mapped: &CosmicMapped) {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let (current_handle, output) = {
|
||||
let Some(ws) = shell.space_for(mapped) else {
|
||||
|
|
@ -114,7 +114,7 @@ pub fn tab_items(
|
|||
)
|
||||
.into();
|
||||
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let output = seat.active_output();
|
||||
let workspace = shell.workspaces.active_mut(&output).unwrap();
|
||||
|
|
@ -198,12 +198,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-minimize"), move |handle| {
|
||||
let mapped = minimize_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
state
|
||||
.common
|
||||
.shell
|
||||
.write()
|
||||
.unwrap()
|
||||
.minimize_request(&mapped);
|
||||
state.common.shell.write().minimize_request(&mapped);
|
||||
});
|
||||
})
|
||||
.shortcut(config.shortcut_for_action(&Action::Minimize)),
|
||||
|
|
@ -212,7 +207,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-maximize"), move |handle| {
|
||||
let mapped = maximize_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
shell.maximize_toggle(&mapped, &seat);
|
||||
});
|
||||
|
|
@ -224,7 +219,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-tiled"), move |handle| {
|
||||
let tile_clone = tile_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
if let Some(ws) = shell.space_for_mut(&tile_clone) {
|
||||
ws.toggle_floating_window(&seat, &tile_clone);
|
||||
|
|
@ -246,7 +241,7 @@ pub fn window_items(
|
|||
let move_clone = move_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
if let Some(surface) = move_clone.wl_surface() {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let res = shell.move_request(
|
||||
&surface,
|
||||
|
|
@ -285,7 +280,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-resize-edge-top"), move |handle| {
|
||||
let resize_clone = resize_top_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let res = shell.menu_resize_request(
|
||||
&resize_clone,
|
||||
|
|
@ -320,7 +315,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-resize-edge-left"), move |handle| {
|
||||
let resize_clone = resize_left_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let res = shell.menu_resize_request(
|
||||
&resize_clone,
|
||||
|
|
@ -355,7 +350,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-resize-edge-right"), move |handle| {
|
||||
let resize_clone = resize_right_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let res = shell.menu_resize_request(
|
||||
&resize_clone,
|
||||
|
|
@ -390,7 +385,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-resize-edge-bottom"), move |handle| {
|
||||
let resize_clone = resize_bottom_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
let res = shell.menu_resize_request(
|
||||
&resize_clone,
|
||||
|
|
@ -445,7 +440,7 @@ pub fn window_items(
|
|||
Item::new(fl!("window-menu-sticky"), move |handle| {
|
||||
let mapped = sticky_clone.clone();
|
||||
let _ = handle.insert_idle(move |state| {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
let seat = shell.seats.last_active().clone();
|
||||
shell.toggle_sticky(&seat, &mapped);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -522,7 +522,7 @@ impl PointerGrab<State> for MenuGrab {
|
|||
let mut guard = self.elements.lock().unwrap();
|
||||
let elements = &mut *guard;
|
||||
let event_location = if let Some(output) = self.screen_space_relative.as_ref() {
|
||||
if state.common.shell.read().unwrap().zoom_state().is_some() {
|
||||
if state.common.shell.read().zoom_state().is_some() {
|
||||
event
|
||||
.location
|
||||
.as_global()
|
||||
|
|
@ -726,7 +726,7 @@ impl TouchGrab<State> for MenuGrab {
|
|||
let mut guard = self.elements.lock().unwrap();
|
||||
let elements = &mut *guard;
|
||||
let event_location = if let Some(output) = self.screen_space_relative.as_ref() {
|
||||
if data.common.shell.read().unwrap().zoom_state().is_some() {
|
||||
if data.common.shell.read().zoom_state().is_some() {
|
||||
event
|
||||
.location
|
||||
.as_global()
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ pub struct MoveGrab {
|
|||
|
||||
impl MoveGrab {
|
||||
fn update_location(&mut self, state: &mut State, location: Point<f64, Logical>) {
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
|
||||
let Some(current_output) = shell
|
||||
.outputs()
|
||||
|
|
@ -792,7 +792,7 @@ impl Drop for MoveGrab {
|
|||
if grab_state.window.alive() {
|
||||
let window_location =
|
||||
(grab_state.location.to_i32_round() + grab_state.window_offset).as_global();
|
||||
let mut shell = state.common.shell.write().unwrap();
|
||||
let mut shell = state.common.shell.write();
|
||||
|
||||
let workspace_handle = shell.active_space(&output).unwrap().handle;
|
||||
for old_output in window_outputs.iter().filter(|o| *o != &output) {
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ impl ResizeForkGrab {
|
|||
self.last_loc = location.as_global();
|
||||
|
||||
if let Some(output) = self.output.upgrade() {
|
||||
let mut shell = data.common.shell.write().unwrap();
|
||||
let mut shell = data.common.shell.write();
|
||||
let Some(workspace) = shell.active_space_mut(&output) else {
|
||||
return false;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ impl KeyboardGrab<State> for SwapWindowGrab {
|
|||
serial: Serial,
|
||||
time: u32,
|
||||
) {
|
||||
if !matches!(&data.common.shell.read().unwrap().overview_mode.active_trigger(), Some(Trigger::KeyboardSwap(_, d)) if d == &self.desc)
|
||||
if !matches!(&data.common.shell.read().overview_mode.active_trigger(), Some(Trigger::KeyboardSwap(_, d)) if d == &self.desc)
|
||||
{
|
||||
handle.unset_grab(self, data, serial, false);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1309,7 +1309,7 @@ pub struct InvalidWorkspaceIndex;
|
|||
|
||||
impl Common {
|
||||
pub fn add_output(&mut self, output: &Output) {
|
||||
let mut shell = self.shell.write().unwrap();
|
||||
let mut shell = self.shell.write();
|
||||
shell
|
||||
.workspaces
|
||||
.add_output(output, &mut self.workspace_state.update());
|
||||
|
|
@ -1333,7 +1333,7 @@ impl Common {
|
|||
}
|
||||
|
||||
pub fn remove_output(&mut self, output: &Output) {
|
||||
let mut shell = self.shell.write().unwrap();
|
||||
let mut shell = self.shell.write();
|
||||
let shell_ref = &mut *shell;
|
||||
shell_ref.workspaces.remove_output(
|
||||
output,
|
||||
|
|
@ -1351,7 +1351,7 @@ impl Common {
|
|||
return;
|
||||
}
|
||||
|
||||
let mut shell = self.shell.write().unwrap();
|
||||
let mut shell = self.shell.write();
|
||||
shell
|
||||
.workspaces
|
||||
.migrate_workspace(from, to, handle, &mut self.workspace_state.update());
|
||||
|
|
@ -1360,7 +1360,7 @@ impl Common {
|
|||
}
|
||||
|
||||
pub fn update_config(&mut self) {
|
||||
let mut shell = self.shell.write().unwrap();
|
||||
let mut shell = self.shell.write();
|
||||
let shell_ref = &mut *shell;
|
||||
shell_ref.active_hint = self.config.cosmic_conf.active_hint;
|
||||
if let Some(zoom_state) = shell_ref.zoom_state.as_mut() {
|
||||
|
|
@ -1388,7 +1388,7 @@ impl Common {
|
|||
pub fn refresh(&mut self) {
|
||||
self.xdg_activation_state
|
||||
.retain_tokens(|_, data| data.timestamp.elapsed() < ACTIVATION_TOKEN_EXPIRE_TIME);
|
||||
self.shell.write().unwrap().refresh(
|
||||
self.shell.write().refresh(
|
||||
&self.xdg_activation_state,
|
||||
&mut self.workspace_state.update(),
|
||||
);
|
||||
|
|
@ -1410,7 +1410,7 @@ impl Common {
|
|||
|
||||
pub fn on_commit(&mut self, surface: &WlSurface) {
|
||||
{
|
||||
let shell = self.shell.read().unwrap();
|
||||
let shell = self.shell.read();
|
||||
|
||||
for seat in shell.seats.iter() {
|
||||
if let Some(move_grab) = seat.user_data().get::<SeatMoveGrabState>() {
|
||||
|
|
|
|||
|
|
@ -539,14 +539,7 @@ impl Program for ZoomProgram {
|
|||
match message {
|
||||
ZoomMessage::Decrease => {
|
||||
let _ = loop_handle.insert_idle(|state| {
|
||||
let seat = state
|
||||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.seats
|
||||
.last_active()
|
||||
.clone();
|
||||
let seat = state.common.shell.read().seats.last_active().clone();
|
||||
let increment =
|
||||
state.common.config.cosmic_conf.accessibility_zoom.increment as f64 / 100.0;
|
||||
|
||||
|
|
@ -555,14 +548,7 @@ impl Program for ZoomProgram {
|
|||
}
|
||||
ZoomMessage::Increase => {
|
||||
let _ = loop_handle.insert_idle(|state| {
|
||||
let seat = state
|
||||
.common
|
||||
.shell
|
||||
.read()
|
||||
.unwrap()
|
||||
.seats
|
||||
.last_active()
|
||||
.clone();
|
||||
let seat = state.common.shell.read().seats.last_active().clone();
|
||||
let increment =
|
||||
state.common.config.cosmic_conf.accessibility_zoom.increment as f64 / 100.0;
|
||||
|
||||
|
|
@ -576,7 +562,7 @@ impl Program for ZoomProgram {
|
|||
if let Some(start_data) =
|
||||
check_grab_preconditions(&seat, Some(serial), None)
|
||||
{
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
let output = seat.active_output();
|
||||
|
||||
if shell.zoom_state().is_some() {
|
||||
|
|
@ -741,7 +727,7 @@ impl Program for ZoomProgram {
|
|||
if let Some(start_data) =
|
||||
check_grab_preconditions(&seat, Some(serial), None)
|
||||
{
|
||||
let shell = state.common.shell.read().unwrap();
|
||||
let shell = state.common.shell.read();
|
||||
let output = seat.active_output();
|
||||
|
||||
if shell.zoom_state().is_some() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue