mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-05-04 02:38:01 +02:00
test: handle frame events in passive ei contexts by default
This is a copy of the EIS handling of frame events where we largely skip over them to make the tests more sensible.
This commit is contained in:
parent
9831b4c98b
commit
e25586a96c
2 changed files with 28 additions and 0 deletions
|
|
@ -344,6 +344,7 @@ peck_new_context(enum peck_ei_mode ei_mode)
|
|||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOCONNECT);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOSEAT);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOSTART);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_HANDLE_FRAME);
|
||||
|
||||
peck->logger = logger_new("peck", peck);
|
||||
logger_set_handler(peck->logger, peck_log_handler);
|
||||
|
|
@ -442,6 +443,7 @@ peck_enable_ei_behavior(struct peck *peck, enum peck_ei_behavior behavior)
|
|||
case PECK_EI_BEHAVIOR_HANDLE_ADDED_POINTER_ABSOLUTE:
|
||||
case PECK_EI_BEHAVIOR_HANDLE_ADDED_KEYBOARD:
|
||||
case PECK_EI_BEHAVIOR_HANDLE_ADDED_TOUCH:
|
||||
case PECK_EI_BEHAVIOR_HANDLE_FRAME:
|
||||
flag_set(peck->ei_behavior, behavior);
|
||||
break;
|
||||
case PECK_EI_BEHAVIOR_HANDLE_RESUMED:
|
||||
|
|
@ -802,6 +804,10 @@ _peck_dispatch_ei(struct peck *peck, int lineno)
|
|||
if (flag_is_set(peck->ei_behavior, PECK_EI_BEHAVIOR_HANDLE_PAUSED))
|
||||
process_event = tristate_yes;
|
||||
break;
|
||||
case EI_EVENT_FRAME:
|
||||
if (flag_is_set(peck->ei_behavior, PECK_EI_BEHAVIOR_HANDLE_FRAME))
|
||||
process_event = tristate_yes;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -929,11 +935,20 @@ peck_drain_ei(struct ei *ei)
|
|||
void
|
||||
peck_assert_no_ei_events(struct ei *ei)
|
||||
{
|
||||
struct peck *peck = ei_get_user_data(ei);
|
||||
|
||||
ei_dispatch(ei);
|
||||
while (true) {
|
||||
_unref_(ei_event) *e = ei_get_event(ei);
|
||||
if (!e)
|
||||
return;
|
||||
|
||||
if (peck && flag_is_set(peck->ei_behavior, PECK_EI_BEHAVIOR_HANDLE_FRAME) &&
|
||||
ei_event_get_type(e) == EI_EVENT_FRAME) {
|
||||
log_debug(peck, "Skipping over frame event\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
munit_errorf("Expected empty event queue, have: %s\n",
|
||||
peck_ei_event_name(e));
|
||||
}
|
||||
|
|
@ -967,6 +982,14 @@ _peck_ei_next_event(struct ei *ei, enum ei_event_type type, int lineno)
|
|||
struct ei_event *event = ei_get_event(ei);
|
||||
struct peck *peck = ei_get_user_data(ei);
|
||||
|
||||
if (flag_is_set(peck->ei_behavior, PECK_EI_BEHAVIOR_HANDLE_FRAME)) {
|
||||
while (event && ei_event_get_type(event) == EI_EVENT_FRAME) {
|
||||
ei_event_unref(event);
|
||||
log_debug(peck, "Skipping over frame event\n");
|
||||
event = ei_get_event(ei);
|
||||
}
|
||||
}
|
||||
|
||||
if (!event)
|
||||
munit_errorf("Expected ei event type %s, got none, line %d\n",
|
||||
peck_ei_event_type_name(type),
|
||||
|
|
|
|||
|
|
@ -127,6 +127,11 @@ enum peck_ei_behavior {
|
|||
|
||||
PECK_EI_BEHAVIOR_HANDLE_RESUMED,
|
||||
PECK_EI_BEHAVIOR_HANDLE_PAUSED,
|
||||
|
||||
/**
|
||||
* Handle frame events. This behavior is enabled by default.
|
||||
*/
|
||||
PECK_EI_BEHAVIOR_HANDLE_FRAME,
|
||||
};
|
||||
|
||||
struct peck;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue