From f68bd080a6d251d0d9ffaf03450d5142dfe5515d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 2 Dec 2011 14:04:41 +0100 Subject: [PATCH] Force refresh of clip monitor when clip was edited --- src/customtrackview.cpp | 2 +- src/customtrackview.h | 2 +- src/mainwindow.cpp | 6 +++--- src/monitor.cpp | 4 ++-- src/monitor.h | 2 +- src/projectlist.cpp | 1 + src/projectlist.h | 2 +- 7 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 32e78790..844b1d6e 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -602,7 +602,7 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) // razor tool over a clip, display current frame in monitor if (false && !m_blockRefresh && item->type() == AVWIDGET) { //TODO: solve crash when showing frame when moving razor over clip - emit showClipFrame(((ClipItem *) item)->baseClip(), QPoint(), mappedXPos - (clip->startPos() - clip->cropStart()).frames(m_document->fps())); + emit showClipFrame(((ClipItem *) item)->baseClip(), QPoint(), false, mappedXPos - (clip->startPos() - clip->cropStart()).frames(m_document->fps())); } event->accept(); return; diff --git a/src/customtrackview.h b/src/customtrackview.h index 64c0ddbb..dea6e8df 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -467,7 +467,7 @@ signals: void trackHeightChanged(); void tracksChanged(); void displayMessage(const QString &, MessageType); - void showClipFrame(DocClipBase *, QPoint, const int); + void showClipFrame(DocClipBase *, QPoint, bool, const int); void doTrackLock(int, bool); void updateClipMarkers(DocClipBase *); void updateTrackHeaders(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bc41e232..95003ae9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -221,7 +221,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString & m_clipMonitorDock->setWidget(m_clipMonitor); // Connect the project list - connect(m_projectList, SIGNAL(clipSelected(DocClipBase *, QPoint)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint))); + connect(m_projectList, SIGNAL(clipSelected(DocClipBase *, QPoint, bool)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, bool))); connect(m_projectList, SIGNAL(raiseClipMonitor()), m_clipMonitor, SLOT(activateMonitor())); connect(m_projectList, SIGNAL(loadingIsOver()), this, SLOT(slotElapsedTime())); connect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int))); @@ -2482,7 +2482,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha disconnect(m_activeTimeline->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_projectMonitor, SLOT(slotSetSelectedClip(Transition*))); disconnect(m_activeTimeline->projectView(), SIGNAL(playMonitor()), m_projectMonitor, SLOT(slotPlay())); disconnect(m_activeTimeline->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType))); - disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, QPoint, const int)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, const int))); + disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, QPoint, bool, const int)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, bool, const int))); disconnect(m_activeTimeline, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor())); disconnect(m_activeTimeline, SIGNAL(insertTrack(int)), this, SLOT(slotInsertTrack(int))); disconnect(m_activeTimeline, SIGNAL(deleteTrack(int)), this, SLOT(slotDeleteTrack(int))); @@ -2558,7 +2558,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha connect(trackView, SIGNAL(setZoom(int)), this, SLOT(slotSetZoom(int))); connect(trackView->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType))); - connect(trackView->projectView(), SIGNAL(showClipFrame(DocClipBase *, QPoint, const int)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, const int))); + connect(trackView->projectView(), SIGNAL(showClipFrame(DocClipBase *, QPoint, bool, const int)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, bool, const int))); connect(trackView->projectView(), SIGNAL(playMonitor()), m_projectMonitor, SLOT(slotPlay())); connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int, bool)), m_projectMonitor, SLOT(slotSetSelectedClip(ClipItem*))); diff --git a/src/monitor.cpp b/src/monitor.cpp index e994710b..47d09b67 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -816,7 +816,7 @@ void Monitor::updateClipProducer(Mlt::Producer *prod) render->setProducer(prod, render->seekFramePosition()); } -void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, int position) +void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, bool forceUpdate, int position) { if (render == NULL) return; if (clip == NULL && m_currentClip != NULL) { @@ -827,7 +827,7 @@ void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, int position) return; } - if (clip != m_currentClip) { + if (clip != m_currentClip || forceUpdate) { m_currentClip = clip; if (m_currentClip) activateMonitor(); updateMarkers(clip); diff --git a/src/monitor.h b/src/monitor.h index ba949ff0..c0697f26 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -201,7 +201,7 @@ private slots: public slots: void slotOpenFile(const QString &); - void slotSetClipProducer(DocClipBase *clip, QPoint zone = QPoint(), int position = -1); + void slotSetClipProducer(DocClipBase *clip, QPoint zone = QPoint(), bool forceUpdate = false, int position = -1); void updateClipProducer(Mlt::Producer *prod); void refreshMonitor(bool visible); void refreshMonitor(); diff --git a/src/projectlist.cpp b/src/projectlist.cpp index c2ebfcfc..cddd5d5b 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -770,6 +770,7 @@ void ProjectList::slotUpdateClipProperties(const QString &id, QMap referencedClip(), item->referencedClip()->zone(), true); } else if (properties.contains("full_luma") || properties.contains("force_colorspace") || properties.contains("loop")) { emit refreshClip(id, false); } diff --git a/src/projectlist.h b/src/projectlist.h index 05237d81..594d59be 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -389,7 +389,7 @@ private slots: void slotGenerateProxy(); signals: - void clipSelected(DocClipBase *, QPoint zone = QPoint()); + void clipSelected(DocClipBase *, QPoint zone = QPoint(), bool forceUpdate = false); void receivedClipDuration(const QString &); void showClipProperties(DocClipBase *); void showClipProperties(QList , QMap commonproperties); -- 2.39.2