From: <j-...@us...> - 2008-10-14 15:06:01
|
Revision: 2470 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2470&view=rev Author: j-b-m Date: 2008-10-14 15:05:46 +0000 (Tue, 14 Oct 2008) Log Message: ----------- Fix crash on app close Modified Paths: -------------- branches/KDE4/src/mainwindow.cpp branches/KDE4/src/monitor.cpp branches/KDE4/src/monitor.h branches/KDE4/src/monitormanager.cpp branches/KDE4/src/monitormanager.h branches/KDE4/src/renderer.cpp branches/KDE4/src/renderer.h Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/mainwindow.cpp 2008-10-14 15:05:46 UTC (rev 2470) @@ -318,6 +318,7 @@ //virtual bool MainWindow::queryClose() { saveOptions(); + if (m_monitorManager) m_monitorManager->stopActiveMonitor(); if (m_activeDocument && m_activeDocument->isModified()) { switch (KMessageBox::warningYesNoCancel(this, i18n("Save changes to document ?"))) { case KMessageBox::Yes : Modified: branches/KDE4/src/monitor.cpp =================================================================== --- branches/KDE4/src/monitor.cpp 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/monitor.cpp 2008-10-14 15:05:46 UTC (rev 2470) @@ -463,6 +463,14 @@ } } +void Monitor::pause() { + if (render == NULL) return; + if (!m_isActive) m_monitorManager->activateMonitor(m_name); + render->pause(); + //m_playAction->setChecked(true); + //m_playAction->setIcon(m_pauseIcon); +} + void Monitor::slotPlay() { if (render == NULL) return; if (!m_isActive) m_monitorManager->activateMonitor(m_name); Modified: branches/KDE4/src/monitor.h =================================================================== --- branches/KDE4/src/monitor.h 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/monitor.h 2008-10-14 15:05:46 UTC (rev 2470) @@ -54,6 +54,7 @@ QString name() const; void resetSize(); bool isActive() const; + void pause(); protected: virtual void mousePressEvent(QMouseEvent * event); Modified: branches/KDE4/src/monitormanager.cpp =================================================================== --- branches/KDE4/src/monitormanager.cpp 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/monitormanager.cpp 2008-10-14 15:05:46 UTC (rev 2470) @@ -67,6 +67,11 @@ } } +void MonitorManager::stopActiveMonitor() { + if (m_clipMonitor->isActive()) m_clipMonitor->pause(); + else m_projectMonitor->pause(); +} + void MonitorManager::slotPlay() { if (m_clipMonitor->isActive()) m_clipMonitor->slotPlay(); else m_projectMonitor->slotPlay(); Modified: branches/KDE4/src/monitormanager.h =================================================================== --- branches/KDE4/src/monitormanager.h 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/monitormanager.h 2008-10-14 15:05:46 UTC (rev 2470) @@ -35,6 +35,7 @@ Timecode timecode(); void switchMonitors(); void resetProfiles(Timecode tc); + void stopActiveMonitor(); public slots: void activateMonitor(QString name = QString::null); Modified: branches/KDE4/src/renderer.cpp =================================================================== --- branches/KDE4/src/renderer.cpp 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/renderer.cpp 2008-10-14 15:05:46 UTC (rev 2470) @@ -1006,6 +1006,18 @@ m_mltConsumer->purge(); } +void Render::pause() { + if (!m_mltProducer || !m_mltConsumer) + return; + if (m_isZoneMode) resetZoneMode(); + m_isBlocked = true; + m_mltConsumer->set("refresh", 0); + m_mltProducer->set_speed(0.0); + emit rendererPosition(m_framePosition); + m_mltProducer->seek(m_framePosition); + m_mltConsumer->purge(); +} + void Render::switchPlay() { if (!m_mltProducer || !m_mltConsumer) return; Modified: branches/KDE4/src/renderer.h =================================================================== --- branches/KDE4/src/renderer.h 2008-10-14 09:30:43 UTC (rev 2469) +++ branches/KDE4/src/renderer.h 2008-10-14 15:05:46 UTC (rev 2470) @@ -101,6 +101,7 @@ backwards. Does not specify start/stop times for playback.*/ void play(double speed); void switchPlay(); + void pause(); /** stop playing */ void stop(const GenTime & startTime); void setVolume(double volume); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |