Skip to content

Commit

Permalink
Respect playing/paused state when opening cuts.
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed Sep 2, 2014
1 parent 7fd0b24 commit daa9a97
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
7 changes: 2 additions & 5 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -752,14 +752,11 @@ void MainWindow::openVideo()
void MainWindow::openCut(void* producer, int in, int out)
{
double speed = MLT.producer()? MLT.producer()->get_speed(): 0;
m_player->setPauseAfterOpen(speed == 0);
open((Mlt::Producer*) producer);
m_player->setIn(in);
m_player->setOut(out);
MLT.seek(in);
if (speed == 0)
m_player->pause();
else
m_player->play(speed);
}

void MainWindow::showStatusMessage(QString message)
Expand Down Expand Up @@ -1516,8 +1513,8 @@ void MainWindow::onPlaylistLoaded()

void MainWindow::onPlaylistCleared()
{
m_player->setPauseAfterOpen(true);
open(new Mlt::Producer(MLT.profile(), "color:"));
m_player->pause();
m_player->seek(0);
setWindowModified(true);
}
Expand Down
13 changes: 9 additions & 4 deletions src/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Player::Player(QWidget *parent)
, m_seekPosition(SEEK_INACTIVE)
, m_isMeltedPlaying(-1)
, m_zoomToggleFactor(Settings.playerZoom() == 0.0f? 1.0f : Settings.playerZoom())
, m_pauseAfterPlay(false)
, m_pauseAfterOpen(false)
, m_monitorScreen(-1)
, m_currentTransport(0)
{
Expand Down Expand Up @@ -456,8 +456,8 @@ void Player::onProducerOpened(bool play)
void Player::postProducerOpened()
{
play();
if (m_pauseAfterPlay) {
m_pauseAfterPlay = false;
if (m_pauseAfterOpen) {
m_pauseAfterOpen = false;
seek(MLT.producer()->position());
}
}
Expand Down Expand Up @@ -675,7 +675,7 @@ void Player::onTabBarClicked(int index)
case SourceTabIndex:
if (MLT.savedProducer() && MLT.savedProducer()->is_valid() && MLT.producer()
&& MLT.producer()->get_producer() != MLT.savedProducer()->get_producer()) {
m_pauseAfterPlay = true;
m_pauseAfterOpen = true;
MAIN.open(new Mlt::Producer(MLT.savedProducer()));
}
break;
Expand Down Expand Up @@ -754,6 +754,11 @@ void Player::moveVideoToScreen(int screen)
m_monitorScreen = screen;
}

void Player::setPauseAfterOpen(bool pause)
{
m_pauseAfterOpen = pause;
}

//----------------------------------------------------------------------------
// IEC standard dB scaling -- as borrowed from meterbridge (c) Steve Harris

Expand Down
3 changes: 2 additions & 1 deletion src/player.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class Player : public QWidget
return m_position;
}
void moveVideoToScreen(int screen = -1);
void setPauseAfterOpen(bool pause);

signals:
void endOfStream();
Expand Down Expand Up @@ -143,7 +144,7 @@ public slots:
QAction* m_zoomInAction;
float m_zoomToggleFactor;
QTabBar* m_tabs;
bool m_pauseAfterPlay;
bool m_pauseAfterOpen;
int m_monitorScreen;
QWidget* m_videoWidget;
QHBoxLayout* m_videoLayout;
Expand Down

0 comments on commit daa9a97

Please sign in to comment.