summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2023-01-21 21:05:02 +0000
committerAidan MacDonald <amachronic@protonmail.com>2023-01-23 12:24:12 +0000
commitce52d0c870f715ee979a1bf5e51857c200543d9d (patch)
treefe09ebde934dc6072a2b6cfb0a35141f59d4839f
parent2a40d420120c051b9ee79a0086059b5f2059a013 (diff)
downloadrockbox-ce52d0c870.tar.gz
rockbox-ce52d0c870.zip
playlist: Fix mutex initialization
This is a one-time thing; make sure it doesn't happen more than once. Change-Id: Ic42f48e5714dff2906c252ecd091989d2d6e5a86
-rw-r--r--apps/playlist.c12
-rw-r--r--apps/playlist_viewer.c9
2 files changed, 12 insertions, 9 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 48933664a0..7b7b91c22f 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -592,13 +592,6 @@ static void empty_playlist_unlocked(struct playlist_info* playlist, bool resume)
}
}
-/* initializes the mutex for a new playlist and sets it as empty */
-static void initalize_new_playlist(struct playlist_info* playlist, bool resume)
-{
- mutex_init(&(playlist->mutex));
- empty_playlist_unlocked(playlist, resume);
-}
-
/*
* Returns absolute path of track
*
@@ -668,7 +661,7 @@ static void new_playlist_unlocked(struct playlist_info* playlist,
const char *fileused = file;
const char *dirused = dir;
- initalize_new_playlist(playlist, false);
+ empty_playlist_unlocked(playlist, false);
if (!fileused)
{
@@ -2079,6 +2072,7 @@ void playlist_init(void)
{
int handle;
struct playlist_info* playlist = &current_playlist;
+ mutex_init(&playlist->mutex);
strmemccpy(playlist->control_filename, PLAYLIST_CONTROL_FILE,
sizeof(playlist->control_filename));
@@ -2089,7 +2083,7 @@ void playlist_init(void)
handle = core_alloc_ex(playlist->max_playlist_size * sizeof(*playlist->indices), &ops);
playlist->indices = core_get_data(handle);
- initalize_new_playlist(playlist, true);
+ empty_playlist_unlocked(playlist, true);
#ifdef HAVE_DIRCACHE
playlist->dcfrefs_handle = core_alloc(
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 4e3d8bade2..4328a6de1d 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -119,6 +119,7 @@ static struct playlist_viewer viewer;
/* Used when viewing playlists on disk */
static struct playlist_info temp_playlist;
+static bool temp_playlist_init = false;
static bool dirty = false;
@@ -365,6 +366,14 @@ static bool playlist_viewer_init(struct playlist_viewer * viewer,
char *index_buffer = NULL;
ssize_t index_buffer_size = 0;
+ /* Initialize temp playlist
+ * TODO - move this to playlist.c */
+ if (!temp_playlist_init)
+ {
+ mutex_init(&temp_playlist.mutex);
+ temp_playlist_init = true;
+ }
+
viewer->playlist = &temp_playlist;
/* Separate directory from filename */