surface: process offset request without a buffer change
This commit is contained in:
parent
adf6d2ae2b
commit
9cddeb964d
9 changed files with 98 additions and 11 deletions
|
|
@ -910,14 +910,6 @@ impl WlSurface {
|
|||
release,
|
||||
};
|
||||
self.buffer.set(Some(Rc::new(surface_buffer)));
|
||||
self.buf_x.fetch_add(dx);
|
||||
self.buf_y.fetch_add(dy);
|
||||
if (dx, dy) != (0, 0) {
|
||||
self.need_extents_update.set(true);
|
||||
for (_, cursor) in &self.cursors {
|
||||
cursor.dec_hotspot(dx, dy);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.buf_x.set(0);
|
||||
self.buf_y.set(0);
|
||||
|
|
@ -926,6 +918,14 @@ impl WlSurface {
|
|||
}
|
||||
}
|
||||
}
|
||||
if self.buffer.is_some() && (dx, dy) != (0, 0) {
|
||||
self.buf_x.fetch_add(dx);
|
||||
self.buf_y.fetch_add(dy);
|
||||
self.need_extents_update.set(true);
|
||||
for (_, cursor) in &self.cursors {
|
||||
cursor.dec_hotspot(dx, dy);
|
||||
}
|
||||
}
|
||||
let transform_changed = viewport_changed || scale_changed || buffer_transform_changed;
|
||||
if buffer_changed || transform_changed {
|
||||
let mut buffer_points = self.buffer_points.borrow_mut();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue