summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/playlist.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 91ca1f640a..9a22addbc3 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -651,7 +651,8 @@ static int add_directory_to_playlist(struct playlist_info* playlist,
651 { 651 {
652 display_playlist_count(*count, count_str); 652 display_playlist_count(*count, count_str);
653 653
654 if (*count == PLAYLIST_DISPLAY_COUNT) 654 if (*count == PLAYLIST_DISPLAY_COUNT &&
655 (audio_status() & AUDIO_STATUS_PLAY))
655 audio_flush_and_reload_tracks(); 656 audio_flush_and_reload_tracks();
656 } 657 }
657 658
@@ -2196,8 +2197,12 @@ int playlist_insert_track(struct playlist_info* playlist,
2196 2197
2197 if (result != -1) 2198 if (result != -1)
2198 { 2199 {
2200 mutex_lock(&playlist->control_mutex);
2199 fsync(playlist->control_fd); 2201 fsync(playlist->control_fd);
2200 audio_flush_and_reload_tracks(); 2202 mutex_unlock(&playlist->control_mutex);
2203
2204 if (audio_status() & AUDIO_STATUS_PLAY)
2205 audio_flush_and_reload_tracks();
2201 } 2206 }
2202 2207
2203 return result; 2208 return result;
@@ -2232,10 +2237,15 @@ int playlist_insert_directory(struct playlist_info* playlist,
2232 2237
2233 result = add_directory_to_playlist(playlist, dirname, &position, queue, 2238 result = add_directory_to_playlist(playlist, dirname, &position, queue,
2234 &count, recurse); 2239 &count, recurse);
2240
2241 mutex_lock(&playlist->control_mutex);
2235 fsync(playlist->control_fd); 2242 fsync(playlist->control_fd);
2243 mutex_unlock(&playlist->control_mutex);
2236 2244
2237 display_playlist_count(count, count_str); 2245 display_playlist_count(count, count_str);
2238 audio_flush_and_reload_tracks(); 2246
2247 if (audio_status() & AUDIO_STATUS_PLAY)
2248 audio_flush_and_reload_tracks();
2239 2249
2240 return result; 2250 return result;
2241} 2251}
@@ -2327,7 +2337,8 @@ int playlist_insert_playlist(struct playlist_info* playlist, char *filename,
2327 { 2337 {
2328 display_playlist_count(count, count_str); 2338 display_playlist_count(count, count_str);
2329 2339
2330 if (count == PLAYLIST_DISPLAY_COUNT) 2340 if (count == PLAYLIST_DISPLAY_COUNT &&
2341 (audio_status() & AUDIO_STATUS_PLAY))
2331 audio_flush_and_reload_tracks(); 2342 audio_flush_and_reload_tracks();
2332 } 2343 }
2333 } 2344 }
@@ -2337,13 +2348,18 @@ int playlist_insert_playlist(struct playlist_info* playlist, char *filename,
2337 } 2348 }
2338 2349
2339 close(fd); 2350 close(fd);
2351
2352 mutex_lock(&playlist->control_mutex);
2340 fsync(playlist->control_fd); 2353 fsync(playlist->control_fd);
2354 mutex_unlock(&playlist->control_mutex);
2341 2355
2342 if (temp_ptr) 2356 if (temp_ptr)
2343 *temp_ptr = '/'; 2357 *temp_ptr = '/';
2344 2358
2345 display_playlist_count(count, count_str); 2359 display_playlist_count(count, count_str);
2346 audio_flush_and_reload_tracks(); 2360
2361 if (audio_status() & AUDIO_STATUS_PLAY)
2362 audio_flush_and_reload_tracks();
2347 2363
2348 return result; 2364 return result;
2349} 2365}
@@ -2370,7 +2386,7 @@ int playlist_delete(struct playlist_info* playlist, int index)
2370 2386
2371 result = remove_track_from_playlist(playlist, index, true); 2387 result = remove_track_from_playlist(playlist, index, true);
2372 2388
2373 if (result != -1) 2389 if (result != -1 && (audio_status() & AUDIO_STATUS_PLAY))
2374 audio_flush_and_reload_tracks(); 2390 audio_flush_and_reload_tracks();
2375 2391
2376 return result; 2392 return result;
@@ -2458,8 +2474,12 @@ int playlist_move(struct playlist_info* playlist, int index, int new_index)
2458 } 2474 }
2459 } 2475 }
2460 2476
2477 mutex_lock(&playlist->control_mutex);
2461 fsync(playlist->control_fd); 2478 fsync(playlist->control_fd);
2462 audio_flush_and_reload_tracks(); 2479 mutex_unlock(&playlist->control_mutex);
2480
2481 if (audio_status() & AUDIO_STATUS_PLAY)
2482 audio_flush_and_reload_tracks();
2463 } 2483 }
2464 } 2484 }
2465 2485
@@ -2479,7 +2499,7 @@ int playlist_randomise(struct playlist_info* playlist, unsigned int seed,
2479 2499
2480 result = randomise_playlist(playlist, seed, start_current, true); 2500 result = randomise_playlist(playlist, seed, start_current, true);
2481 2501
2482 if (result != -1) 2502 if (result != -1 && (audio_status() & AUDIO_STATUS_PLAY))
2483 audio_flush_and_reload_tracks(); 2503 audio_flush_and_reload_tracks();
2484 2504
2485 return result; 2505 return result;
@@ -2497,7 +2517,7 @@ int playlist_sort(struct playlist_info* playlist, bool start_current)
2497 2517
2498 result = sort_playlist(playlist, start_current, true); 2518 result = sort_playlist(playlist, start_current, true);
2499 2519
2500 if (result != -1) 2520 if (result != -1 && (audio_status() & AUDIO_STATUS_PLAY))
2501 audio_flush_and_reload_tracks(); 2521 audio_flush_and_reload_tracks();
2502 2522
2503 return result; 2523 return result;