summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-12-03 06:47:04 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2022-12-03 06:49:07 -0500
commitf033fd390eaf23be3e94cc503c92f065660b4d72 (patch)
treee134cd6ce8f86645e080d189afc1dc2db96cc29c
parent98c7505c60714d216814ababe645ed86785f2aec (diff)
downloadrockbox-f033fd390eaf23be3e94cc503c92f065660b4d72.tar.gz
rockbox-f033fd390eaf23be3e94cc503c92f065660b4d72.zip
Fix Red playlist update a few functions
Change-Id: I0d9b4c8f7e4b128dd7378c6b7515f8195534fce7
-rw-r--r--apps/playlist.c39
-rw-r--r--apps/playlist.h2
2 files changed, 24 insertions, 17 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 23195b4417..abfefa7e8d 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -203,10 +203,10 @@ static void copy_filerefs(struct dircache_fileref *dcfto,
203/* Check if the filename suggests M3U or M3U8 format. */ 203/* Check if the filename suggests M3U or M3U8 format. */
204static bool is_m3u8(const char* filename) 204static bool is_m3u8(const char* filename)
205{ 205{
206 int len = strlen(filename); 206 char *dot = strrchr(filename, '.');
207 207
208 /* Default to M3U8 unless explicitly told otherwise. */ 208 /* Default to M3U8 unless explicitly told otherwise. */
209 return !(len > 4 && strcasecmp(&filename[len - 4], ".m3u") == 0); 209 return (!dot || strcasecmp(dot, ".m3u") != 0);
210} 210}
211 211
212 212
@@ -468,20 +468,21 @@ static void update_playlist_filename(struct playlist_info* playlist,
468 */ 468 */
469static void empty_playlist(struct playlist_info* playlist, bool resume) 469static void empty_playlist(struct playlist_info* playlist, bool resume)
470{ 470{
471 playlist->filename[0] = '\0';
472 playlist->utf8 = true; 471 playlist->utf8 = true;
472 playlist->control_created = false;
473 playlist->in_ram = false;
473 474
474 if(playlist->fd >= 0) 475 if(playlist->fd >= 0) /* If there is an already open playlist, close it. */
475 /* If there is an already open playlist, close it. */ 476 {
476 close(playlist->fd); 477 close(playlist->fd);
478 }
477 playlist->fd = -1; 479 playlist->fd = -1;
478 480
479 if(playlist->control_fd >= 0) 481 if(playlist->control_fd >= 0)
480 close(playlist->control_fd); 482 close(playlist->control_fd);
481 playlist->control_fd = -1; 483 playlist->control_fd = -1;
482 playlist->control_created = false;
483 484
484 playlist->in_ram = false; 485 playlist->num_inserted_tracks = 0;
485 486
486 if (playlist->buffer) 487 if (playlist->buffer)
487 playlist->buffer[0] = 0; 488 playlist->buffer[0] = 0;
@@ -492,14 +493,16 @@ static void empty_playlist(struct playlist_info* playlist, bool resume)
492 playlist->first_index = 0; 493 playlist->first_index = 0;
493 playlist->amount = 0; 494 playlist->amount = 0;
494 playlist->last_insert_pos = -1; 495 playlist->last_insert_pos = -1;
495 playlist->seed = 0; 496
496 playlist->shuffle_modified = false;
497 playlist->deleted = false; 497 playlist->deleted = false;
498 playlist->num_inserted_tracks = 0;
499 playlist->started = false; 498 playlist->started = false;
499 playlist->pending_control_sync = false;
500 playlist->shuffle_modified = false;
500 501
502 playlist->seed = 0;
501 playlist->num_cached = 0; 503 playlist->num_cached = 0;
502 playlist->pending_control_sync = false; 504
505 playlist->filename[0] = '\0';
503 506
504 if (!resume && playlist->current) 507 if (!resume && playlist->current)
505 { 508 {
@@ -656,19 +659,23 @@ static void display_playlist_count(int count, const unsigned char *fmt,
656{ 659{
657 static long talked_tick = 0; 660 static long talked_tick = 0;
658 long id = P2ID(fmt); 661 long id = P2ID(fmt);
659 if(global_settings.talk_menu && id>=0) 662
663 if(id >= 0 && global_settings.talk_menu)
660 { 664 {
661 if(final || (count && (talked_tick == 0 665 long next_tick = talked_tick + (HZ * 5);
662 || TIME_AFTER(current_tick, talked_tick+5*HZ)))) 666
667 if (final || talked_tick == 0)
668 next_tick = current_tick - 1;
669
670 if(count && TIME_AFTER(current_tick, next_tick))
663 { 671 {
664 talked_tick = current_tick; 672 talked_tick = current_tick;
665 talk_number(count, false); 673 talk_number(count, false);
666 talk_id(id, true); 674 talk_id(id, true);
667 } 675 }
668 } 676 }
669 fmt = P2STR(fmt);
670 677
671 splashf(0, fmt, count, str(LANG_OFF_ABORT)); 678 splashf(0, P2STR(fmt), count, str(LANG_OFF_ABORT));
672} 679}
673 680
674 681
diff --git a/apps/playlist.h b/apps/playlist.h
index 0ecc7ccf77..ab2afefddd 100644
--- a/apps/playlist.h
+++ b/apps/playlist.h
@@ -103,7 +103,7 @@ struct playlist_info
103 to disk */ 103 to disk */
104 struct playlist_control_cache control_cache[PLAYLIST_MAX_CACHE]; 104 struct playlist_control_cache control_cache[PLAYLIST_MAX_CACHE];
105 int num_cached; /* number of cached entries */ 105 int num_cached; /* number of cached entries */
106 struct mutex mutex; /* mutex for control file access */ 106 struct mutex *control_mutex; /* mutex for control file access */
107#ifdef HAVE_DIRCACHE 107#ifdef HAVE_DIRCACHE
108 struct dircache_fileref *dcfrefs; /* Dircache entry shortcuts */ 108 struct dircache_fileref *dcfrefs; /* Dircache entry shortcuts */
109#endif 109#endif