fix: test TabletServer initialization on Enter
Previously, a `zwp_tablet_pad_v2` `Enter` event would attempt to initialize the clientside tablet. Since initializing the clientside tablet is the job of `zwp_tablet_seat_v2` `TabletAdded` event, it would be already initialized, which triggers an `expect` in `LateInitObjectKey::init`. To remedy this, the `Enter` event instead checks for an initialized tablet before entering, and early returns otherwise.
This commit is contained in:
parent
ed1cef792b
commit
7af39ce419
1 changed files with 9 additions and 4 deletions
|
|
@ -1514,7 +1514,6 @@ impl Event for zwp_tablet_pad_v2::Event {
|
||||||
tablet,
|
tablet,
|
||||||
surface,
|
surface,
|
||||||
} => {
|
} => {
|
||||||
let (e_tab, s_tablet) = from_client::<TabletServer, _, _>(&tablet, state);
|
|
||||||
let Some(surface) = surface
|
let Some(surface) = surface
|
||||||
.data()
|
.data()
|
||||||
.copied()
|
.copied()
|
||||||
|
|
@ -1522,10 +1521,16 @@ impl Event for zwp_tablet_pad_v2::Event {
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
let Some(s_tablet) =
|
||||||
|
tablet
|
||||||
|
.data()
|
||||||
|
.and_then(|key: &LateInitObjectKey<TabletClient>| {
|
||||||
|
state.world.get::<&TabletServer>(key.get()).ok()
|
||||||
|
})
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
pad.enter(serial, &s_tablet, &surface);
|
pad.enter(serial, &s_tablet, &surface);
|
||||||
drop(pad);
|
|
||||||
drop(surface);
|
|
||||||
state.world.spawn_at(e_tab, (tablet, s_tablet));
|
|
||||||
}
|
}
|
||||||
_ => simple_event_shunt! {
|
_ => simple_event_shunt! {
|
||||||
pad, self => [
|
pad, self => [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue