Send wl_pointer.frame when emulating pointer events out of touch ones

When touching a surface that doesn't register to wl_touch events, KWin
didn't send frame events (which it does for regular pointer and touch
events), causing severe updating issues with some clients.

Test Plan:
Launch a client that doesn't attach to wl_touch (for instance,
rootston) with WAYLAND_DEBUG=client and watch the logs while touching
its window.
This commit is contained in:
Sebastian Krzyszkowiak 2019-07-14 20:18:00 +02:00
parent e84c1dcac2
commit 4da1822100

View file

@ -1470,6 +1470,7 @@ void SeatInterface::touchMove(qint32 id, const QPointF &globalPosition)
[this, pos] (PointerInterface *p) {
wl_pointer_send_motion(p->resource(), timestamp(),
wl_fixed_from_double(pos.x()), wl_fixed_from_double(pos.y()));
p->d_func()->sendFrame();
}
);
}
@ -1497,6 +1498,7 @@ void SeatInterface::touchUp(qint32 id)
forEachInterface<PointerInterface>(focusedTouchSurface(), d->pointers,
[this, serial] (PointerInterface *p) {
wl_pointer_send_button(p->resource(), serial, timestamp(), BTN_LEFT, WL_POINTER_BUTTON_STATE_RELEASED);
p->d_func()->sendFrame();
}
);
}