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:
Kacper Michajłow committed 2025-07-12 01:57:43 +02:00
1 parent 84596abd83
commit 88f34229c6
1 file changed
+10
+10
View File
@@ -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)