]> git.sesse.net Git - kdenlive/commitdiff
Fix crash on document switching
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Mar 2008 16:03:43 +0000 (16:03 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Mar 2008 16:03:43 +0000 (16:03 +0000)
svn path=/branches/KDE4/; revision=2007

src/mainwindow.cpp
src/monitor.cpp
src/monitormanager.cpp
src/monitormanager.h

index d5087ffe8f94f66979a5f386e3f5ad8d8d9fe47d..ef4e12afdb21b7f15d51e7e987e1a38b7dfa7c56 100644 (file)
@@ -160,10 +160,11 @@ MainWindow::MainWindow(QWidget *parent)
 
     connect(projectMonitorDock, SIGNAL(visibilityChanged(bool)), m_projectMonitor, SLOT(refreshMonitor(bool)));
     connect(clipMonitorDock, SIGNAL(visibilityChanged(bool)), m_clipMonitor, SLOT(refreshMonitor(bool)));
-    connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors()));
+    //connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors()));
     connect(m_monitorManager, SIGNAL(raiseClipMonitor(bool)), this, SLOT(slotRaiseMonitor(bool)));
     connect(m_effectList, SIGNAL(addEffect(QDomElement)), this, SLOT(slotAddEffect(QDomElement)));
     m_monitorManager->initMonitors(m_clipMonitor, m_projectMonitor);
+    slotConnectMonitors();
 
     setAutoSaveSettings();
     newFile();
@@ -206,17 +207,11 @@ void MainWindow::slotSetClipDuration(int id, int duration) {
 void MainWindow::slotConnectMonitors() {
 
     m_projectList->setRenderer(m_clipMonitor->render);
-
     connect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &)));
-
     connect(m_projectList, SIGNAL(receivedClipDuration(int, int)), this, SLOT(slotSetClipDuration(int, int)));
-
     connect(m_projectList, SIGNAL(getFileProperties(const QDomElement &, int)), m_clipMonitor->render, SLOT(getFileProperties(const QDomElement &, int)));
-
     connect(m_clipMonitor->render, SIGNAL(replyGetImage(int, int, const QPixmap &, int, int)), m_projectList, SLOT(slotReplyGetImage(int, int, const QPixmap &, int, int)));
-
     connect(m_clipMonitor->render, SIGNAL(replyGetFileProperties(int, const QMap < QString, QString > &, const QMap < QString, QString > &)), m_projectList, SLOT(slotReplyGetFileProperties(int, const QMap < QString, QString > &, const QMap < QString, QString > &)));
-
 }
 
 void MainWindow::setupActions() {
@@ -478,10 +473,12 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
             disconnect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), m_activeTimeline->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
         }
         m_activeDocument->setRenderer(NULL);
+        disconnect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &)));
+        m_clipMonitor->stop();
     }
     m_monitorManager->resetProfiles(doc->profilePath());
     m_projectList->setDocument(doc);
-
+    connect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &)));
     connect(trackView, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor()));
     connect(trackView, SIGNAL(mousePosition(int)), this, SLOT(slotUpdateMousePosition(int)));
     connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int)));
index 3d78f08bb4679e086b902e7a75f31a653dc82753..ce4e928d713ff9b063b1ad6ec899d4806686661a 100644 (file)
@@ -150,7 +150,6 @@ void Monitor::rendererStopped(int pos) {
 
 void Monitor::initMonitor() {
     kDebug() << "/////// INITING MONITOR, ID: " << ui.video_frame->winId();
-
 }
 
 // virtual
@@ -206,7 +205,6 @@ void Monitor::slotSetXml(const QDomElement &e) {
     m_position = 0;
 }
 
-
 void Monitor::slotOpenFile(const QString &file) {
     if (render == NULL) return;
     if (!m_isActive) m_monitorManager->activateMonitor(m_name);
index 28e5825ca1f6df25bb13e2c0a64c9191a921eead..3cad95b4e229bac35a37859efef29934323e2a6f 100644 (file)
@@ -41,24 +41,8 @@ Timecode MonitorManager::timecode() {
 void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) {
     m_clipMonitor = clipMonitor;
     m_projectMonitor = projectMonitor;
-    //QTimer::singleShot(1750, this, SLOT(initClipMonitor()));
-    initClipMonitor();
-    //initProjectMonitor();
 }
 
-void MonitorManager::initClipMonitor() {
-    m_clipMonitor->initMonitor();
-    emit connectMonitors();
-    //initProjectMonitor();
-    //QTimer::singleShot(1500, this, SLOT(initProjectMonitor()));
-}
-
-void MonitorManager::initProjectMonitor() {
-    //m_clipMonitor->stop();
-    m_projectMonitor->initMonitor();
-    // activateMonitor("project");
-    emit connectMonitors();
-}
 
 void MonitorManager::activateMonitor(QString name) {
     if (m_activeMonitor == name) return;
@@ -81,7 +65,7 @@ void MonitorManager::slotPlay() {
 }
 
 void MonitorManager::resetProfiles(QString prof) {
-    m_clipMonitor->resetProfile(prof);
+    //m_clipMonitor->resetProfile(prof);
     m_projectMonitor->resetProfile(prof);
 }
 
index 6466002a2d1519811c5eda67d86522e3b39c4f08..03eeaec6f42fbec606cfc7e9e65a329bffa3478e 100644 (file)
@@ -46,12 +46,7 @@ private:
     QString m_activeMonitor;
     Timecode m_timecode;
 
-private slots:
-    void initProjectMonitor();
-    void initClipMonitor();
-
 signals:
-    void connectMonitors();
     void raiseClipMonitor(bool);
 
 };