]> git.sesse.net Git - kdenlive/commitdiff
refresh video_frame again, but now only if needed (no cpu usage anymore, if not needed)
authorMarco Gittler <marco@gitma.de>
Mon, 17 Mar 2008 11:22:25 +0000 (11:22 +0000)
committerMarco Gittler <marco@gitma.de>
Mon, 17 Mar 2008 11:22:25 +0000 (11:22 +0000)
svn path=/branches/KDE4/; revision=2066

src/monitor.cpp
src/monitor.h

index f5207af8688f2f3d31afd9be2a88ca8955025cc6..5ac13d2a7586d7ae9bc7f5b0bf3149ef8e9713c7 100644 (file)
@@ -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"
index c60ca279698a1d617cee916e2c04610c4e765dab..39e7e2ff628251f562461c9b1aa5d138fd09eb9c 100644 (file)
 
 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 &);