state: Fixup grabbed window frame callbacks
This commit is contained in:
parent
db38cf434a
commit
96518a9f29
2 changed files with 21 additions and 30 deletions
|
|
@ -39,16 +39,9 @@ use smithay::{
|
||||||
Seat,
|
Seat,
|
||||||
},
|
},
|
||||||
output::Output,
|
output::Output,
|
||||||
reexports::wayland_server::protocol::wl_surface::WlSurface,
|
|
||||||
utils::{IsAlive, Logical, Point, Rectangle, Scale, SERIAL_COUNTER},
|
utils::{IsAlive, Logical, Point, Rectangle, Scale, SERIAL_COUNTER},
|
||||||
wayland::compositor::SurfaceData,
|
|
||||||
};
|
|
||||||
use std::{
|
|
||||||
cell::RefCell,
|
|
||||||
collections::HashSet,
|
|
||||||
sync::atomic::Ordering,
|
|
||||||
time::{Duration, Instant},
|
|
||||||
};
|
};
|
||||||
|
use std::{cell::RefCell, collections::HashSet, sync::atomic::Ordering, time::Instant};
|
||||||
|
|
||||||
use super::ReleaseMode;
|
use super::ReleaseMode;
|
||||||
|
|
||||||
|
|
@ -199,18 +192,6 @@ impl MoveGrabState {
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn send_frames(
|
|
||||||
&self,
|
|
||||||
output: &Output,
|
|
||||||
time: impl Into<Duration>,
|
|
||||||
throttle: Option<Duration>,
|
|
||||||
primary_scan_out_output: impl FnMut(&WlSurface, &SurfaceData) -> Option<Output> + Copy,
|
|
||||||
) {
|
|
||||||
self.window
|
|
||||||
.active_window()
|
|
||||||
.send_frame(output, time, throttle, primary_scan_out_output)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn window(&self) -> CosmicSurface {
|
pub fn window(&self) -> CosmicSurface {
|
||||||
self.window.active_window()
|
self.window.active_window()
|
||||||
}
|
}
|
||||||
|
|
@ -558,10 +539,9 @@ impl Drop for MoveGrab {
|
||||||
|
|
||||||
Some((window, location.to_global(&output)))
|
Some((window, location.to_global(&output)))
|
||||||
}
|
}
|
||||||
ManagedLayer::Tiling if state
|
ManagedLayer::Tiling
|
||||||
.common
|
if state.common.shell.active_space(&output).tiling_enabled =>
|
||||||
.shell
|
{
|
||||||
.active_space(&output).tiling_enabled => {
|
|
||||||
let (window, location) = state
|
let (window, location) = state
|
||||||
.common
|
.common
|
||||||
.shell
|
.shell
|
||||||
|
|
|
||||||
23
src/state.rs
23
src/state.rs
|
|
@ -596,13 +596,24 @@ impl Common {
|
||||||
|
|
||||||
if let Some(move_grab) = seat.user_data().get::<SeatMoveGrabState>() {
|
if let Some(move_grab) = seat.user_data().get::<SeatMoveGrabState>() {
|
||||||
if let Some(grab_state) = move_grab.borrow().as_ref() {
|
if let Some(grab_state) = move_grab.borrow().as_ref() {
|
||||||
grab_state.send_frames(
|
|
||||||
output,
|
|
||||||
time,
|
|
||||||
throttle,
|
|
||||||
surface_primary_scanout_output,
|
|
||||||
);
|
|
||||||
let window = grab_state.window();
|
let window = grab_state.window();
|
||||||
|
window.with_surfaces(|surface, states| {
|
||||||
|
let primary_scanout_output = update_surface_primary_scanout_output(
|
||||||
|
surface,
|
||||||
|
output,
|
||||||
|
states,
|
||||||
|
render_element_states,
|
||||||
|
default_primary_scanout_output_compare,
|
||||||
|
);
|
||||||
|
if let Some(output) = primary_scanout_output {
|
||||||
|
with_fractional_scale(states, |fraction_scale| {
|
||||||
|
fraction_scale.set_preferred_scale(
|
||||||
|
output.current_scale().fractional_scale(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
window.send_frame(output, time, throttle, surface_primary_scanout_output);
|
||||||
if let Some(feedback) = window
|
if let Some(feedback) = window
|
||||||
.wl_surface()
|
.wl_surface()
|
||||||
.and_then(|wl_surface| {
|
.and_then(|wl_surface| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue