fuzzers/common: stop after 15 events if there is not playback reset
We wait for timeout and stop fuzzing, but if there are events spammed this timeout never fire, so instead limit the number of events after playback reset.
This commit is contained in:
1 parent
84596abd83
commit
88f34229c6
1 file changed
+10
@@ -52,19 +52,29 @@ static inline bool str_startswith(const char *str, size_t str_len,
|
||||
#define PLAYBACK_TIME_LIMIT 5
|
||||
#endif
|
||||
|
||||
#ifndef EVENTS_LIMIT
|
||||
#define EVENTS_LIMIT 10
|
||||
#endif
|
||||
|
||||
static inline void player_loop(mpv_handle *ctx)
|
||||
{
|
||||
bool playing = false;
|
||||
bool loaded = false;
|
||||
int timeout = -1;
|
||||
int events_limit_after_restart = EVENTS_LIMIT;
|
||||
while (1) {
|
||||
mpv_event *event = mpv_wait_event(ctx, timeout);
|
||||
// If some events are spamming, like audio-reconfig preventing our
|
||||
// timeout to trigger stop after N events.
|
||||
if (timeout == PLAYBACK_TIME_LIMIT && events_limit_after_restart-- < 0)
|
||||
break;
|
||||
if (timeout == PLAYBACK_TIME_LIMIT && event->event_id == MPV_EVENT_NONE)
|
||||
break;
|
||||
if (event->event_id == MPV_EVENT_START_FILE)
|
||||
loaded = playing = true;
|
||||
if (event->event_id == MPV_EVENT_END_FILE) {
|
||||
playing = false;
|
||||
events_limit_after_restart = EVENTS_LIMIT;
|
||||
timeout = -1;
|
||||
}
|
||||
if (playing && event->event_id == MPV_EVENT_PLAYBACK_RESTART)
|
||||
|
||||
Reference in new issue
Block a user