diff options
author | William Wilgus <wilgus.william@gmail.com> | 2023-10-11 07:09:47 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2023-10-11 07:12:31 -0400 |
commit | 3c89adbdbdd036baf313786b0694632c8e7e2bb3 (patch) | |
tree | 124cd94e9f463c03a4c21f03652b833f3b296a5f /apps/plugins | |
parent | 75befe19ef1bea25f1eca9fd4884835dfd1694a2 (diff) | |
download | rockbox-3c89adbdbdd036baf313786b0694632c8e7e2bb3.tar.gz rockbox-3c89adbdbdd036baf313786b0694632c8e7e2bb3.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
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/lastfm_scrobbler.c | 12 |
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); | |||
136 | static struct | 136 | static struct |
137 | { | 137 | { |
138 | bool exiting; /* signal to the thread that we want to exit */ | 138 | bool exiting; /* signal to the thread that we want to exit */ |
139 | bool hide_reentry; /* we may return on WPS fail, hide next invocation */ | ||
139 | unsigned int id; /* worker thread id */ | 140 | unsigned int id; /* worker thread id */ |
140 | struct event_queue queue; /* thread event queue */ | 141 | struct event_queue queue; /* thread event queue */ |
141 | struct queue_sender_list queue_send; | 142 | struct queue_sender_list queue_send; |
@@ -841,6 +842,13 @@ static int plugin_exit_tsr(bool reenter) | |||
841 | "Quit scrobbler?" }, 3 | 842 | "Quit scrobbler?" }, 3 |
842 | }; | 843 | }; |
843 | 844 | ||
845 | if (gThread.hide_reentry && | ||
846 | (rb->audio_status() & (AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE)) == 0) | ||
847 | { | ||
848 | gThread.hide_reentry = false; | ||
849 | return PLUGIN_TSR_CONTINUE; | ||
850 | } | ||
851 | |||
844 | while(true) | 852 | while(true) |
845 | { | 853 | { |
846 | int result = reenter ? rb->do_menu(&menu, NULL, NULL, false) : 2; | 854 | int result = reenter ? rb->do_menu(&menu, NULL, NULL, false) : 2; |
@@ -897,8 +905,10 @@ static int plugin_main(const void* parameter) | |||
897 | rb->memcpy(&gConfig, &cfg, sizeof(struct scrobbler_cfg)); /*restore settings */ | 905 | rb->memcpy(&gConfig, &cfg, sizeof(struct scrobbler_cfg)); /*restore settings */ |
898 | 906 | ||
899 | if (gConfig.playback) | 907 | if (gConfig.playback) |
908 | { | ||
909 | gThread.hide_reentry = true; | ||
900 | return PLUGIN_GOTO_WPS; | 910 | return PLUGIN_GOTO_WPS; |
901 | 911 | } | |
902 | return PLUGIN_OK; | 912 | return PLUGIN_OK; |
903 | } | 913 | } |
904 | 914 | ||