[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdenlive] src: Fix several issues when changing project's fps
From: Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date: 2016-01-01 1:42:25
Message-ID: E1aEojZ-0000yS-Dw () scm ! kde ! org
[Download RAW message or body]
Git commit 241af1e8e3d30f6b0c463a71d63eb76a8320d740 by Jean-Baptiste Mardelle.
Committed on 01/01/2016 at 01:42.
Pushed by mardelle into branch 'master'.
Fix several issues when changing project's fps
M +2 -1 src/doc/kdenlivedoc.cpp
M +1 -1 src/doc/kdenlivedoc.h
M +2 -2 src/mainwindow.cpp
M +2 -2 src/timeline/customruler.cpp
M +1 -1 src/timeline/customruler.h
M +11 -7 src/timeline/customtrackview.cpp
M +1 -1 src/timeline/customtrackview.h
M +4 -11 src/timeline/timeline.cpp
M +1 -2 src/timeline/timeline.h
http://commits.kde.org/kdenlive/241af1e8e3d30f6b0c463a71d63eb76a8320d740
diff --git a/src/doc/kdenlivedoc.cpp b/src/doc/kdenlivedoc.cpp
index 7c63ccf..e8d9872 100644
--- a/src/doc/kdenlivedoc.cpp
+++ b/src/doc/kdenlivedoc.cpp
@@ -1549,10 +1549,11 @@ void KdenliveDoc::updateProjectProfile()
KdenliveSettings::setProject_fps(fps);
m_width = m_profile.width;
m_height = m_profile.height;
+ bool fpsChanged = m_timecode.fps() != fps;
m_timecode.setFormat(fps);
KdenliveSettings::setCurrent_profile(m_profile.path);
pCore->monitorManager()->resetProfiles(m_profile, m_timecode);
- emit updateFps();
+ emit updateFps(fpsChanged);
}
void KdenliveDoc::resetProfile()
diff --git a/src/doc/kdenlivedoc.h b/src/doc/kdenlivedoc.h
index 8a8043b..5052e92 100644
--- a/src/doc/kdenlivedoc.h
+++ b/src/doc/kdenlivedoc.h
@@ -239,7 +239,7 @@ signals:
/** @brief Current doc created effects, reload list */
void reloadEffects();
/** @brief Fps was changed, update timeline */
- void updateFps();
+ void updateFps(bool changed);
};
#endif
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 2240341..ee9291f 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1662,7 +1662,7 @@ void MainWindow::connectDocument()
connect(m_effectStack->transitionConfig(), SIGNAL(seekTimeline(int)), trackView->projectView() , \
SLOT(seekCursorPos(int)));
connect(trackView->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, \
SLOT(slotActivateMonitor()));
- connect(project, &KdenliveDoc::updateFps, trackView, &Timeline::updateProjectFps);
+ connect(project, &KdenliveDoc::updateFps, trackView, &Timeline::updateProfile);
connect(trackView, SIGNAL(zoneMoved(int,int)), this, SLOT(slotZoneMoved(int,int)));
trackView->projectView()->setContextMenu(m_timelineContextMenu, m_timelineContextClipMenu, \
m_timelineContextTransitionMenu, m_clipTypeGroup, \
static_cast<QMenu*>(factory()->container(QStringLiteral("marker_menu"), this))); if (m_renderWidget) {
@@ -1682,7 +1682,7 @@ void MainWindow::connectDocument()
m_normalEditTool->setChecked(true);
connect(m_projectMonitor, SIGNAL(durationChanged(int)), this, SLOT(slotUpdateProjectDuration(int)));
pCore->monitorManager()->setDocument(project);
- trackView->updateProjectFps();
+ trackView->updateProfile(false);
if (m_recMonitor) {
m_recMonitor->slotUpdateCaptureFolder(project->projectFolder().path() + QDir::separator());
}
diff --git a/src/timeline/customruler.cpp b/src/timeline/customruler.cpp
index e63a971..37d3171 100644
--- a/src/timeline/customruler.cpp
+++ b/src/timeline/customruler.cpp
@@ -302,9 +302,9 @@ void CustomRuler::updateRuler(int pos)
update(min * m_factor - offset() - 3, BIG_MARK_X, (max - min) * m_factor + 6, MAX_HEIGHT - \
BIG_MARK_X); }
-void CustomRuler::setPixelPerMark(int rate)
+void CustomRuler::setPixelPerMark(int rate, bool force)
{
- if (rate == m_rate) return;
+ if (rate == m_rate && !force) return;
int scale = comboScale[rate];
m_rate = rate;
m_factor = 1.0 / (double) scale * FRAME_SIZE;
diff --git a/src/timeline/customruler.h b/src/timeline/customruler.h
index fa95556..18545ae 100644
--- a/src/timeline/customruler.h
+++ b/src/timeline/customruler.h
@@ -40,7 +40,7 @@ class CustomRuler : public QWidget
public:
CustomRuler(const Timecode &tc, CustomTrackView *parent);
- void setPixelPerMark(int rate);
+ void setPixelPerMark(int rate, bool force = false);
static const int comboScale[];
int outPoint() const;
int inPoint() const;
diff --git a/src/timeline/customtrackview.cpp b/src/timeline/customtrackview.cpp
index 2e86a9b..75d85c0 100644
--- a/src/timeline/customtrackview.cpp
+++ b/src/timeline/customtrackview.cpp
@@ -264,15 +264,19 @@ int CustomTrackView::getFrameWidth() const
return (int) (m_tracksHeight * m_document->dar() + 0.5);
}
-void CustomTrackView::updateSceneFrameWidth()
+void CustomTrackView::updateSceneFrameWidth(bool fpsChanged)
{
int frameWidth = getFrameWidth();
- QList<QGraphicsItem *> itemList = items();
- ClipItem *item;
- for (int i = 0; i < itemList.count(); ++i) {
- if (itemList.at(i)->type() == AVWidget) {
- item = static_cast<ClipItem*>(itemList.at(i));
- item->resetFrameWidth(frameWidth);
+ if (fpsChanged && m_projectDuration > 0) {
+ reloadTimeline();
+ } else {
+ QList<QGraphicsItem *> itemList = items();
+ ClipItem *item;
+ for (int i = 0; i < itemList.count(); ++i) {
+ if (itemList.at(i)->type() == AVWidget) {
+ item = static_cast<ClipItem*>(itemList.at(i));
+ item->resetFrameWidth(frameWidth);
+ }
}
}
}
diff --git a/src/timeline/customtrackview.h b/src/timeline/customtrackview.h
index 2ad1a39..aaaefe3 100644
--- a/src/timeline/customtrackview.h
+++ b/src/timeline/customtrackview.h
@@ -103,7 +103,7 @@ public:
void cutSelectedClips();
void setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition, QActionGroup *clipTypeGroup, \
QMenu *markermenu); bool checkTrackHeight(bool force = false);
- void updateSceneFrameWidth();
+ void updateSceneFrameWidth(bool fpsChanged = false);
void setTool(ProjectTool tool);
ClipItem *cutClip(const ItemInfo &info, const GenTime &cutTime, bool cut, const EffectsList \
&oldStack = EffectsList(), bool execute = true); void slotSeekToPreviousSnap();
diff --git a/src/timeline/timeline.cpp b/src/timeline/timeline.cpp
index 343438a..a561921 100644
--- a/src/timeline/timeline.cpp
+++ b/src/timeline/timeline.cpp
@@ -1119,15 +1119,6 @@ void Timeline::slotVerticalZoomUp()
m_trackview->verticalScrollBar()->setValue(headers_area->verticalScrollBar()->value());
}
-void Timeline::updateProjectFps()
-{
- qDebug()<<"Requesting FPS UPDATE: "<<m_doc->timecode().fps();
- m_ruler->updateFrameSize();
- m_ruler->updateProjectFps(m_doc->timecode());
- m_trackview->updateProjectFps();
- slotChangeZoom(m_doc->zoom().x(), m_doc->zoom().y());
-}
-
void Timeline::slotRenameTrack(int ix, const QString &name)
{
QString currentName = track(ix)->getProperty(QStringLiteral("kdenlive:track_name"));
@@ -1182,12 +1173,14 @@ void Timeline::slotSaveTimelinePreview(const QString &path)
img.save(path);
}
-void Timeline::updateProfile()
+void Timeline::updateProfile(bool fpsChanged)
{
m_ruler->updateFrameSize();
- m_trackview->updateSceneFrameWidth();
+ m_ruler->updateProjectFps(m_doc->timecode());
+ m_ruler->setPixelPerMark(m_doc->zoom().x(), true);
slotChangeZoom(m_doc->zoom().x(), m_doc->zoom().y());
slotSetZone(m_doc->zone(), false);
+ m_trackview->updateSceneFrameWidth(fpsChanged);
}
void Timeline::checkTrackHeight(bool force)
diff --git a/src/timeline/timeline.h b/src/timeline/timeline.h
index 21fe434..0aeb603 100644
--- a/src/timeline/timeline.h
+++ b/src/timeline/timeline.h
@@ -94,7 +94,6 @@ public:
void loadGuides(QMap <double, QString> guidesData);
void checkTrackHeight(bool force = false);
- void updateProfile();
void updatePalette();
void refreshIcons();
/** @brief Returns a kdenlive effect xml description from an effect tag / id */
@@ -156,7 +155,7 @@ public slots:
void slotSaveTimelinePreview(const QString &path);
void checkDuration(int duration);
void slotShowTrackEffects(int);
- void updateProjectFps();
+ void updateProfile(bool fpsChanged);
private:
Mlt::Tractor *m_tractor;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic