Changeset 161007 in webkit


Ignore:
Timestamp:
Dec 23, 2013 11:34:27 AM (10 years ago)
Author:
andersca@apple.com
Message:

Use std::chrono::milliseconds for message wait timeouts in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=126168

Reviewed by Sam Weinig.

  • Platform/CoreIPC/Connection.cpp:

(CoreIPC::Connection::waitForMessage):

  • Platform/CoreIPC/Connection.h:

(CoreIPC::Connection::waitForAndDispatchImmediately):

  • UIProcess/API/mac/WKView.mm:

(-[WKView forceAsyncDrawingAreaSizeUpdate:]):
(-[WKView waitForAsyncDrawingAreaSizeUpdate]):

  • UIProcess/DrawingAreaProxy.cpp:
  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::didUpdateBackingStoreStateTimeout):
(WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::waitForDidUpdateViewState):

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):

Location:
trunk/Source/WebKit2
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r161005 r161007  
     12013-12-23  Anders Carlsson  <andersca@apple.com>
     2
     3        Use std::chrono::milliseconds for message wait timeouts in WebKit2
     4        https://bugs.webkit.org/show_bug.cgi?id=126168
     5
     6        Reviewed by Sam Weinig.
     7
     8        * Platform/CoreIPC/Connection.cpp:
     9        (CoreIPC::Connection::waitForMessage):
     10        * Platform/CoreIPC/Connection.h:
     11        (CoreIPC::Connection::waitForAndDispatchImmediately):
     12        * UIProcess/API/mac/WKView.mm:
     13        (-[WKView forceAsyncDrawingAreaSizeUpdate:]):
     14        (-[WKView waitForAsyncDrawingAreaSizeUpdate]):
     15        * UIProcess/DrawingAreaProxy.cpp:
     16        * UIProcess/DrawingAreaProxy.h:
     17        (WebKit::DrawingAreaProxy::didUpdateBackingStoreStateTimeout):
     18        (WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate):
     19        * UIProcess/WebPageProxy.cpp:
     20        (WebKit::WebPageProxy::waitForDidUpdateViewState):
     21        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
     22        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
     23        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):
     24
    1252013-12-23  Anders Carlsson  <andersca@apple.com>
    226
  • trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp

    r161002 r161007  
    376376}
    377377
    378 std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, double timeout)
     378std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout)
    379379{
    380380    // First, check if this message is already in the incoming messages queue.
     
    419419
    420420        // Now we wait.
    421         // FIXME: It would be better if Connection::waitForMessage took an std::chrono::milliseconds instead of a double.
    422         std::chrono::milliseconds timeoutInMilliseconds(static_cast<std::chrono::milliseconds::rep>(timeout * 1000));
    423         if (m_waitForMessageCondition.wait_for(lock, timeoutInMilliseconds) == std::cv_status::timeout) {
     421        if (m_waitForMessageCondition.wait_for(lock, timeout) == std::cv_status::timeout) {
    424422            // We timed out, now remove the pending wait.
    425423            m_waitForMessageMap.remove(messageAndDestination);
  • trunk/Source/WebKit2/Platform/CoreIPC/Connection.h

    r161005 r161007  
    160160    template<typename T> bool send(T&& message, uint64_t destinationID, unsigned messageSendFlags = 0);
    161161    template<typename T> bool sendSync(T&& message, typename T::Reply&& reply, uint64_t destinationID, double timeout = NoTimeout, unsigned syncSendFlags = 0);
    162     template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, double timeout);
     162    template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout);
    163163
    164164    std::unique_ptr<MessageEncoder> createSyncMessageEncoder(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, uint64_t& syncRequestID);
     
    182182    bool isValid() const { return m_client; }
    183183   
    184     std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, double timeout);
     184    std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout);
    185185   
    186186    std::unique_ptr<MessageDecoder> waitForSyncReply(uint64_t syncRequestID, double timeout, unsigned syncSendFlags);
     
    341341}
    342342
    343 template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, double timeout)
     343template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout)
    344344{
    345345    std::unique_ptr<MessageDecoder> decoder = waitForMessage(T::receiverName(), T::name(), destinationID, timeout);
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r160923 r161007  
    31703170    // the drawing area size such that the latest update is sent.
    31713171    if (DrawingAreaProxy* drawingArea = _data->_page->drawingArea())
    3172         drawingArea->waitForPossibleGeometryUpdate(0);
     3172        drawingArea->waitForPossibleGeometryUpdate(std::chrono::milliseconds::zero());
    31733173}
    31743174
     
    31793179        // first geometry update may result in another update being scheduled -
    31803180        // we should wait for this to complete too.
    3181         drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout * 0.5);
    3182         drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout * 0.5);
     3181        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout() / 2);
     3182        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout() / 2);
    31833183    }
    31843184}
  • trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp

    r160464 r161007  
    3535namespace WebKit {
    3636
    37 const double DrawingAreaProxy::didUpdateBackingStoreStateTimeout = 0.5;
    38 
    3937DrawingAreaProxy::DrawingAreaProxy(DrawingAreaType type, WebPageProxy* webPageProxy)
    4038    : m_type(type)
  • trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h

    r160977 r161007  
    3333#include <WebCore/IntRect.h>
    3434#include <WebCore/IntSize.h>
     35#include <chrono>
    3536#include <stdint.h>
    3637#include <wtf/Noncopyable.h>
     
    6162    void setSize(const WebCore::IntSize&, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset);
    6263
    63     // The timeout, in seconds, we use when waiting for a DidUpdateGeometry message.
    64     static const double didUpdateBackingStoreStateTimeout;
     64    // The timeout we use when waiting for a DidUpdateGeometry message.
     65    static constexpr std::chrono::milliseconds didUpdateBackingStoreStateTimeout() { return std::chrono::milliseconds(500); }
    6566
    66     virtual void waitForPossibleGeometryUpdate(double = didUpdateBackingStoreStateTimeout) { }
     67    virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds = didUpdateBackingStoreStateTimeout()) { }
    6768
    6869    virtual void colorSpaceDidChange() { }
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r160977 r161007  
    10091009
    10101010    if (!m_process->isLaunching()) {
    1011         const double viewStateUpdateTimeout = 0.25;
     1011        auto viewStateUpdateTimeout = std::chrono::milliseconds(250);
    10121012        m_process->connection()->waitForAndDispatchImmediately<Messages::WebPageProxy::DidUpdateViewState>(m_pageID, viewStateUpdateTimeout);
    10131013    }
  • trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h

    r160977 r161007  
    4242    virtual void deviceScaleFactorDidChange() OVERRIDE;
    4343    virtual void sizeDidChange() OVERRIDE;
    44     virtual void waitForPossibleGeometryUpdate(double timeout = didUpdateBackingStoreStateTimeout) OVERRIDE;
     44    virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout = didUpdateBackingStoreStateTimeout()) OVERRIDE;
    4545    virtual void colorSpaceDidChange() OVERRIDE;
    4646    virtual void minimumLayoutSizeDidChange() OVERRIDE;
  • trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm

    r160977 r161007  
    6868}
    6969
    70 void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate(double timeout)
     70void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout)
    7171{
    7272    if (!m_isWaitingForDidUpdateGeometry)
Note: See TracChangeset for help on using the changeset viewer.