Skip to content

Commit

Permalink
Fix #227 jittery behavior, and do not scrub/refresh when trim in on
Browse files Browse the repository at this point in the history
timeline.
  • Loading branch information
ddennedy committed Apr 24, 2016
1 parent c9ecc29 commit 8f25da7
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 15 deletions.
10 changes: 7 additions & 3 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ MainWindow::MainWindow()
connect(m_timelineDock->model(), SIGNAL(closed()), SLOT(onMultitrackClosed()));
connect(m_timelineDock->model(), SIGNAL(modified()), SLOT(onMultitrackModified()));
connect(m_timelineDock->model(), SIGNAL(modified()), SLOT(updateAutoSave()));
connect(m_timelineDock->model(), SIGNAL(durationChanged()), SLOT(onMultitrackDurationChanged()));
connect(m_timelineDock, SIGNAL(clipOpened(void*)), SLOT(openCut(void*)));
connect(m_timelineDock->model(), SIGNAL(seeked(int)), SLOT(seekTimeline(int)));
connect(m_playlistDock, SIGNAL(addAllTimeline(Mlt::Playlist*)), SLOT(onTimelineDockTriggered()));
Expand Down Expand Up @@ -2033,7 +2034,7 @@ void MainWindow::onPlaylistModified()
{
setWindowModified(true);
if (MLT.producer() && playlist() && (void*) MLT.producer()->get_producer() == (void*) playlist()->get_playlist())
m_player->onProducerModified();
m_player->onDurationChanged();
updateMarkers();
m_player->enableTab(Player::ProjectTabIndex, true);
}
Expand All @@ -2058,9 +2059,12 @@ void MainWindow::onMultitrackClosed()
void MainWindow::onMultitrackModified()
{
setWindowModified(true);
}

void MainWindow::onMultitrackDurationChanged()
{
if (MLT.producer() && (void*) MLT.producer()->get_producer() == (void*) multitrack()->get_producer())
m_player->onProducerModified();
updateMarkers();
m_player->onDurationChanged();
}

void MainWindow::onCutModified()
Expand Down
1 change: 1 addition & 0 deletions src/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ private slots:
void onMultitrackCreated();
void onMultitrackClosed();
void onMultitrackModified();
void onMultitrackDurationChanged();
void onCutModified();
void onFilterModelChanged();
void updateMarkers();
Expand Down
16 changes: 9 additions & 7 deletions src/models/multitrackmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1789,8 +1789,7 @@ void MultitrackModel::addTransitionByTrimIn(int trackIndex, int clipIndex, int d
} else if (m_isMakingTransition) {
// Adjust a transition addition already in progress.
// m_isMakingTransition will be set false when mouse button released via notifyClipOut().
delta = playlist.clip_start(clipIndex - 1) - (playlist.clip_start(clipIndex) + delta);
trimTransitionIn(trackIndex, clipIndex - 2, delta);
trimTransitionIn(trackIndex, clipIndex - 2, -delta);
}
}
}
Expand Down Expand Up @@ -2156,11 +2155,14 @@ void MultitrackModel::adjustBackgroundDuration()
Mlt::Playlist playlist(*track);
Mlt::Producer* clip = playlist.get_clip(0);
if (clip) {
clip->parent().set("length", n);
clip->parent().set_in_and_out(0, n - 1);
clip->set("length", n);
clip->set_in_and_out(0, n - 1);
playlist.resize_clip(0, 0, n - 1);
if (n != clip->parent().get_length()) {
clip->parent().set("length", n);
clip->parent().set_in_and_out(0, n - 1);
clip->set("length", n);
clip->set_in_and_out(0, n - 1);
playlist.resize_clip(0, 0, n - 1);
emit durationChanged();
}
delete clip;
}
delete track;
Expand Down
1 change: 1 addition & 0 deletions src/models/multitrackmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ class MultitrackModel : public QAbstractItemModel
void trackHeightChanged();
void scaleFactorChanged();
void showStatusMessage(QString);
void durationChanged();

public slots:
void refreshTrackList();
Expand Down
2 changes: 1 addition & 1 deletion src/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ void Player::onMeltedUnitOpened()
setFocus();
}

void Player::onProducerModified()
void Player::onDurationChanged()
{
m_duration = MLT.producer()->get_length();
m_isSeekable = MLT.isSeekable();
Expand Down
2 changes: 1 addition & 1 deletion src/player.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public slots:
void onProducerOpened(bool play = true);
void postProducerOpened();
void onMeltedUnitOpened();
void onProducerModified();
void onDurationChanged();
void onShowFrame(int position, double fps, int in, int out, int length, bool isPlaying);
void onFrameDisplayed(const SharedFrame& frame);
void onVolumeChanged(int);
Expand Down
8 changes: 5 additions & 3 deletions src/qml/timeline/Clip.qml
Original file line number Diff line number Diff line change
Expand Up @@ -482,11 +482,11 @@ Rectangle {
cursorShape: Qt.SizeHorCursor
drag.target: parent
drag.axis: Drag.XAxis
property int startX
property double startX

onPressed: {
root.stopScrolling = true
startX = parent.x
startX = mapToItem(null, x, y).x
originalX = 0 // reusing originalX to accumulate delta for bubble help
parent.anchors.left = undefined
}
Expand All @@ -498,11 +498,13 @@ Rectangle {
}
onPositionChanged: {
if (mouse.buttons === Qt.LeftButton) {
var delta = Math.round((parent.x - startX) / timeScale)
var newX = mapToItem(null, x, y).x
var delta = Math.round((newX - startX) / timeScale)
if (Math.abs(delta) > 0) {
if (clipDuration + originalX + delta > 0)
originalX += delta
clipRoot.trimmingIn(clipRoot, delta, mouse)
startX = newX
}
}
}
Expand Down

0 comments on commit 8f25da7

Please sign in to comment.