- // playlist_clips can only be accessed on the main thread.
- // Hopefully, we won't have to wait too long for this to come back.
- //
- // TODO: If MainWindow is in the process of being destroyed and waiting
- // for Player to shut down, we could have a deadlock here.
- promise<pair<Clip, size_t>> clip_promise;
- future<pair<Clip, size_t>> clip = clip_promise.get_future();
- post_to_main_thread([&clip_promise] {
- int row = playlist_clips->get_currently_playing();
- if (row != -1 && row < int(playlist_clips->size()) - 1) {
- clip_promise.set_value(make_pair(*playlist_clips->clip(row + 1), row + 1));
- } else {
- clip_promise.set_value(make_pair(Clip(), 0));
- }
- });
- return clip.get();
-}
-
-static string format_duration(double t)
-{
- int t_ms = lrint(t * 1e3);
-
- int ms = t_ms % 1000;
- t_ms /= 1000;
- int s = t_ms % 60;
- t_ms /= 60;
- int m = t_ms;
-
- char buf[256];
- snprintf(buf, sizeof(buf), "%d:%02d.%03d", m, s, ms);
- return buf;
+ playlist_selection_changed();
+ playlist_clips->set_progress({});
+ ui->stop_btn->setEnabled(false);