x11:wayland: fix pump_events blocking with Wait

Using `Duration::Zero` with `Wait` polling mode was still blocking until
the event was actually delivered. Thus when `pump_events` API is used,
ensure that it's not happening.

Fixes #4130.
This commit is contained in:
Kirill Chibisov
2025-03-17 13:20:17 +03:00
parent c591089ece
commit c6cfa048b0
3 changed files with 6 additions and 1 deletions

View File

@@ -285,7 +285,10 @@ impl<T: 'static> EventLoop<T> {
// Reduce spurious wake-ups.
let dispatched_events = self.with_state(|state| state.dispatched_events);
if matches!(cause, StartCause::WaitCancelled { .. }) && !dispatched_events {
if matches!(cause, StartCause::WaitCancelled { .. })
&& !dispatched_events
&& timeout.is_none()
{
continue;
}

View File

@@ -497,6 +497,7 @@ impl<T: 'static> EventLoop<T> {
// If we don't have any pending `_receiver`
if !self.has_pending()
&& !matches!(&cause, StartCause::ResumeTimeReached { .. } | StartCause::Poll)
&& timeout.is_none()
{
return;
}