summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2023-10-11 07:09:47 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2023-10-11 07:12:31 -0400
commit3c89adbdbdd036baf313786b0694632c8e7e2bb3 (patch)
tree124cd94e9f463c03a4c21f03652b833f3b296a5f
parent75befe19ef1bea25f1eca9fd4884835dfd1694a2 (diff)
downloadrockbox-3c89adbdbd.tar.gz
rockbox-3c89adbdbd.zip
[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
-rw-r--r--apps/plugins/lastfm_scrobbler.c12
1 files changed, 11 insertions, 1 deletions
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;
}