1
0
Fork 0
forked from wry/wry

all: implement damage tracking

This commit is contained in:
Julian Orth 2024-07-10 19:58:17 +02:00
parent 76a3c50560
commit bb66abb817
28 changed files with 473 additions and 82 deletions

View file

@ -167,6 +167,10 @@ pub trait XdgSurfaceExt: Debug {
fn extents_changed(&self) {
// nothing
}
fn geometry_changed(&self) {
// nothing
}
}
impl XdgSurface {
@ -258,6 +262,12 @@ impl XdgSurface {
}
}
pub fn damage(&self) {
let (x, y) = self.surface.buffer_abs_pos.get().position();
let extents = self.surface.extents.get();
self.surface.client.state.damage(extents.move_(x, y));
}
pub fn geometry(&self) -> Option<Rect> {
self.geometry.get()
}
@ -497,6 +507,9 @@ impl SurfaceExt for XdgSurface {
if prev != Some(geometry) {
self.update_extents();
self.update_surface_position();
if let Some(ext) = self.ext.get() {
ext.geometry_changed();
}
}
}
}