seat: handle surface cursor lifetimes explicitly
This commit is contained in:
parent
566a05494a
commit
be0935c8dd
4 changed files with 6 additions and 1 deletions
|
|
@ -879,6 +879,7 @@ impl WlSeatGlobal {
|
|||
old.handle_unset();
|
||||
}
|
||||
if let Some(cursor) = cursor.as_ref() {
|
||||
cursor.clone().handle_set();
|
||||
cursor.set_output(&self.output.get());
|
||||
}
|
||||
self.cursor.set(cursor.clone());
|
||||
|
|
|
|||
|
|
@ -620,7 +620,6 @@ impl WlSurface {
|
|||
let cursor = Rc::new(CursorSurface::new(seat, self));
|
||||
track!(self.client, cursor);
|
||||
cursor.handle_buffer_change();
|
||||
self.cursors.insert(seat.id(), cursor.clone());
|
||||
Ok(cursor)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -123,6 +123,10 @@ impl Cursor for CursorSurface {
|
|||
self.surface.set_output(output);
|
||||
}
|
||||
|
||||
fn handle_set(self: Rc<Self>) {
|
||||
self.surface.cursors.insert(self.seat.id(), self.clone());
|
||||
}
|
||||
|
||||
fn handle_unset(&self) {
|
||||
self.surface.cursors.remove(&self.seat.id());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue