Commit ec0fdafc authored by ap@webkit.org's avatar ap@webkit.org

2008-02-23 Alexey Proskuryakov <ap@webkit.org>

        Reviewed by Darin.

        Move basic threading support from WebCore to WTF.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 6823545b
2008-02-23 Alexey Proskuryakov <ap@webkit.org>
Reviewed by Darin.
Move basic threading support from WebCore to WTF.
Added mutex protection to MessageQueue::killed() for paranoia sake.
* GNUmakefile.am:
* JavaScriptCore.exp:
* JavaScriptCore.pri:
* JavaScriptCore.vcproj/WTF/WTF.vcproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* JavaScriptCoreSources.bkl:
* wtf/Locker.h: Copied from WebCore/platform/Locker.h.
* wtf/MessageQueue.h: Copied from WebCore/platform/MessageQueue.h.
(WTF::::killed):
* wtf/Threading.h: Copied from WebCore/platform/Threading.h.
* wtf/ThreadingGtk.cpp: Copied from WebCore/platform/gtk/ThreadingGtk.cpp.
(WebCore::createThread):
* wtf/ThreadingNone.cpp: Copied from WebCore/platform/ThreadingNone.cpp.
* wtf/ThreadingPthreads.cpp: Copied from WebCore/platform/pthreads/ThreadingPthreads.cpp.
(WTF::createThread):
* wtf/ThreadingWin.cpp: Copied from WebCore/platform/win/ThreadingWin.cpp.
(WTF::createThread):
(WTF::Mutex::Mutex):
(WTF::Mutex::~Mutex):
(WTF::Mutex::lock):
(WTF::Mutex::tryLock):
(WTF::Mutex::unlock):
2008-02-22 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
......
......@@ -60,6 +60,7 @@ javascriptcore_sources += \
JavaScriptCore/pcre/pcre_xclass.cpp \
JavaScriptCore/wtf/Assertions.cpp \
JavaScriptCore/wtf/HashTable.cpp \
JavaScriptCore/wtf/ThreadingGtk.cpp \
JavaScriptCore/wtf/unicode/UTF8.cpp
# Debug build
......
......@@ -298,3 +298,17 @@ _jscore_collector_introspection
_jscore_fastmalloc_introspection
_kJSClassDefinitionEmpty
_kjs_strtod
__ZN3WTF5MutexC1Ev
__ZN3WTF5MutexD1Ev
__ZN3WTF15ThreadCondition4waitERNS_5MutexE
__ZN3WTF5Mutex7tryLockEv
__ZN3WTF12detachThreadEj
__ZN3WTF13currentThreadEv
__ZN3WTF5Mutex4lockEv
__ZN3WTF23waitForThreadCompletionEjPPv
__ZN3WTF15ThreadConditionC1Ev
__ZN3WTF15ThreadConditionD1Ev
__ZN3WTF5Mutex6unlockEv
__ZN3WTF12createThreadEPFPvS0_ES0_
__ZN3WTF15ThreadCondition9broadcastEv
__ZN3WTF15ThreadCondition6signalEv
......@@ -113,10 +113,19 @@ SOURCES += \
}
qt-port:SOURCES += \
wtf/ThreadingPthreads.cpp \
bindings/qt/qt_class.cpp \
bindings/qt/qt_instance.cpp \
bindings/qt/qt_runtime.cpp
gtk-port:SOURCES += \
wtf/ThreadingGtk.cpp
}
!gtk-port:SOURCES += \
wtf/ThreadingNone.cpp
}
!CONFIG(QTDIR_build) {
defineTest(addExtraCompiler) {
QMAKE_EXTRA_COMPILERS += $$1
......
......@@ -273,10 +273,18 @@
RelativePath="..\..\wtf\ListRefPtr.h"
>
</File>
<File
RelativePath="..\..\wtf\Locker.h"
>
</File>
<File
RelativePath="..\..\wtf\MathExtras.h"
>
</File>
<File
RelativePath="..\..\wtf\MessageQueue.h"
>
</File>
<File
RelativePath="..\..\wtf\Noncopyable.h"
>
......@@ -341,6 +349,14 @@
RelativePath="..\..\wtf\TCSystemAlloc.h"
>
</File>
<File
RelativePath="..\..\wtf\Threading.h"
>
</File>
<File
RelativePath="..\..\wtf\ThreadingWin.cpp"
>
</File>
<File
RelativePath="..\..\wtf\unicode\Unicode.h"
>
......
......@@ -237,6 +237,10 @@
E11D51760B2E798D0056C188 /* StringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E11D51750B2E798D0056C188 /* StringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
E195679609E7CF1200B89D13 /* UnicodeIcu.h in Headers */ = {isa = PBXBuildFile; fileRef = E195678F09E7CF1200B89D13 /* UnicodeIcu.h */; settings = {ATTRIBUTES = (Private, ); }; };
E195679809E7CF1200B89D13 /* Unicode.h in Headers */ = {isa = PBXBuildFile; fileRef = E195679409E7CF1200B89D13 /* Unicode.h */; settings = {ATTRIBUTES = (Private, ); }; };
E1EE79230D6C95CD00FEA3BA /* Threading.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EE79220D6C95CD00FEA3BA /* Threading.h */; settings = {ATTRIBUTES = (Private, ); }; };
E1EE79280D6C964500FEA3BA /* Locker.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EE79270D6C964500FEA3BA /* Locker.h */; settings = {ATTRIBUTES = (Private, ); }; };
E1EE793D0D6C9B9200FEA3BA /* ThreadingPthreads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EE793C0D6C9B9200FEA3BA /* ThreadingPthreads.cpp */; };
E1EE798C0D6CA53D00FEA3BA /* MessageQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EE798B0D6CA53D00FEA3BA /* MessageQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
E1EF79AA0CE97BA60088D500 /* UTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EF79A80CE97BA60088D500 /* UTF8.cpp */; };
E1EF79AB0CE97BA60088D500 /* UTF8.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EF79A90CE97BA60088D500 /* UTF8.h */; };
/* End PBXBuildFile section */
......@@ -576,6 +580,10 @@
E11D51750B2E798D0056C188 /* StringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringExtras.h; sourceTree = "<group>"; };
E195678F09E7CF1200B89D13 /* UnicodeIcu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnicodeIcu.h; sourceTree = "<group>"; };
E195679409E7CF1200B89D13 /* Unicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Unicode.h; sourceTree = "<group>"; };
E1EE79220D6C95CD00FEA3BA /* Threading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Threading.h; sourceTree = "<group>"; };
E1EE79270D6C964500FEA3BA /* Locker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Locker.h; sourceTree = "<group>"; };
E1EE793C0D6C9B9200FEA3BA /* ThreadingPthreads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadingPthreads.cpp; sourceTree = "<group>"; };
E1EE798B0D6CA53D00FEA3BA /* MessageQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageQueue.h; sourceTree = "<group>"; };
E1EF79A80CE97BA60088D500 /* UTF8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UTF8.cpp; sourceTree = "<group>"; };
E1EF79A90CE97BA60088D500 /* UTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTF8.h; sourceTree = "<group>"; };
F5BB2BC5030F772101FCFE1D /* completion.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = completion.h; sourceTree = "<group>"; tabWidth = 8; };
......@@ -899,8 +907,10 @@
65DFC92F08EA173A00F7300B /* HashTraits.h */,
657EB7450B708F540063461B /* ListHashSet.h */,
148A1626095D16BB00666D0D /* ListRefPtr.h */,
E1EE79270D6C964500FEA3BA /* Locker.h */,
5DBD18AF0C5401A700C15EAE /* MallocZoneSupport.h */,
BCF6553B0A2048DE0038A194 /* MathExtras.h */,
E1EE798B0D6CA53D00FEA3BA /* MessageQueue.h */,
9303F5690991190000AD71B8 /* Noncopyable.h */,
9303F5A409911A5800AD71B8 /* OwnArrayPtr.h */,
9303F567099118FA00AD71B8 /* OwnPtr.h */,
......@@ -916,6 +926,8 @@
6541BD6F08E80A17002CBEE7 /* TCSpinLock.h */,
6541BD7008E80A17002CBEE7 /* TCSystemAlloc.cpp */,
6541BD7108E80A17002CBEE7 /* TCSystemAlloc.h */,
E1EE79220D6C95CD00FEA3BA /* Threading.h */,
E1EE793C0D6C9B9200FEA3BA /* ThreadingPthreads.cpp */,
E195678D09E7CF1200B89D13 /* unicode */,
935AF46B09E9D9DB00ACD1D8 /* UnusedParam.h */,
6592C316098B7DE10003D4F6 /* Vector.h */,
......@@ -1145,6 +1157,7 @@
65F340940CD6C1C000C0CA8B /* LocalStorage.h in Headers */,
5DBD18B00C5401A700C15EAE /* MallocZoneSupport.h in Headers */,
BCF655590A2049710038A194 /* MathExtras.h in Headers */,
E1EE798C0D6CA53D00FEA3BA /* MessageQueue.h in Headers */,
932F5B840822A1C700736975 /* NP_jsobject.h in Headers */,
9303F56A0991190000AD71B8 /* Noncopyable.h in Headers */,
9303F5A509911A5800AD71B8 /* OwnArrayPtr.h in Headers */,
......@@ -1164,6 +1177,7 @@
6541BD7208E80A17002CBEE7 /* TCPageMap.h in Headers */,
6541BD7308E80A17002CBEE7 /* TCSpinLock.h in Headers */,
6541BD7508E80A17002CBEE7 /* TCSystemAlloc.h in Headers */,
E1EE79230D6C95CD00FEA3BA /* Threading.h in Headers */,
E1EF79AB0CE97BA60088D500 /* UTF8.h in Headers */,
E195679809E7CF1200B89D13 /* Unicode.h in Headers */,
E195679609E7CF1200B89D13 /* UnicodeIcu.h in Headers */,
......@@ -1241,6 +1255,7 @@
93E26BFE08B151D400F85226 /* ucpinternal.h in Headers */,
932F5B5C0822A1C700736975 /* ustring.h in Headers */,
14ABB36F099C076400E2A24F /* value.h in Headers */,
E1EE79280D6C964500FEA3BA /* Locker.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1511,6 +1526,7 @@
932F5BBD0822A1C700736975 /* runtime_method.cpp in Sources */,
932F5BBA0822A1C700736975 /* runtime_object.cpp in Sources */,
932F5BC50822A1C700736975 /* runtime_root.cpp in Sources */,
E1EE793D0D6C9B9200FEA3BA /* ThreadingPthreads.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......
......@@ -113,6 +113,7 @@ Source files for JSCore.
wtf/FastMalloc.cpp
wtf/HashTable.cpp
wtf/TCSystemAlloc.cpp
wtf/ThreadingNone.cpp
wtf/unicode/UTF8.cpp
</set>
......
......@@ -30,7 +30,7 @@
#include <wtf/Noncopyable.h>
namespace WebCore {
namespace WTF {
template <typename T> class Locker : Noncopyable {
public:
......@@ -42,4 +42,6 @@ private:
}
using WTF::Locker;
#endif
......@@ -29,12 +29,12 @@
#ifndef MessageQueue_h
#define MessageQueue_h
#include "Threading.h"
#include <wtf/Assertions.h>
#include <wtf/Deque.h>
#include <wtf/Noncopyable.h>
#include <wtf/Threading.h>
namespace WebCore {
namespace WTF {
template<typename DataType>
class MessageQueue : Noncopyable {
......@@ -46,10 +46,10 @@ namespace WebCore {
bool waitForMessage(DataType&);
bool tryGetMessage(DataType&);
void kill();
bool killed() const { return m_killed; }
bool killed() const;
private:
Mutex m_mutex;
mutable Mutex m_mutex;
ThreadCondition m_condition;
Deque<DataType> m_queue;
bool m_killed;
......@@ -110,6 +110,15 @@ namespace WebCore {
m_killed = true;
m_condition.broadcast();
}
template<typename DataType>
inline bool MessageQueue<DataType>::killed() const
{
MutexLocker lock(m_mutex);
return m_killed;
}
}
using WTF::MessageQueue;
#endif // MessageQueue_h
......@@ -59,9 +59,8 @@
#ifndef Threading_h
#define Threading_h
#include "Locker.h"
#include <wtf/Assertions.h>
#include <wtf/Locker.h>
#include <wtf/Noncopyable.h>
#if PLATFORM(WIN_OS)
......@@ -92,7 +91,7 @@ class QWaitCondition;
#include <stdint.h>
namespace WebCore {
namespace WTF {
typedef uint32_t ThreadIdentifier;
typedef void* (*ThreadFunction)(void* argument);
......@@ -231,18 +230,26 @@ private:
#endif
};
typedef void MainThreadFunction(void*);
void callOnMainThread(MainThreadFunction*, void* context);
void initializeThreading();
#if !PLATFORM(WIN) && !PLATFORM(GTK)
#if !PLATFORM(GTK)
inline void initializeThreading()
{
}
#endif
} // namespace WebCore
} // namespace WTF
using WTF::Mutex;
using WTF::MutexLocker;
using WTF::ThreadCondition;
using WTF::ThreadIdentifier;
using WTF::ThreadSafeShared;
using WTF::createThread;
using WTF::currentThread;
using WTF::detachThread;
using WTF::initializeThreading;
using WTF::waitForThreadCompletion;
#endif // Threading_h
......@@ -31,34 +31,11 @@
#include "Threading.h"
#include "HashMap.h"
#include "Logging.h"
#include <glib.h>
namespace WebCore {
struct FunctionWithContext {
MainThreadFunction* function;
void* context;
};
static gboolean callFunctionOnMainThread(gpointer data)
{
FunctionWithContext* functionWithContext = static_cast<FunctionWithContext*>(data);
functionWithContext->function(functionWithContext->context);
delete functionWithContext;
return FALSE;
}
void callOnMainThread(MainThreadFunction* function, void* context)
{
ASSERT(function);
FunctionWithContext* functionWithContext = new FunctionWithContext;
functionWithContext->function = function;
functionWithContext->context = context;
g_timeout_add(0, callFunctionOnMainThread, functionWithContext);
}
void initializeThreading()
{
if (!g_thread_supported())
......@@ -127,7 +104,6 @@ ThreadIdentifier createThread(ThreadFunction entryPoint, void* data)
}
ThreadIdentifier threadID = establishIdentifierForThread(thread);
LOG(Threading, "Created thread with thread id %u", threadID);
return threadID;
}
......
......@@ -29,12 +29,11 @@
#include "config.h"
#include "Threading.h"
#include "Logging.h"
#include <wtf/HashMap.h>
#include <errno.h>
namespace WebCore {
namespace WTF {
static Mutex& threadMapMutex()
{
......@@ -97,7 +96,6 @@ ThreadIdentifier createThread(ThreadFunction entryPoint, void* data)
}
ThreadIdentifier threadID = establishIdentifierForPthreadHandle(threadHandle);
LOG(Threading, "Created thread with thread id %u", threadID);
return threadID;
}
......@@ -197,4 +195,4 @@ void ThreadCondition::broadcast()
ASSERT(false);
}
} // namespace WebCore
} // namespace WTF
/*
* Copyright (C) 2007 Apple Inc. All rights reserved.
* Copyright (C) 2007 Brent Fulgham
* Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......@@ -26,10 +25,95 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "Threading.h"
namespace WebCore {
#include <windows.h>
#include <wtf/HashMap.h>
namespace WTF {
static Mutex& threadMapMutex()
{
static Mutex mutex;
return mutex;
}
static HashMap<DWORD, HANDLE>& threadMap()
{
static HashMap<DWORD, HANDLE> map;
return map;
}
static void storeThreadHandleByIdentifier(DWORD threadID, HANDLE threadHandle)
{
MutexLocker locker(threadMapMutex());
threadMap().add(threadID, threadHandle);
}
static HANDLE threadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
return threadMap().get(id);
}
static void clearThreadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
ASSERT(threadMap().contains(id));
threadMap().remove(id);
}
ThreadIdentifier createThread(ThreadFunction entryPoint, void* data)
{
DWORD threadIdentifier = 0;
ThreadIdentifier threadID = 0;
HANDLE hEvent = ::CreateEvent(0, FALSE, FALSE, 0);
HANDLE threadHandle = ::CreateThread(0, 0, (LPTHREAD_START_ROUTINE)entryPoint, data, 0, &threadIdentifier);
if (!threadHandle) {
LOG_ERROR("Failed to create thread at entry point %p with data %p", entryPoint, data);
return 0;
}
threadID = static_cast<ThreadIdentifier>(threadIdentifier);
storeThreadHandleByIdentifier(threadIdentifier, threadHandle);
return threadID;
}
int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
{
ASSERT(threadID);
HANDLE threadHandle = threadHandleForIdentifier(threadID);
if (!threadHandle)
LOG_ERROR("ThreadIdentifier %u did not correspond to an active thread when trying to quit", threadID);
DWORD joinResult = ::WaitForSingleObject(threadHandle, INFINITE);
if (joinResult == WAIT_FAILED)
LOG_ERROR("ThreadIdentifier %u was found to be deadlocked trying to quit", threadID);
::CloseHandle(threadHandle);
clearThreadHandleForIdentifier(threadID);
return joinResult;
}
void detachThread(ThreadIdentifier threadID)
{
ASSERT(threadID);
HANDLE threadHandle = threadHandleForIdentifier(threadID);
if (threadHandle)
::CloseHandle(threadHandle);
clearThreadHandleForIdentifier(threadID);
}
ThreadIdentifier currentThread()
{
return static_cast<ThreadIdentifier>(::GetCurrentThreadId());
}
Mutex::Mutex()
{
......@@ -80,4 +164,4 @@ void Mutex::unlock()
::LeaveCriticalSection(&m_mutex.m_internalMutex);
}
} // namespace WebCore
} // namespace WTF
2008-02-23 Alexey Proskuryakov <ap@webkit.org>
Reviewed by Darin.
Move basic threading support from WebCore to WTF.
One call that remains in WebCore is callOnMainThread(), and it has its own header now.
* ForwardingHeaders/wtf/Locker.h: Added.
* ForwardingHeaders/wtf/MessageQueue.h: Added.
* ForwardingHeaders/wtf/Threading.h: Added.
* GNUmakefile.am:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* WebCoreSources.bkl:
* bindings/js/JSCustomSQLTransactionCallback.cpp:
* dom/XMLTokenizer.cpp:
* loader/icon/IconDatabase.cpp:
(WebCore::iconDatabase):
* loader/icon/IconDatabase.h:
* platform/Locker.h: Removed.
* platform/MainThread.h: Copied from WebCore/platform/Threading.h.
(WebCore::initializeThreadingAndMainThread):
* platform/MessageQueue.h: Removed.
* platform/SecurityOrigin.h:
* platform/Threading.h: Removed.
* platform/ThreadingNone.cpp: Removed.
* platform/gtk/MainThreadGtk.cpp: Copied from WebCore/platform/gtk/ThreadingGtk.cpp.
* platform/gtk/ThreadingGtk.cpp: Removed.
* platform/mac/MainThreadMac.mm: Copied from WebCore/platform/mac/Threading.mm.
* platform/mac/Threading.mm: Removed.
* platform/pthreads: Removed.
* platform/pthreads/ThreadingPthreads.cpp: Removed.
* platform/qt/MainThreadQt.cpp: Copied from WebCore/platform/qt/ThreadingQt.cpp.
* platform/qt/ThreadingQt.cpp: Removed.
* platform/sql/SQLValue.h:
* platform/sql/SQLiteAuthorizer.h:
* platform/sql/SQLiteDatabase.h:
* platform/win/MainThreadWin.cpp: Copied from WebCore/platform/win/ThreadingWin.cpp.
(WebCore::initializeThreadingAndMainThread):
* platform/win/MutexWin.cpp: Removed.
* platform/win/ThreadingWin.cpp: Removed.
* platform/wx/MainThreadWx.cpp: Copied from WebCore/platform/wx/ThreadingWx.cpp.
* platform/wx/ThreadingWx.cpp: Removed.
* storage/Database.cpp:
(WebCore::Database::Database):
* storage/Database.h:
* storage/DatabaseTask.h:
* storage/DatabaseThread.h:
* storage/DatabaseTracker.cpp:
* storage/OriginQuotaManager.h:
* storage/SQLError.h:
* storage/SQLResultSet.h:
* storage/SQLStatement.h:
* storage/SQLStatementCallback.h:
* storage/SQLStatementErrorCallback.h:
* storage/SQLTransaction.h:
* storage/SQLTransactionCallback.h:
* storage/SQLTransactionErrorCallback.h:
* webcore-wx.bkl:
2008-02-23 David Kilzer <ddkilzer@apple.com>
Please clarify licensing for some files
#include <JavaScriptCore/Locker.h>
#include <JavaScriptCore/MessageQueue.h>
#include <JavaScriptCore/Threading.h>
......@@ -948,6 +948,7 @@ webkitgtk_sources += \
WebCore/platform/gtk/Language.cpp \
WebCore/platform/gtk/LocalizedStringsGtk.cpp \
WebCore/platform/gtk/LoggingGtk.cpp \
WebCore/platform/gtk/MainThreadGtk.cpp \
WebCore/platform/gtk/MIMETypeRegistryGtk.cpp \
WebCore/platform/gtk/MouseEventGtk.cpp \
WebCore/platform/gtk/PasteboardGtk.cpp \
......@@ -962,7 +963,6 @@ webkitgtk_sources += \
WebCore/platform/gtk/SystemTimeGtk.cpp \
WebCore/platform/gtk/TemporaryLinkStubs.cpp \
WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp \
WebCore/platform/gtk/ThreadingGtk.cpp \
WebCore/platform/gtk/WheelEventGtk.cpp \
WebCore/platform/gtk/WidgetGtk.cpp \
WebCore/platform/gtk/gtk2drawing.c \
......
......@@ -932,6 +932,7 @@ qt-port {
platform/graphics/qt/SimpleFontDataQt.cpp \
platform/qt/KURLQt.cpp \
platform/qt/Localizations.cpp \
platform/qt/MainThreadQt.cpp \
platform/qt/MIMETypeRegistryQt.cpp \
platform/qt/PasteboardQt.cpp \
platform/qt/PlatformKeyboardEventQt.cpp \
......@@ -951,7 +952,6 @@ qt-port {
platform/text/qt/TextBoundaries.cpp \
platform/text/qt/TextBreakIteratorQt.cpp \
platform/text/qt/TextCodecQt.cpp \
platform/qt/ThreadingQt.cpp \
platform/qt/WheelEventQt.cpp \
platform/qt/WidgetQt.cpp \
../WebKit/qt/WebCoreSupport/ChromeClientQt.cpp \
......@@ -967,7 +967,6 @@ qt-port {
../WebKit/qt/Api/qwebhistory.cpp \
../WebKit/qt/Api/qwebsettings.cpp \
../WebKit/qt/Api/qwebhistoryinterface.cpp \
platform/ThreadingNone.cpp
unix: SOURCES += platform/qt/SystemTimeQt.cpp
else: SOURCES += platform/win/SystemTimeWin.cpp
......@@ -1038,6 +1037,7 @@ gtk-port {
platform/gtk/Language.cpp \
platform/gtk/LocalizedStringsGtk.cpp \
platform/gtk/LoggingGtk.cpp \
platform/gtk/MainThreadGtk.cpp \
platform/gtk/MIMETypeRegistryGtk.cpp \
platform/gtk/MouseEventGtk.cpp \
platform/gtk/PasteboardGtk.cpp \
......@@ -1052,7 +1052,6 @@ gtk-port {
platform/gtk/SystemTimeGtk.cpp \
platform/gtk/TemporaryLinkStubs.cpp \
platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp \
platform/gtk/ThreadingGtk.cpp \
platform/gtk/WheelEventGtk.cpp \
platform/gtk/WidgetGtk.cpp \
platform/gtk/gtk2drawing.c \
......
......@@ -3239,7 +3239,7 @@
>
</File>
<File