Title: [141248] trunk/Source/WebCore
Revision
141248
Author
[email protected]
Date
2013-01-30 03:58:08 -0800 (Wed, 30 Jan 2013)

Log Message

Port SharedTimerWin.cpp to WinCE
https://bugs.webkit.org/show_bug.cgi?id=103724

Reviewed by Brent Fulgham.

Add #if !OS(WINCE) around some parts of the code, so it can be used by the WinCE port too.

* PlatformWinCE.cmake:
* platform/win/SharedTimerWin.cpp:
(WebCore):
(WebCore::TimerWindowWndProc):
(WebCore::initializeOffScreenTimerWindow):
(WebCore::setSharedTimerFireInterval):
(WebCore::stopSharedTimer):
* platform/wince/SharedTimerWinCE.cpp: Removed.

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (141247 => 141248)


--- trunk/Source/WebCore/ChangeLog	2013-01-30 11:56:42 UTC (rev 141247)
+++ trunk/Source/WebCore/ChangeLog	2013-01-30 11:58:08 UTC (rev 141248)
@@ -1,3 +1,21 @@
+2013-01-30  Patrick Gansterer  <[email protected]>
+
+        Port SharedTimerWin.cpp to WinCE
+        https://bugs.webkit.org/show_bug.cgi?id=103724
+
+        Reviewed by Brent Fulgham.
+
+        Add #if !OS(WINCE) around some parts of the code, so it can be used by the WinCE port too.
+
+        * PlatformWinCE.cmake:
+        * platform/win/SharedTimerWin.cpp:
+        (WebCore):
+        (WebCore::TimerWindowWndProc):
+        (WebCore::initializeOffScreenTimerWindow):
+        (WebCore::setSharedTimerFireInterval):
+        (WebCore::stopSharedTimer):
+        * platform/wince/SharedTimerWinCE.cpp: Removed.
+
 2013-01-30  Andrey Lushnikov  <[email protected]>
 
         ctrl-arrows, ctrl-shift-arrow, ctrl-backspace

Modified: trunk/Source/WebCore/PlatformWinCE.cmake (141247 => 141248)


--- trunk/Source/WebCore/PlatformWinCE.cmake	2013-01-30 11:56:42 UTC (rev 141247)
+++ trunk/Source/WebCore/PlatformWinCE.cmake	2013-01-30 11:58:08 UTC (rev 141248)
@@ -53,6 +53,7 @@
     platform/win/ScrollbarThemeWin.cpp
     platform/win/SearchPopupMenuWin.cpp
     platform/win/SharedBufferWin.cpp
+    platform/win/SharedTimerWin.cpp
     platform/win/SoundWin.cpp
     platform/win/SystemInfo.cpp
     platform/win/SystemTimeWin.cpp
@@ -64,7 +65,6 @@
     platform/wince/DragImageWince.cpp
     platform/wince/FileSystemWince.cpp
     platform/wince/KURLWince.cpp
-    platform/wince/SharedTimerWince.cpp
 
     platform/network/win/CredentialStorageWin.cpp
     platform/network/win/CookieJarWin.cpp

Modified: trunk/Source/WebCore/platform/win/SharedTimerWin.cpp (141247 => 141248)


--- trunk/Source/WebCore/platform/win/SharedTimerWin.cpp	2013-01-30 11:56:42 UTC (rev 141247)
+++ trunk/Source/WebCore/platform/win/SharedTimerWin.cpp	2013-01-30 11:58:08 UTC (rev 141248)
@@ -40,7 +40,7 @@
 #include <wx/wx.h>
 #endif
 
-#include <windows.h>
+#include "WindowsExtras.h"
 #include <mmsystem.h>
 
 #if PLATFORM(WIN)
@@ -66,18 +66,21 @@
 static UINT timerID;
 static void (*sharedTimerFiredFunction)();
 
+static HANDLE timer;
 static HWND timerWindowHandle = 0;
+const LPCWSTR kTimerWindowClassName = L"TimerWindowClass";
+
+#if !OS(WINCE)
 static UINT timerFiredMessage = 0;
 static HANDLE timerQueue;
-static HANDLE timer;
 static bool highResTimerActive;
 static bool processingCustomTimerMessage = false;
 static LONG pendingTimers;
 
-const LPCWSTR kTimerWindowClassName = L"TimerWindowClass";
 const int timerResolution = 1; // To improve timer resolution, we call timeBeginPeriod/timeEndPeriod with this value to increase timer resolution to 1ms.
 const int highResolutionThresholdMsec = 16; // Only activate high-res timer for sub-16ms timers (Windows can fire timers at 16ms intervals without changing the system resolution).
 const int stopHighResTimerInMsec = 300; // Stop high-res timer after 0.3 seconds to lessen power consumption (we don't use a smaller time since oscillating between high and low resolution breaks timer accuracy on XP).
+#endif
 
 enum {
     sharedTimerID = 1000,
@@ -97,20 +100,23 @@
     }
 #endif
 
-    if (message == timerFiredMessage) {
-        InterlockedExchange(&pendingTimers, 0);
-        processingCustomTimerMessage = true;
-        sharedTimerFiredFunction();
-        processingCustomTimerMessage = false;
-    } else if (message == WM_TIMER) {
+    if (message == WM_TIMER) {
         if (wParam == sharedTimerID) {
             KillTimer(timerWindowHandle, sharedTimerID);
             sharedTimerFiredFunction();
-        } else if (wParam == endHighResTimerID) {
+        }
+#if !OS(WINCE)
+        else if (wParam == endHighResTimerID) {
             KillTimer(timerWindowHandle, endHighResTimerID);
             highResTimerActive = false;
             timeEndPeriod(timerResolution);
         }
+    } else if (message == timerFiredMessage) {
+        InterlockedExchange(&pendingTimers, 0);
+        processingCustomTimerMessage = true;
+        sharedTimerFiredFunction();
+        processingCustomTimerMessage = false;
+#endif
     } else
         return DefWindowProc(hWnd, message, wParam, lParam);
 
@@ -121,18 +127,31 @@
 {
     if (timerWindowHandle)
         return;
-    
+
+#if OS(WINCE)
+    WNDCLASS wcex;
+    memset(&wcex, 0, sizeof(WNDCLASS));
+#else
     WNDCLASSEX wcex;
     memset(&wcex, 0, sizeof(WNDCLASSEX));
     wcex.cbSize = sizeof(WNDCLASSEX);
+#endif
+
     wcex.lpfnWndProc    = TimerWindowWndProc;
     wcex.hInstance      = WebCore::instanceHandle();
     wcex.lpszClassName  = kTimerWindowClassName;
+#if OS(WINCE)
+    RegisterClass(&wcex);
+#else
     RegisterClassEx(&wcex);
+#endif
 
     timerWindowHandle = CreateWindow(kTimerWindowClassName, 0, 0,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_MESSAGE, 0, WebCore::instanceHandle(), 0);
+
+#if !OS(WINCE)
     timerFiredMessage = RegisterWindowMessage(L"com.apple.WebKit.TimerFired");
+#endif
 }
 
 void setSharedTimerFiredFunction(void (*f)())
@@ -140,11 +159,13 @@
     sharedTimerFiredFunction = f;
 }
 
+#if !OS(WINCE)
 static void NTAPI queueTimerProc(PVOID, BOOLEAN)
 {
     if (InterlockedIncrement(&pendingTimers) == 1)
         PostMessage(timerWindowHandle, timerFiredMessage, 0, 0);
 }
+#endif
 
 void setSharedTimerFireInterval(double interval)
 {
@@ -160,6 +181,7 @@
     initializeOffScreenTimerWindow();
     bool timerSet = false;
 
+#if !OS(WINCE)
     if (Settings::shouldUseHighResolutionTimers()) {
         if (interval < highResolutionThresholdMsec) {
             if (!highResTimerActive) {
@@ -191,6 +213,7 @@
             }
         }
     }
+#endif // !OS(WINCE)
 
     if (timerSet) {
         if (timerID) {
@@ -205,10 +228,12 @@
 
 void stopSharedTimer()
 {
+#if !OS(WINCE)
     if (timerQueue && timer) {
         DeleteTimerQueueTimer(timerQueue, timer, 0);
         timer = 0;
     }
+#endif
 
     if (timerID) {
         KillTimer(timerWindowHandle, timerID);

Deleted: trunk/Source/WebCore/platform/wince/SharedTimerWinCE.cpp (141247 => 141248)


--- trunk/Source/WebCore/platform/wince/SharedTimerWinCE.cpp	2013-01-30 11:56:42 UTC (rev 141247)
+++ trunk/Source/WebCore/platform/wince/SharedTimerWinCE.cpp	2013-01-30 11:58:08 UTC (rev 141248)
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
- * Copyright (C) 2007-2008 Torch Mobile, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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 "SharedTimer.h"
-
-#include "Page.h"
-#include "SystemTime.h"
-#include "WebCoreInstanceHandle.h"
-#include "Widget.h"
-#include <wtf/Assertions.h>
-#include <wtf/CurrentTime.h>
-#include <windows.h>
-
-namespace WebCore {
-
-enum {
-    TimerIdNone = 0,
-    TimerIdAuto,
-    TimerIdManual,
-};
-static UINT timerID = TimerIdNone;
-
-static void (*sharedTimerFiredFunction)();
-
-static HWND timerWindowHandle = 0;
-const LPCWSTR kTimerWindowClassName = L"TimerWindowClass";
-
-LRESULT CALLBACK TimerWindowWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-    if (message == WM_TIMER) {
-        if (timerID != TimerIdNone)
-            sharedTimerFiredFunction();
-    } else if (message == WM_USER) {
-        if (timerID = TimerIdManual) {
-            sharedTimerFiredFunction();
-            PostMessage(hWnd, WM_USER, 0, 0);
-        }
-    } else
-        return DefWindowProc(hWnd, message, wParam, lParam);
-
-    return 0;
-}
-
-static void initializeOffScreenTimerWindow()
-{
-    if (timerWindowHandle)
-        return;
-
-    WNDCLASS wcex = {0};
-    wcex.lpfnWndProc    = TimerWindowWndProc;
-    wcex.hInstance      = WebCore::instanceHandle();
-    wcex.lpszClassName  = kTimerWindowClassName;
-    RegisterClass(&wcex);
-
-    timerWindowHandle = CreateWindow(kTimerWindowClassName, 0, 0,
-       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, WebCore::instanceHandle(), 0);
-}
-
-void setSharedTimerFiredFunction(void (*f)())
-{
-    sharedTimerFiredFunction = f;
-}
-
-#define USER_TIMER_MAXIMUM  0x7FFFFFFF
-#define USER_TIMER_MINIMUM  0x0000000A
-
-void setSharedTimerFireInterval(double intervalSeconds)
-{
-    ASSERT(sharedTimerFiredFunction);
-
-    double intervalMS = intervalSeconds * 1000.;
-    unsigned clampedIntervalMS = intervalMS < USER_TIMER_MINIMUM
-        ? USER_TIMER_MINIMUM
-        : intervalMS > USER_TIMER_MAXIMUM
-        ? USER_TIMER_MAXIMUM
-        : static_cast<unsigned>(intervalMS);
-
-    if (timerID == TimerIdAuto) {
-        KillTimer(timerWindowHandle, TimerIdAuto);
-        timerID = TimerIdNone;
-    }
-
-    initializeOffScreenTimerWindow();
-    if (SetTimer(timerWindowHandle, TimerIdAuto, clampedIntervalMS, 0))
-        timerID = TimerIdAuto;
-    else if (timerID != TimerIdManual)
-        PostMessage(timerWindowHandle, WM_USER, 0, 0);
-}
-
-void stopSharedTimer()
-{
-    if (timerID == TimerIdAuto)
-        KillTimer(timerWindowHandle, TimerIdAuto);
-
-    timerID = TimerIdNone;
-}
-
-} // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to