Skip to content

Commit

Permalink
Do not auto-play playlist and multitrack projects.
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed Jan 24, 2015
1 parent 640869b commit da0cb03
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,8 @@ void MainWindow::open(Mlt::Producer* producer)
if (ok && screen != QApplication::desktop()->screenNumber(this))
m_player->moveVideoToScreen(screen);

m_player->setPauseAfterOpen(!MLT.isClip());

// no else here because open() will delete the producer if open fails
if (!MLT.setProducer(producer))
emit producerOpened();
Expand Down Expand Up @@ -1541,7 +1543,6 @@ void MainWindow::onPlaylistCleared()
void MainWindow::onPlaylistClosed()
{
m_player->resetProfile();
onPlaylistCleared();
setCurrentFile("");
setWindowModified(false);
m_undoStack->clear();
Expand Down
8 changes: 6 additions & 2 deletions src/mltcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,9 +375,13 @@ void Controller::seek(int position)
{
if (m_producer) {
m_producer->set_speed(0);
if (m_consumer && m_consumer->is_valid())
m_consumer->purge();
m_producer->seek(position);
if (m_consumer && m_consumer->is_valid()) {
if (m_consumer->is_stopped())
m_consumer->start();
else
m_consumer->purge();
}
}
if (m_jackFilter)
mlt_events_fire(m_jackFilter->get_properties(), "jack-seek", &position, NULL);
Expand Down
18 changes: 11 additions & 7 deletions src/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,17 +441,21 @@ void Player::onProducerOpened(bool play)
// calling play() here. Delays while purging the consumer on pause can
// interfere with the play() call. So, we delay play a little to let
// pause purging to complete.
if (play)
QTimer::singleShot(500, this, SLOT(postProducerOpened()));
if (play) {
if (m_pauseAfterOpen) {
m_pauseAfterOpen = false;
QTimer::singleShot(500, this, SLOT(postProducerOpened()));
} else {
// This seek purges the consumer to prevent latent end-of-stream detection.
seek(0);
QTimer::singleShot(500, this, SLOT(play()));
}
}
}

void Player::postProducerOpened()
{
play();
if (m_pauseAfterOpen) {
m_pauseAfterOpen = false;
seek(MLT.producer()->position());
}
seek(MLT.producer()->position());
}

void Player::onMeltedUnitOpened()
Expand Down

0 comments on commit da0cb03

Please sign in to comment.