[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Thu Apr 8 00:51:13 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit d9a7cdda01126a667a101daef7acbebdb5993d03
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 28 20:28:47 2009 +0000

    2009-12-28  Shu Chang  <Chang.Shu at nokia.com>
    
            Reviewed by Laszlo Gombos.
    
            [Qt] Delete ThreadPrivate instance after it is finished.
            https://bugs.webkit.org/show_bug.cgi?id=32614
    
            * wtf/qt/ThreadingQt.cpp:
            (WTF::ThreadMonitor::instance):
            (WTF::ThreadMonitor::threadFinished):
            (WTF::createThreadInternal):
            (WTF::detachThread):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52602 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 5a9a813..0b5fe78 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,16 @@
+2009-12-28  Shu Chang  <Chang.Shu at nokia.com>
+
+        Reviewed by Laszlo Gombos.
+
+        [Qt] Delete ThreadPrivate instance after it is finished.
+        https://bugs.webkit.org/show_bug.cgi?id=32614
+
+        * wtf/qt/ThreadingQt.cpp:
+        (WTF::ThreadMonitor::instance):
+        (WTF::ThreadMonitor::threadFinished):
+        (WTF::createThreadInternal):
+        (WTF::detachThread):
+
 2009-12-28  Patrick Gansterer  <paroga at paroga.com>
 
         Reviewed by Maciej Stachowiak.
diff --git a/JavaScriptCore/wtf/qt/ThreadingQt.cpp b/JavaScriptCore/wtf/qt/ThreadingQt.cpp
index 9aee0ac..9bd400c 100644
--- a/JavaScriptCore/wtf/qt/ThreadingQt.cpp
+++ b/JavaScriptCore/wtf/qt/ThreadingQt.cpp
@@ -66,6 +66,21 @@ void ThreadPrivate::run()
     m_returnValue = m_entryPoint(m_data);
 }
 
+class ThreadMonitor : public QObject {
+    Q_OBJECT
+public:
+    static ThreadMonitor * instance()
+    {
+        static ThreadMonitor *instance = new ThreadMonitor();
+        return instance;
+    }
+
+public Q_SLOTS:
+    void threadFinished()
+    {
+        sender()->deleteLater();
+    }
+};
 
 static Mutex* atomicallyInitializedStaticMutex;
 
@@ -157,6 +172,9 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
         LOG_ERROR("Failed to create thread at entry point %p with data %p", entryPoint, data);
         return 0;
     }
+
+    QObject::connect(thread, SIGNAL(finished()), ThreadMonitor::instance(), SLOT(threadFinished()));
+
     thread->start();
 
     QThread* threadRef = static_cast<QThread*>(thread);
@@ -183,8 +201,10 @@ int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
     return !res;
 }
 
-void detachThread(ThreadIdentifier)
+void detachThread(ThreadIdentifier threadID)
 {
+    ASSERT(threadID);
+    clearThreadForIdentifier(threadID);
 }
 
 ThreadIdentifier currentThread()
@@ -270,4 +290,6 @@ void ThreadCondition::broadcast()
 
 } // namespace WebCore
 
+#include "ThreadingQt.moc"
+
 #endif

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list