]> git.sesse.net Git - kdenlive/commitdiff
Fix mem leak + possible crash with transition:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 23 Jul 2009 15:39:19 +0000 (15:39 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 23 Jul 2009 15:39:19 +0000 (15:39 +0000)
http://kdenlive.org/mantis/view.php?id=1049

svn path=/trunk/kdenlive/; revision=3758

src/complexparameter.cpp
src/complexparameter.h
src/effectstackview.cpp
src/effectstackview.h
src/geometryval.cpp
src/geometryval.h

index 4f6a7fa752d1af29b4d16a901162d4064023aa3e..864b3f41cfc07fc41c6dbb3c0a2c50736ce49f2d 100644 (file)
@@ -49,8 +49,6 @@ ComplexParameter::ComplexParameter(QWidget *parent) :
     connect(m_ui.buttonNewPoints, SIGNAL(clicked()), this , SLOT(slotSetNew()));
     connect(m_ui.buttonHelp, SIGNAL(clicked()), this , SLOT(slotSetHelp()));
     connect(m_ui.parameterList, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(slotParameterChanged(const QString&)));
-    //connect (m_ui.effectlist, SIGNAL (itemSelectionChanged() ) , this, SLOT ( itemSelectionChanged()));
-    connect(this, SIGNAL(transferParamDesc(const QDomElement&, const QString&, int , int)), m_ui.kplotwidget, SLOT(setPointLists(const QDomElement&, const QString&, int , int)));
     connect(m_ui.kplotwidget, SIGNAL(parameterChanged(QDomElement)), this , SLOT(slotUpdateEffectParams(QDomElement)));
     connect(m_ui.kplotwidget, SIGNAL(parameterList(QStringList)), this , SLOT(slotUpdateParameterList(QStringList)));
     /*ÜeffectLists["audio"]=audioEffectList;
@@ -116,7 +114,7 @@ void ComplexParameter::slotParameterChanged(const QString& text)
     updateButtonStatus();
 }
 
-void ComplexParameter::setupParam(const QDomElement& d, const QString& paramName, int from, int to)
+void ComplexParameter::setupParam(const QDomElement d, const QString& paramName, int from, int to)
 {
     m_param = d;
     m_ui.kplotwidget->setPointLists(d, paramName, from, to);
index 16468978894c8026d9c7e6d55f4ab2413c3971d5..7f02fb0c297ec7f3035b2aa08e632b7367f9a2ea 100644 (file)
@@ -34,10 +34,10 @@ public:
     QDomElement getParamDesc();
 private:
     Ui::KeyframeWidget_UI m_ui;
+    QDomElement m_param;
     void setupListView();
     void updateButtonStatus();
 
-    QDomElement m_param;
 public slots:
     void slotSetMoveX();
     void slotSetMoveY();
@@ -46,11 +46,10 @@ public slots:
     void slotShowInTimeline();
     void slotParameterChanged(const QString&);
     void itemSelectionChanged();
-    void setupParam(const QDomElement&, const QString& paramName, int, int);
+    void setupParam(const QDomElement, const QString& paramName, int, int);
     void slotUpdateEffectParams(QDomElement e);
     void slotUpdateParameterList(QStringList);
 signals:
-    void transferParamDesc(const QDomElement&, const QString&, int , int);
     void removeEffect(ClipItem*, QDomElement);
     void updateClipEffect(ClipItem*, QDomElement);
     void parameterChanged();
index be9e8aa1e1de930cdf070437ca3e52078334619d..2ef1db1e7e6d3cc387ab570bf2fe688ac6357151 100644 (file)
@@ -74,6 +74,12 @@ EffectStackView::EffectStackView(QWidget *parent) :
     setEnabled(false);
 }
 
+EffectStackView::~EffectStackView()
+{
+    m_effectLists.clear();
+    delete m_effectedit;
+}
+
 void EffectStackView::setMenu(QMenu *menu)
 {
     m_ui.buttonNew->setMenu(menu);
index b99fd9cc157e51e3e3c22a3bb3b24ee286519687..6d517c984f5738783316d48af564082146f29fbc 100644 (file)
@@ -31,6 +31,7 @@ class EffectStackView : public QWidget
 
 public:
     EffectStackView(QWidget *parent = 0);
+    virtual ~EffectStackView();
     void raiseWindow(QWidget*);
     void clear();
     void setMenu(QMenu *menu);
index 95eb57f04f1ffcb746df17234317d3959f125b7d..2c8e72c3ebbf87d0292934e243d66f4584681f3b 100644 (file)
@@ -116,6 +116,18 @@ Geometryval::Geometryval(const MltVideoProfile profile, QPoint frame_size, QWidg
 
 }
 
+
+Geometryval::~Geometryval()
+{
+    m_scene->disconnect();
+    delete m_paramRect;
+    delete m_path;
+    delete m_helper;
+    delete m_geom;
+    delete m_scene;
+}
+
+
 void Geometryval::slotAlignCenter()
 {
     int pos = m_ui.spinPos->value();
@@ -403,7 +415,7 @@ QDomElement Geometryval::getParamDesc()
     return m_param;
 }
 
-void Geometryval::setupParam(const QDomElement& par, int minFrame, int maxFrame)
+void Geometryval::setupParam(const QDomElement par, int minFrame, int maxFrame)
 {
     m_param = par;
     QString val = par.attribute("value");
@@ -508,43 +520,41 @@ void Geometryval::slotGeometry()
     QRectF r = m_paramRect->rect().normalized();
 
     QDialog d(this);
-    m_view = new Ui::GeometryPosition_UI();
-    m_view->setupUi(&d);
+    m_view.setupUi(&d);
     d.setWindowTitle(i18n("Frame Geometry"));
-    m_view->value_x->setMaximum(10000);
-    m_view->value_x->setMinimum(-10000);
-    m_view->value_y->setMaximum(10000);
-    m_view->value_y->setMinimum(-10000);
-    m_view->value_width->setMaximum(500000);
-    m_view->value_width->setMinimum(1);
-    m_view->value_height->setMaximum(500000);
-    m_view->value_height->setMinimum(1);
-
-    m_view->value_x->setValue(m_paramRect->pos().x());
-    m_view->value_y->setValue(m_paramRect->pos().y());
-    m_view->value_width->setValue(r.width());
-    m_view->value_height->setValue(r.height());
-    connect(m_view->button_reset , SIGNAL(clicked()) , this , SLOT(slotResetPosition()));
+    m_view.value_x->setMaximum(10000);
+    m_view.value_x->setMinimum(-10000);
+    m_view.value_y->setMaximum(10000);
+    m_view.value_y->setMinimum(-10000);
+    m_view.value_width->setMaximum(500000);
+    m_view.value_width->setMinimum(1);
+    m_view.value_height->setMaximum(500000);
+    m_view.value_height->setMinimum(1);
+
+    m_view.value_x->setValue(m_paramRect->pos().x());
+    m_view.value_y->setValue(m_paramRect->pos().y());
+    m_view.value_width->setValue(r.width());
+    m_view.value_height->setValue(r.height());
+    connect(m_view.button_reset , SIGNAL(clicked()) , this , SLOT(slotResetPosition()));
 
     if (d.exec() == QDialog::Accepted) {
-        m_paramRect->setPos(m_view->value_x->value(), m_view->value_y->value());
-        m_paramRect->setRect(0, 0, m_view->value_width->value(), m_view->value_height->value());
+        m_paramRect->setPos(m_view.value_x->value(), m_view.value_y->value());
+        m_paramRect->setRect(0, 0, m_view.value_width->value(), m_view.value_height->value());
         slotUpdateTransitionProperties();
     }
-    delete m_view;
 }
 
 void Geometryval::slotResetPosition()
 {
-    m_view->value_x->setValue(0);
-    m_view->value_y->setValue(0);
+    m_view.value_x->setValue(0);
+    m_view.value_y->setValue(0);
 
     if (m_frameSize.isNull()) {
-        m_view->value_width->setValue(m_profile.width);
-        m_view->value_height->setValue(m_profile.height);
+        m_view.value_width->setValue(m_profile.width);
+        m_view.value_height->setValue(m_profile.height);
     } else {
-        m_view->value_width->setValue(m_frameSize.x());
-        m_view->value_height->setValue(m_frameSize.y());
+        m_view.value_width->setValue(m_frameSize.x());
+        m_view.value_height->setValue(m_frameSize.y());
     }
 }
 
index daa9bea5b48234303e1494a17a653f3abaa41a6a..629a1ff1b58578bf0fd5a379c9e84b35c982a94b 100644 (file)
@@ -41,13 +41,13 @@ class Geometryval : public QWidget
     Q_OBJECT
 public:
     explicit Geometryval(const MltVideoProfile profile, QPoint frame_size, QWidget* parent = 0);
+    virtual ~Geometryval();
     QDomElement getParamDesc();
     void setFrameSize(QPoint p);
 
 private:
     Ui::Geometryval m_ui;
     MltVideoProfile m_profile;
-    //QGraphicsScene* scene;
     GraphicsSceneRectMove *m_scene;
     QDomElement m_param;
     QGraphicsRectItem *m_paramRect;
@@ -59,11 +59,11 @@ private:
     QAction *m_syncAction;
     bool m_fixedMode;
     QPoint m_frameSize;
+    Ui::GeometryPosition_UI m_view;
     void updateTransitionPath();
-    Ui::GeometryPosition_UI *m_view;
 
 public slots:
-    void setupParam(const QDomElement&, int, int);
+    void setupParam(const QDomElement, int, int);
 
 private slots:
     void slotNextFrame();