[devel] kdenonbeta/kdedebian/kalternatives/src

Mario Bensi <[email protected]> Thu, 30 Sep 2004 13:48:54 +0200 (CEST)
Newsgroups gmane.comp.kde.devel.debian
Message-ID <20040930114854.44B829961__22963.1078466356$1096549965$gmane$org@office.kde.org>
CVS commit by bensi: 

"thread safe"


  M +4 -0      addalternatives.cpp   1.4
  M +13 -14    altitemelement.cpp   1.4
  M +3 -2      altitemelement.h   1.4
  M +4 -0      kalternatives.cpp   1.9


--- kdenonbeta/kdedebian/kalternatives/src/addalternatives.cpp  #1.3:1.4
@@ -130,4 +130,8 @@ void AddAlternatives::slotOkClicked()
                         altItem->setText( 3, m_small_desc);
                 }
+                else
+                {
+                        altItem->searchDescription();
+                }
 #endif
                 m_treeItem->setChanged(TRUE);

--- kdenonbeta/kdedebian/kalternatives/src/altitemelement.cpp  #1.3:1.4
@@ -50,20 +50,19 @@ AltItemElement::~AltItemElement()
 #ifdef DEBIAN
 
-QString AltItemElement::getDescription()
+void AltItemElement::searchDescription()
 {
-        if (m_desc == "")
-        {
+        m_mutex.lock();
                 FindDescriptionThread *thread = new FindDescriptionThread(this);
                 thread->start();
-        }
-        
-        return m_desc; 
+        m_mutex.unlock();
 }
 
 void AltItemElement::setDescription(QString desc) 
 {
+        m_mutex.lock();
         m_desc = desc; 
         desc.truncate(desc.find("\n"));
         setText( 3, desc);
+        m_mutex.unlock();
 }
 
@@ -84,8 +83,8 @@ FindDescriptionThread::~FindDescriptionT
 void FindDescriptionThread::run()
 {
-        /*QString tmp = getDescriptionProcess();
-        m_altItem->setDescription(tmp);*/
-        sleep(3);
-        m_altItem->setDescription("blub");
+        QString tmp = getDescriptionProcess();
+        m_altItem->setDescription(tmp);
+        /*sleep(3);
+        m_altItem->setDescription("blub");*/
 }
 
@@ -134,5 +133,5 @@ void FindDescriptionThread::slotGetExecu
 QString FindDescriptionThread::getDescriptionProcess()
 {
-        m_mutex.lock();
+        
         m_exec = "";
         KProcess *proc = new KProcess();
@@ -168,5 +167,5 @@ QString FindDescriptionThread::getDescri
                 procdesc->wait();
         }
-        m_mutex.unlock();
+        
         return m_descTmp;
 }

--- kdenonbeta/kdedebian/kalternatives/src/altitemelement.h  #1.3:1.4
@@ -40,4 +40,5 @@ class AltItemElement :  public QCheckLis
 //#ifdef DEBIAN
         QString m_desc;
+        QMutex m_mutex;
 //#endif
         
@@ -51,5 +52,6 @@ public:
         QString getPath() const {return m_path; }
 //#ifdef DEBIAN
-        QString getDescription();
+        QString getDescription() const {return m_desc;}
+        void searchDescription();
         void setDescription(QString desc);
         
@@ -65,5 +67,4 @@ class FindDescriptionThread : public QOb
         QString m_descTmp;
         QString m_exec;
-        QMutex m_mutex;
 public:
         FindDescriptionThread(AltItemElement *altItem);

--- kdenonbeta/kdedebian/kalternatives/src/kalternatives.cpp  #1.8:1.9
@@ -182,4 +182,8 @@ void Kalternatives::slotSelectAlternativ
                                 altItem->setText( 3, m_small_desc);
                         }
+                        else
+                        {
+                                altItem->searchDescription();
+                        }
 #endif
                 }