From: Marco Gittler Date: Mon, 17 Mar 2008 11:22:25 +0000 (+0000) Subject: refresh video_frame again, but now only if needed (no cpu usage anymore, if not needed) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=30b99f3d086a3a8d039ea649ee0b9ce80cdc9f21;p=kdenlive refresh video_frame again, but now only if needed (no cpu usage anymore, if not needed) svn path=/branches/KDE4/; revision=2066 --- diff --git a/src/monitor.cpp b/src/monitor.cpp index f5207af8..5ac13d2a 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -81,8 +81,13 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) //m_ruler->setPixelPerMark(3); - ui.video_frame->setAttribute(Qt::WA_PaintOnScreen); - render = new Render(m_name, (int) ui.video_frame->winId(), -1, this); + QVBoxLayout *rendererBox = new QVBoxLayout(ui.video_frame); + m_monitorRefresh = new MonitorRefresh(ui.video_frame); + rendererBox->addWidget(m_monitorRefresh); + m_monitorRefresh->setAttribute(Qt::WA_PaintOnScreen); + render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, this); + m_monitorRefresh->setRenderer(render); + connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int))); connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); connect(render, SIGNAL(rendererStopped(int)), this, SLOT(rendererStopped(int))); @@ -269,11 +274,16 @@ void Monitor::saveSceneList(QString path, QDomElement e) { render->saveSceneList(path, e); } -/* Commented out, takes huge CPU resources +MonitorRefresh::MonitorRefresh(QWidget* parent): QWidget(parent), m_renderer(NULL) { + +} + +void MonitorRefresh::setRenderer(Render* render) { + m_renderer = render; +} -void Monitor::paintEvent(QPaintEvent * event) { - if (render != NULL && m_isActive) render->doRefresh(); - QWidget::paintEvent(event); -}*/ +void MonitorRefresh::paintEvent(QPaintEvent * event) { + if (m_renderer != NULL) m_renderer->doRefresh(); +} #include "monitor.moc" diff --git a/src/monitor.h b/src/monitor.h index c60ca279..39e7e2ff 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -32,6 +32,16 @@ class MonitorManager; +class MonitorRefresh : public QWidget { + Q_OBJECT +public: + MonitorRefresh(QWidget* parent); + virtual void paintEvent(QPaintEvent * event); + void setRenderer(Render* render); +private: + Render *m_renderer; +}; + class Monitor : public QWidget { Q_OBJECT @@ -51,6 +61,7 @@ protected: private: Ui::Monitor_UI ui; MonitorManager *m_monitorManager; + MonitorRefresh *m_monitorRefresh; QString m_name; double m_scale; int m_length; @@ -66,7 +77,7 @@ private slots: void adjustRulerSize(int length); void seekCursor(int pos); void rendererStopped(int pos); - + public slots: void slotOpenFile(const QString &);