From 3c89adbdbdd036baf313786b0694632c8e7e2bb3 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Wed, 11 Oct 2023 07:09:47 -0400 Subject: [Feature] lastfm_scrobbler don't return to plugin on WPS resume failure if resume playback on start was set and there was nothing to resume the menu was entered Change-Id: Iab5f48e94f3de68091cf42781d6e3ab4575c1a84 --- apps/plugins/lastfm_scrobbler.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'apps/plugins/lastfm_scrobbler.c') diff --git a/apps/plugins/lastfm_scrobbler.c b/apps/plugins/lastfm_scrobbler.c index ca6f9aa8f5..2c0597656c 100644 --- a/apps/plugins/lastfm_scrobbler.c +++ b/apps/plugins/lastfm_scrobbler.c @@ -136,6 +136,7 @@ void play_tone(unsigned int frequency, unsigned int duration); static struct { bool exiting; /* signal to the thread that we want to exit */ + bool hide_reentry; /* we may return on WPS fail, hide next invocation */ unsigned int id; /* worker thread id */ struct event_queue queue; /* thread event queue */ struct queue_sender_list queue_send; @@ -841,6 +842,13 @@ static int plugin_exit_tsr(bool reenter) "Quit scrobbler?" }, 3 }; + if (gThread.hide_reentry && + (rb->audio_status() & (AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE)) == 0) + { + gThread.hide_reentry = false; + return PLUGIN_TSR_CONTINUE; + } + while(true) { int result = reenter ? rb->do_menu(&menu, NULL, NULL, false) : 2; @@ -897,8 +905,10 @@ static int plugin_main(const void* parameter) rb->memcpy(&gConfig, &cfg, sizeof(struct scrobbler_cfg)); /*restore settings */ if (gConfig.playback) + { + gThread.hide_reentry = true; return PLUGIN_GOTO_WPS; - + } return PLUGIN_OK; } -- cgit v1.2.3