X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mainwindow.cpp;h=6779cac991944f0b392694c2f779b6084587899e;hb=f085f42bf9fcfcc0d269d684553ceaeb9fa28f99;hp=b6ac8bf1c45fba2ee652178178ebe8a93e4b526b;hpb=56ad3ab910de5679cba6f110d287e8bad9ecc5cf;p=nageru diff --git a/mainwindow.cpp b/mainwindow.cpp index b6ac8bf..6779cac 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -126,6 +126,7 @@ MainWindow::MainWindow() live_player_clip_done(); }); }); + live_player->set_next_clip_callback(bind(&MainWindow::live_player_get_next_clip, this)); live_player->set_progress_callback([this](double played_this_clip, double total_length) { post_to_main_thread([this, played_this_clip, total_length] { live_player_clip_progress(played_this_clip, total_length); @@ -325,15 +326,23 @@ void MainWindow::play_clicked() void MainWindow::live_player_clip_done() { + int row = playlist_clips->get_currently_playing(); + if (row == -1 || row == int(playlist_clips->size()) - 1) { + ui->live_label->setText("Current output (paused)"); + playlist_clips->set_currently_playing(-1, 0.0f); + } else { + playlist_clips->set_currently_playing(row + 1, 0.0f); + } +} + +Clip MainWindow::live_player_get_next_clip() +{ + // FIXME: threading int row = playlist_clips->get_currently_playing(); if (row != -1 && row < int(playlist_clips->size()) - 1) { - ++row; - const Clip &clip = *playlist_clips->clip(row); - live_player->play_clip(clip, clip.stream_idx); - playlist_clips->set_currently_playing(row, 0.0f); + return *playlist_clips->clip(row + 1); } else { - playlist_clips->set_currently_playing(-1, 0.0f); - ui->live_label->setText("Current output (paused)"); + return Clip(); } }