Skip to content

Commit

Permalink
Fix performance regression in 377eb4f.
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed Mar 28, 2015
1 parent 196956d commit 1320075
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/mltcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,15 @@ void Controller::play(double speed)
m_producer->set_speed(speed);
if (m_consumer) {
// Restore real_time behavior and work-ahead buffering
m_consumer->set("real_time", realTime());
m_consumer->set("buffer", 25);
m_consumer->set("prefill", 1);
if (!Settings.playerGPU())
if (m_consumer->get_int("real_time") != realTime()) {
m_consumer->set("real_time", realTime());
m_consumer->set("buffer", 25);
m_consumer->set("prefill", 1);
// Changes to real_time require a consumer restart if running.
if (!m_consumer->is_stopped())
m_consumer->stop();
}
m_consumer->start();
refreshConsumer();
}
Expand All @@ -203,6 +209,7 @@ void Controller::play(double speed)
void Controller::pause()
{
if (m_producer && m_producer->get_speed() != 0) {
if (!Settings.playerGPU())
if (m_consumer && m_consumer->is_valid()) {
// Disable real_time behavior and buffering for frame accurate seeking.
m_consumer->set("real_time", -1);
Expand Down Expand Up @@ -334,6 +341,7 @@ void Controller::seek(int position)
{
if (m_producer) {
// Always pause before seeking (if not already paused).
if (!Settings.playerGPU())
if (m_consumer && m_consumer->is_valid() && m_producer->get_speed() != 0) {
// Disable real_time behavior and buffering for frame accurate seeking.
m_consumer->set("real_time", -1);
Expand Down

0 comments on commit 1320075

Please sign in to comment.