summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoshe Piekarski <dev.rockbox@melachim.net>2021-10-31 02:56:46 -0400
committerMoshe Piekarski <dev.rockbox@melachim.net>2021-11-05 09:20:04 -0400
commit13ac48562544eada909ee39a63d5b87afe51b219 (patch)
treeef8440cca0535d2a15eb3b9e764095345c7ce7b7
parent22c2e0a7c2be5bdc4a8ca0662c561454f5fb623a (diff)
downloadrockbox-13ac485625.tar.gz
rockbox-13ac485625.zip
Add single playback mode
(FS#482) Change-Id: I8b4c3e4ffb6975122153e82f2b9848c382195163
-rw-r--r--apps/lang/english-us.lang14
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/lang/hebrew.lang14
-rw-r--r--apps/menus/playback_menu.c3
-rw-r--r--apps/pcmbuf.c3
-rw-r--r--apps/playback.c8
-rw-r--r--apps/settings.h1
-rw-r--r--apps/settings_list.c1
-rw-r--r--manual/configure_rockbox/playback_options.tex5
9 files changed, 62 insertions, 1 deletions
diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang
index 618ee114fd..6fac22c381 100644
--- a/apps/lang/english-us.lang
+++ b/apps/lang/english-us.lang
@@ -1300,6 +1300,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "Single Mode"
+ </dest>
+ <voice>
+ *: "Single Mode"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index dab9ed8508..69542b6627 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1376,6 +1376,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "Single Mode"
+ </dest>
+ <voice>
+ *: "Single Mode"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
diff --git a/apps/lang/hebrew.lang b/apps/lang/hebrew.lang
index 2f732f0eef..d4da2443b8 100644
--- a/apps/lang/hebrew.lang
+++ b/apps/lang/hebrew.lang
@@ -1461,6 +1461,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "מצב יחדי"
+ </dest>
+ <voice>
+ *: "מצב יחדי"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
diff --git a/apps/menus/playback_menu.c b/apps/menus/playback_menu.c
index 41c738725c..5f9479fae3 100644
--- a/apps/menus/playback_menu.c
+++ b/apps/menus/playback_menu.c
@@ -92,6 +92,7 @@ MENUITEM_SETTING(buffer_margin, &global_settings.buffer_margin,
buffermargin_callback);
#endif /*HAVE_DISK_STORAGE */
MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL);
+MENUITEM_SETTING(single_mode, &global_settings.single_mode, NULL);
MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL);
#ifdef HAVE_CROSSFADE
@@ -208,7 +209,7 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
#ifdef HAVE_DISK_STORAGE
&buffer_margin,
#endif
- &fade_on_stop, &party_mode,
+ &fade_on_stop, &single_mode, &party_mode,
#if defined(HAVE_CROSSFADE)
&crossfade_settings_menu,
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c
index 773e97cce0..c4164c3b4b 100644
--- a/apps/pcmbuf.c
+++ b/apps/pcmbuf.c
@@ -741,6 +741,9 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type)
}
}
+ if (auto_skip && global_settings.single_mode && !global_settings.party_mode)
+ crossfade = false;
+
if (crossfade)
{
logf("crossfade track change");
diff --git a/apps/playback.c b/apps/playback.c
index 5a6f18735b..1c5a7a4c9d 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2396,6 +2396,14 @@ static void audio_finalise_track_change(void)
id3_write(PLAYING_ID3, track_id3);
+ if (global_settings.single_mode)
+ if ( ((skip_pending == TRACK_SKIP_AUTO) || (skip_pending == TRACK_SKIP_AUTO_NEW_PLAYLIST))
+ && (global_settings.party_mode == 0) )
+ {
+ play_status = PLAY_PAUSED;
+ pcmbuf_pause(true);
+ }
+
/* The skip is technically over */
skip_pending = TRACK_SKIP_NONE;
diff --git a/apps/settings.h b/apps/settings.h
index fedec8e025..9b4c56467d 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -476,6 +476,7 @@ struct user_settings
int default_codepage; /* set default codepage for tag conversion */
bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */
bool play_selected; /* Plays selected file even in shuffle mode */
+ bool single_mode; /* single mode - stop after every track */
bool party_mode; /* party mode - unstoppable music */
bool audioscrobbler; /* Audioscrobbler logging */
bool cuesheet;
diff --git a/apps/settings_list.c b/apps/settings_list.c
index d9ffd8cf3e..4758c27113 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1238,6 +1238,7 @@ const struct settings_list settings[] = {
#endif
/* more playback */
OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL),
+ OFFON_SETTING(0,single_mode,LANG_SINGLE_MODE,false,"single mode",NULL),
OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL),
OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL),
INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1,
diff --git a/manual/configure_rockbox/playback_options.tex b/manual/configure_rockbox/playback_options.tex
index 7ddd3c6907..aa2cfff1d5 100644
--- a/manual/configure_rockbox/playback_options.tex
+++ b/manual/configure_rockbox/playback_options.tex
@@ -82,6 +82,11 @@ you to configure settings related to audio playback.
set to \setting{Yes}, your music will fade out when you stop or pause
playback, and fade in when you resume playback.
+\section{Single Mode}
+ If the Single Mode option is set to \setting{Yes}, your music
+ will pause at every automatic track change. Crossfade on track
+ change will be ignored if this setting is enabled.
+
\section{Party Mode}
Enables unstoppable music playback. When new songs are
selected, they are queued at the end of the current dynamic playlist