core: Unset "pointer emulating" sequence after event processing
The set/unset branches of meta_display_update_pointer_emulating_sequence() have been split and put directly where it makes sense. The pointer emulated sequence will be updated before processing the CLUTTER_TOUCH_BEGIN, and after processing the CLUTTER_TOUCH_END, this way the checks on this hold true during all the sequence lifetime. https://bugzilla.gnome.org/show_bug.cgi?id=738411
This commit is contained in:
parent
700d367937
commit
df384965c3
@ -151,23 +151,6 @@ sequence_is_pointer_emulated (MetaDisplay *display,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
meta_display_update_pointer_emulating_sequence (MetaDisplay *display,
|
|
||||||
const ClutterEvent *event)
|
|
||||||
{
|
|
||||||
ClutterEventSequence *sequence;
|
|
||||||
|
|
||||||
sequence = clutter_event_get_event_sequence (event);
|
|
||||||
|
|
||||||
if (event->type == CLUTTER_TOUCH_BEGIN &&
|
|
||||||
!display->pointer_emulating_sequence &&
|
|
||||||
sequence_is_pointer_emulated (display, event))
|
|
||||||
display->pointer_emulating_sequence = sequence;
|
|
||||||
else if (event->type == CLUTTER_TOUCH_END &&
|
|
||||||
display->pointer_emulating_sequence == sequence)
|
|
||||||
display->pointer_emulating_sequence = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_display_handle_event (MetaDisplay *display,
|
meta_display_handle_event (MetaDisplay *display,
|
||||||
const ClutterEvent *event)
|
const ClutterEvent *event)
|
||||||
@ -176,8 +159,15 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
gboolean bypass_clutter = FALSE;
|
gboolean bypass_clutter = FALSE;
|
||||||
G_GNUC_UNUSED gboolean bypass_wayland = FALSE;
|
G_GNUC_UNUSED gboolean bypass_wayland = FALSE;
|
||||||
MetaGestureTracker *tracker;
|
MetaGestureTracker *tracker;
|
||||||
|
ClutterEventSequence *sequence;
|
||||||
|
|
||||||
meta_display_update_pointer_emulating_sequence (display, event);
|
sequence = clutter_event_get_event_sequence (event);
|
||||||
|
|
||||||
|
/* Set the pointer emulating sequence on touch begin, if eligible */
|
||||||
|
if (event->type == CLUTTER_TOUCH_BEGIN &&
|
||||||
|
!display->pointer_emulating_sequence &&
|
||||||
|
sequence_is_pointer_emulated (display, event))
|
||||||
|
display->pointer_emulating_sequence = sequence;
|
||||||
|
|
||||||
#ifdef HAVE_WAYLAND
|
#ifdef HAVE_WAYLAND
|
||||||
MetaWaylandCompositor *compositor = NULL;
|
MetaWaylandCompositor *compositor = NULL;
|
||||||
@ -314,6 +304,11 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Unset the pointer emulating sequence after its end event is processed */
|
||||||
|
if (event->type == CLUTTER_TOUCH_END &&
|
||||||
|
display->pointer_emulating_sequence == sequence)
|
||||||
|
display->pointer_emulating_sequence = NULL;
|
||||||
|
|
||||||
display->current_time = CurrentTime;
|
display->current_time = CurrentTime;
|
||||||
return bypass_clutter;
|
return bypass_clutter;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user