Changeset 161007 in webkit
- Timestamp:
- Dec 23, 2013 11:34:27 AM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r161005 r161007 1 2013-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 1 25 2013-12-23 Anders Carlsson <andersca@apple.com> 2 26 -
trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp
r161002 r161007 376 376 } 377 377 378 std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, doubletimeout)378 std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout) 379 379 { 380 380 // First, check if this message is already in the incoming messages queue. … … 419 419 420 420 // 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) { 424 422 // We timed out, now remove the pending wait. 425 423 m_waitForMessageMap.remove(messageAndDestination); -
trunk/Source/WebKit2/Platform/CoreIPC/Connection.h
r161005 r161007 160 160 template<typename T> bool send(T&& message, uint64_t destinationID, unsigned messageSendFlags = 0); 161 161 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, doubletimeout);162 template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout); 163 163 164 164 std::unique_ptr<MessageEncoder> createSyncMessageEncoder(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, uint64_t& syncRequestID); … … 182 182 bool isValid() const { return m_client; } 183 183 184 std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, doubletimeout);184 std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout); 185 185 186 186 std::unique_ptr<MessageDecoder> waitForSyncReply(uint64_t syncRequestID, double timeout, unsigned syncSendFlags); … … 341 341 } 342 342 343 template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, doubletimeout)343 template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout) 344 344 { 345 345 std::unique_ptr<MessageDecoder> decoder = waitForMessage(T::receiverName(), T::name(), destinationID, timeout); -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r160923 r161007 3170 3170 // the drawing area size such that the latest update is sent. 3171 3171 if (DrawingAreaProxy* drawingArea = _data->_page->drawingArea()) 3172 drawingArea->waitForPossibleGeometryUpdate( 0);3172 drawingArea->waitForPossibleGeometryUpdate(std::chrono::milliseconds::zero()); 3173 3173 } 3174 3174 … … 3179 3179 // first geometry update may result in another update being scheduled - 3180 3180 // 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); 3183 3183 } 3184 3184 } -
trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp
r160464 r161007 35 35 namespace WebKit { 36 36 37 const double DrawingAreaProxy::didUpdateBackingStoreStateTimeout = 0.5;38 39 37 DrawingAreaProxy::DrawingAreaProxy(DrawingAreaType type, WebPageProxy* webPageProxy) 40 38 : m_type(type) -
trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h
r160977 r161007 33 33 #include <WebCore/IntRect.h> 34 34 #include <WebCore/IntSize.h> 35 #include <chrono> 35 36 #include <stdint.h> 36 37 #include <wtf/Noncopyable.h> … … 61 62 void setSize(const WebCore::IntSize&, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset); 62 63 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); } 65 66 66 virtual void waitForPossibleGeometryUpdate( double = didUpdateBackingStoreStateTimeout) { }67 virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds = didUpdateBackingStoreStateTimeout()) { } 67 68 68 69 virtual void colorSpaceDidChange() { } -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r160977 r161007 1009 1009 1010 1010 if (!m_process->isLaunching()) { 1011 const double viewStateUpdateTimeout = 0.25;1011 auto viewStateUpdateTimeout = std::chrono::milliseconds(250); 1012 1012 m_process->connection()->waitForAndDispatchImmediately<Messages::WebPageProxy::DidUpdateViewState>(m_pageID, viewStateUpdateTimeout); 1013 1013 } -
trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h
r160977 r161007 42 42 virtual void deviceScaleFactorDidChange() OVERRIDE; 43 43 virtual void sizeDidChange() OVERRIDE; 44 virtual void waitForPossibleGeometryUpdate( double timeout = didUpdateBackingStoreStateTimeout) OVERRIDE;44 virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout = didUpdateBackingStoreStateTimeout()) OVERRIDE; 45 45 virtual void colorSpaceDidChange() OVERRIDE; 46 46 virtual void minimumLayoutSizeDidChange() OVERRIDE; -
trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
r160977 r161007 68 68 } 69 69 70 void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate( doubletimeout)70 void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout) 71 71 { 72 72 if (!m_isWaitingForDidUpdateGeometry)
Note: See TracChangeset
for help on using the changeset viewer.