From 1fdcd9d3ebec13f4620342b5bdce7cb9cbd65f66 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 29 Oct 2011 18:06:53 +0000 Subject: [PATCH] Fix 2 crashes when clip and project monitor are side by side and resizing or seeking while the other monitor is playing: http://kdenlive.org/mantis/view.php?id=2364 svn path=/trunk/kdenlive/; revision=6000 --- src/monitor.cpp | 15 ++++++++------- src/monitor.h | 9 +-------- src/renderer.cpp | 2 +- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/monitor.cpp b/src/monitor.cpp index 0c796086..6e64e829 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -455,6 +455,13 @@ void Monitor::mousePressEvent(QMouseEvent * event) } } +void Monitor::resizeEvent(QResizeEvent *event) +{ + Q_UNUSED(event); + if (render && isVisible() && isActive()) render->doRefresh(); +} + + void Monitor::slotSwitchFullScreen() { m_videoBox->switchFullScreen(); @@ -605,8 +612,8 @@ void Monitor::slotSeek() void Monitor::slotSeek(int pos) { - //activateMonitor(); if (render == NULL) return; + activateMonitor(); render->seekToFrame(pos); } @@ -1055,12 +1062,6 @@ void MonitorRefresh::setRenderer(Render* render) } -void MonitorRefresh::resizeEvent(QResizeEvent *event) -{ - Q_UNUSED(event); - if (m_renderer && isVisible()) m_renderer->doRefresh(); -} - Overlay::Overlay(QWidget* parent) : QLabel(parent) { diff --git a/src/monitor.h b/src/monitor.h index 9bb72f1d..527935e4 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -74,16 +74,8 @@ public: MonitorRefresh(QWidget *parent = 0); void setRenderer(Render* render); -protected: - virtual void resizeEvent(QResizeEvent *event); - private: Render *m_renderer; - -signals: - void switchFullScreen(); - void switchPlay(); - void mouseSeek(int, bool); }; class Overlay : public QLabel @@ -133,6 +125,7 @@ public: protected: virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent * event); + virtual void resizeEvent(QResizeEvent *event); /** @brief Move to another position on mouse wheel event. * diff --git a/src/renderer.cpp b/src/renderer.cpp index ee07e4c6..c1caeed1 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1486,7 +1486,7 @@ void Render::seekToFrameDiff(int diff) void Render::doRefresh() { - m_refreshTimer.start(); + if (m_mltProducer && m_mltProducer->get_speed() == 0) m_refreshTimer.start(); } void Render::refresh() -- 2.39.2