Changeset 181220 in webkit


Ignore:
Timestamp:
Mar 7, 2015 8:57:54 PM (9 years ago)
Author:
Brent Fulgham
Message:

[Win] Revive WTF::WorkQueue on Windows
https://bugs.webkit.org/show_bug.cgi?id=142432

Reviewed by Darin Adler.

Revive the Windows implementation of WTF::WorkQueue.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • wtf/WorkQueue.h:
  • wtf/win/WorkItemWin.cpp: Added.
  • wtf/win/WorkItemWin.h: Added.
  • wtf/win/WorkQueueWin.cpp: Added.
Location:
trunk/Source/WTF
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r181180 r181220  
     12015-03-07  Brent Fulgham  <bfulgham@apple.com>
     2
     3        [Win] Revive WTF::WorkQueue on Windows
     4        https://bugs.webkit.org/show_bug.cgi?id=142432
     5
     6        Reviewed by Darin Adler.
     7
     8        Revive the Windows implementation of WTF::WorkQueue.
     9
     10        * WTF.vcxproj/WTF.vcxproj:
     11        * WTF.vcxproj/WTF.vcxproj.filters:
     12        * wtf/WorkQueue.h:
     13        * wtf/win/WorkItemWin.cpp: Added.
     14        * wtf/win/WorkItemWin.h: Added.
     15        * wtf/win/WorkQueueWin.cpp: Added.
     16
    1172015-03-06  Geoffrey Garen  <ggaren@apple.com>
    218
  • trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj

    r180968 r181220  
    150150    <ClCompile Include="..\wtf\win\MainThreadWin.cpp" />
    151151    <ClCompile Include="..\wtf\win\RunLoopWin.cpp" />
     152    <ClCompile Include="..\wtf\win\WorkItemWin.cpp" />
     153    <ClCompile Include="..\wtf\win\WorkQueueWin.cpp" />
    152154    <ClCompile Include="..\wtf\win\WTFDLL.cpp" />
     155    <ClCompile Include="..\wtf\WorkQueue.cpp" />
    153156    <ClCompile Include="..\wtf\WTFThreadData.cpp" />
    154157    <ClCompile Include="..\wtf\SchedulePairCF.cpp" />
     
    307310    <ClInclude Include="..\wtf\VMTags.h" />
    308311    <ClInclude Include="..\wtf\win\GDIObject.h" />
     312    <ClInclude Include="..\wtf\win\WorkItemWin.h" />
     313    <ClInclude Include="..\wtf\WorkQueue.h" />
    309314    <ClInclude Include="..\wtf\WTFThreadData.h" />
    310315  </ItemGroup>
  • trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters

    r180968 r181220  
    22<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    33  <ItemGroup>
    4     <Filter Include="win">
    5       <UniqueIdentifier>{b7d787cb-2b2b-4898-8d03-b94115e596d1}</UniqueIdentifier>
    6     </Filter>
    74    <Filter Include="dtoa">
    85      <UniqueIdentifier>{eaa36939-1976-495f-b9ed-90074ee4f2be}</UniqueIdentifier>
     
    2825    <Filter Include="wtf\gobject">
    2926      <UniqueIdentifier>{edd6ccc8-e6ee-41ec-a58d-9404a30c0c7e}</UniqueIdentifier>
     27    </Filter>
     28    <Filter Include="wtf\win">
     29      <UniqueIdentifier>{b7d787cb-2b2b-4898-8d03-b94115e596d1}</UniqueIdentifier>
    3030    </Filter>
    3131  </ItemGroup>
     
    9595    </ClCompile>
    9696    <ClCompile Include="..\wtf\win\MainThreadWin.cpp">
    97       <Filter>win</Filter>
     97      <Filter>wtf\win</Filter>
    9898    </ClCompile>
    9999    <ClCompile Include="..\wtf\threads\win\BinarySemaphoreWin.cpp">
     
    236236    </ClCompile>
    237237    <ClCompile Include="..\wtf\win\RunLoopWin.cpp">
    238       <Filter>win</Filter>
     238      <Filter>wtf\win</Filter>
    239239    </ClCompile>
    240240    <ClCompile Include="..\wtf\gobject\GMainLoopSource.cpp">
     
    249249    <ClCompile Include="..\wtf\RefCounter.cpp" />
    250250    <ClCompile Include="..\wtf\win\WTFDLL.cpp">
    251       <Filter>win</Filter>
     251      <Filter>wtf\win</Filter>
     252    </ClCompile>
     253    <ClCompile Include="..\wtf\WorkQueue.cpp">
     254      <Filter>wtf</Filter>
     255    </ClCompile>
     256    <ClCompile Include="..\wtf\win\WorkQueueWin.cpp">
     257      <Filter>wtf\win</Filter>
     258    </ClCompile>
     259    <ClCompile Include="..\wtf\win\WorkItemWin.cpp">
     260      <Filter>wtf\win</Filter>
    252261    </ClCompile>
    253262  </ItemGroup>
     
    672681    </ClInclude>
    673682    <ClInclude Include="..\wtf\win\GDIObject.h">
    674       <Filter>win</Filter>
     683      <Filter>wtf\win</Filter>
    675684    </ClInclude>
    676685    <ClInclude Include="..\wtf\gobject\GlibUtilities.h">
     
    708717    </ClInclude>
    709718    <ClInclude Include="..\wtf\RefCounter.h" />
     719    <ClInclude Include="..\wtf\WorkQueue.h">
     720      <Filter>wtf</Filter>
     721    </ClInclude>
     722    <ClInclude Include="..\wtf\win\WorkItemWin.h">
     723      <Filter>wtf\win</Filter>
     724    </ClInclude>
    710725  </ItemGroup>
    711726  <ItemGroup>
  • trunk/Source/WTF/wtf/WorkQueue.h

    r180410 r181220  
    11/*
    2  * Copyright (C) 2010 Apple Inc. All rights reserved.
     2 * Copyright (C) 2010, 2015 Apple Inc. All rights reserved.
    33 * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
    44 *
     
    4545#elif PLATFORM(EFL)
    4646#include <DispatchQueueEfl.h>
     47#elif OS(WINDOWS)
     48#include <wtf/HashMap.h>
     49#include <wtf/Vector.h>
     50#include <wtf/win/WorkItemWin.h>
    4751#endif
    4852
     
    8589    void platformInvalidate();
    8690
     91#if OS(WINDOWS)
     92    static void CALLBACK handleCallback(void* context, BOOLEAN timerOrWaitFired);
     93    static void CALLBACK timerCallback(void* context, BOOLEAN timerOrWaitFired);
     94    static DWORD WINAPI workThreadCallback(void* context);
     95
     96    bool tryRegisterAsWorkThread();
     97    void unregisterAsWorkThread();
     98    void performWorkOnRegisteredWorkThread();
     99
     100    static void unregisterWaitAndDestroyItemSoon(PassRefPtr<HandleWorkItem>);
     101    static DWORD WINAPI unregisterWaitAndDestroyItemCallback(void* context);
     102#endif
     103
    87104#if OS(DARWIN)
    88105    static void executeFunction(void*);
     
    96113#elif PLATFORM(EFL)
    97114    RefPtr<DispatchQueue> m_dispatchQueue;
     115#elif OS(WINDOWS)
     116    volatile LONG m_isWorkThreadRegistered;
     117
     118    Mutex m_workItemQueueLock;
     119    Vector<RefPtr<WorkItemWin>> m_workItemQueue;
     120
     121    Mutex m_handlesLock;
     122    HashMap<HANDLE, RefPtr<HandleWorkItem>> m_handles;
     123
     124    HANDLE m_timerQueue;
    98125#endif
    99126};
Note: See TracChangeset for help on using the changeset viewer.