[Digikam-devel] extragear/graphics/digikamimageplugins/common/dialogs

Gilles Caulier caulier.gilles at free.fr
Wed Dec 14 10:49:43 GMT 2005


SVN commit 488411 by cgilles:

Digikam from trunk : fix memory leak : KAboutData isn't cleaned automaticly by KDE lib.

CCMAIL: digikam-devel at kde.org

 M  +7 -1      imagedialogbase.cpp  
 M  +2 -0      imagedialogbase.h  
 M  +42 -37    imageguidedialog.cpp  
 M  +2 -0      imageguidedialog.h  


--- trunk/extragear/graphics/digikamimageplugins/common/dialogs/imagedialogbase.cpp #488410:488411
@@ -68,6 +68,8 @@
 {
     kapp->setOverrideCursor( KCursor::waitCursor() );
 
+    m_about = 0L;
+    
     setButtonWhatsThis ( Default, i18n("<p>Reset all filter parameters to their default values.") );
     setButtonWhatsThis ( User3, i18n("<p>Load all filter parameters from settings text file.") );
     setButtonWhatsThis ( User2, i18n("<p>Save all filter parameters to settings text file.") );
@@ -94,6 +96,9 @@
 ImageDialogBase::~ImageDialogBase()
 {
     saveDialogSize(m_name + QString::QString(" Tool Dialog"));
+
+    if (m_about)
+       delete m_about;           
 }
 
 void ImageDialogBase::slotHelp()
@@ -103,8 +108,9 @@
 
 void ImageDialogBase::setAboutData(KAboutData *about)
 {
+    m_about = about;
     QPushButton *helpButton = actionButton( Help );
-    KHelpMenu* helpMenu = new KHelpMenu(this, about, false);
+    KHelpMenu* helpMenu = new KHelpMenu(this, m_about, false);
     helpMenu->menu()->removeItemAt(0);
     helpMenu->menu()->insertItem(i18n("Plugin Handbook"), this, SLOT(slotHelp()), 0, -1, 0);
     helpButton->setPopup( helpMenu->menu() );
--- trunk/extragear/graphics/digikamimageplugins/common/dialogs/imagedialogbase.h #488410:488411
@@ -60,6 +60,8 @@
     QWidget        *m_parent;
     
     QString         m_name;
+
+    KAboutData     *m_about;
     
 private slots:
 
--- trunk/extragear/graphics/digikamimageplugins/common/dialogs/imageguidedialog.cpp #488410:488411
@@ -72,6 +72,7 @@
     m_currentRenderingMode = NoneRendering;
     m_timer                = 0L;
     m_threadedFilter       = 0L;
+    m_about                = 0L;    
     QString whatsThis;
 
     setButtonWhatsThis ( Default, i18n("<p>Reset all filter parameters to their default values.") );
@@ -164,6 +165,9 @@
 
     if (m_threadedFilter)
        delete m_threadedFilter;
+
+    if (m_about)
+       delete m_about;                    
 }
 
 void ImageGuideDialog::readSettings(void)
@@ -212,8 +216,9 @@
 
 void ImageGuideDialog::setAboutData(KAboutData *about)
 {
+    m_about = about;
     QPushButton *helpButton = actionButton( Help );
-    KHelpMenu* helpMenu = new KHelpMenu(this, about, false);
+    KHelpMenu* helpMenu = new KHelpMenu(this, m_about, false);
     helpMenu->menu()->removeItemAt(0);
     helpMenu->menu()->insertItem(i18n("Plugin Handbook"), this, SLOT(slotHelp()), 0, -1, 0);
     helpButton->setPopup( helpMenu->menu() );
@@ -234,15 +239,15 @@
 void ImageGuideDialog::slotResized(void)
 {
     if (m_currentRenderingMode == FinalRendering)
-       {
+    {
        m_imagePreviewWidget->update();
        return;
-       }
+    }
     else if (m_currentRenderingMode == PreviewRendering)
-       {
+    {
        if (m_threadedFilter)
           m_threadedFilter->stopComputation();
-       }
+    }
 
     QTimer::singleShot(0, this, SLOT(slotEffect()));
 }
@@ -263,12 +268,12 @@
 void ImageGuideDialog::slotCancel()
 {
     if (m_currentRenderingMode != NoneRendering)
-       {
+    {
        if (m_threadedFilter)
           m_threadedFilter->stopComputation();
 
        kapp->restoreOverrideCursor();
-       }
+    }
     
     done(Cancel);
 }
@@ -276,12 +281,12 @@
 void ImageGuideDialog::closeEvent(QCloseEvent *e)
 {
     if (m_currentRenderingMode != NoneRendering)
-       {
+    {
        if (m_threadedFilter)
           m_threadedFilter->stopComputation();
 
        kapp->restoreOverrideCursor();
-       }
+    }
 
     e->accept();
 }
@@ -294,10 +299,10 @@
 void ImageGuideDialog::slotTimer()
 {
     if (m_timer)
-       {
+    {
        m_timer->stop();
        delete m_timer;
-       }
+    }
 
     m_timer = new QTimer( this );
     connect( m_timer, SIGNAL(timeout()),
@@ -353,50 +358,50 @@
     if (!d) return;
 
     if (d->starting)           // Computation in progress !
-        {
+    {
         m_progressBar->setValue(d->progress);
-        }
+    }
     else
+    {
+        if (d->success)        // Computation Completed !
         {
-        if (d->success)        // Computation Completed !
+            switch (m_currentRenderingMode)
             {
-            switch (m_currentRenderingMode)
-              {
-              case PreviewRendering:
-                 {
-                 kdDebug() << "Preview " << m_name << " completed..." << endl;
-                 putPreviewData();
-                 abortPreview();
-                 break;
-                 }
+                case PreviewRendering:
+                {
+                    kdDebug() << "Preview " << m_name << " completed..." << endl;
+                    putPreviewData();
+                    abortPreview();
+                    break;
+                }
 
-              case FinalRendering:
-                 {
-                 kdDebug() << "Final" << m_name << " completed..." << endl;
-                 putFinalData();
-                 kapp->restoreOverrideCursor();
-                 accept();
-                 break;
-                 }
-              }
+                case FinalRendering:
+                {
+                    kdDebug() << "Final" << m_name << " completed..." << endl;
+                    putFinalData();
+                    kapp->restoreOverrideCursor();
+                    accept();
+                    break;
+                }
             }
+        }
         else                   // Computation Failed !
+        {
+            switch (m_currentRenderingMode)
             {
-            switch (m_currentRenderingMode)
+                case PreviewRendering:
                 {
-                case PreviewRendering:
-                    {
                     kdDebug() << "Preview " << m_name << " failed..." << endl;
                     // abortPreview() must be call here for set progress bar to 0 properly.
                     abortPreview();
                     break;
-                    }
+                }
 
                 case FinalRendering:
                     break;
-                }
             }
         }
+    }
 
     delete d;
 }
--- trunk/extragear/graphics/digikamimageplugins/common/dialogs/imageguidedialog.h #488410:488411
@@ -98,6 +98,8 @@
     KProgress    *m_progressBar;
         
     KColorButton *m_guideColorBt;
+
+    KAboutData   *m_about;
     
 private slots:
     



More information about the Digikam-devel mailing list