Add sequence checks to enterAcceleratedCompositingMode and exitAcceleratedCompositingMode and
have them call newly added overloads that don't have the checks.
Reviewed by Dan Bernstein.
* Shared/LayerTreeContext.h:
* Shared/mac/LayerTreeContextMac.mm:
(WebKit::LayerTreeContext::LayerTreeContext):
(WebKit::LayerTreeContext::encode):
(WebKit::LayerTreeContext::decode):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode):
(WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode):
* UIProcess/DrawingAreaProxyImpl.h:
* WebProcess/WebPage/mac/LayerTreeHostMac.mm:
(WebKit::LayerTreeHostMac::LayerTreeHostMac):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77534
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-02-03 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Get rid of LayerTreeContext::seed on Mac.
+ Add sequence checks to enterAcceleratedCompositingMode and exitAcceleratedCompositingMode and
+ have them call newly added overloads that don't have the checks.
+
+ * Shared/LayerTreeContext.h:
+ * Shared/mac/LayerTreeContextMac.mm:
+ (WebKit::LayerTreeContext::LayerTreeContext):
+ (WebKit::LayerTreeContext::encode):
+ (WebKit::LayerTreeContext::decode):
+ * UIProcess/DrawingAreaProxyImpl.cpp:
+ (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode):
+ (WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode):
+ * UIProcess/DrawingAreaProxyImpl.h:
+ * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
+ (WebKit::LayerTreeHostMac::LayerTreeHostMac):
+
2011-02-03 Anders Carlsson <andersca@apple.com>
Reviewed by Dan Bernstein.
LayerTreeContext();
~LayerTreeContext();
- static LayerTreeContext makeWithSeed();
-
void encode(CoreIPC::ArgumentEncoder*) const;
static bool decode(CoreIPC::ArgumentDecoder*, LayerTreeContext&);
bool isEmpty() const;
#if PLATFORM(MAC)
- uint64_t seed;
uint32_t contextID;
#endif
};
namespace WebKit {
LayerTreeContext::LayerTreeContext()
- : seed(0)
- , contextID(0)
+ : contextID(0)
{
}
{
}
-LayerTreeContext LayerTreeContext::makeWithSeed()
-{
- static uint64_t seed;
-
- LayerTreeContext layerTreeContext;
- layerTreeContext.seed = ++seed;
- ASSERT(layerTreeContext.seed);
-
- return layerTreeContext;
-}
-
void LayerTreeContext::encode(CoreIPC::ArgumentEncoder* encoder) const
{
- encoder->encode(seed);
encoder->encode(contextID);
}
bool LayerTreeContext::decode(CoreIPC::ArgumentDecoder* decoder, LayerTreeContext& result)
{
- if (!decoder->decode(result.seed))
+ if (!decoder->decode(result.contextID))
return false;
- return decoder->decode(result.contextID);
+ return true;
}
bool LayerTreeContext::isEmpty() const
void DrawingAreaProxyImpl::enterAcceleratedCompositingMode(uint64_t sequenceNumber, const LayerTreeContext& layerTreeContext)
{
- ASSERT(!m_isInAcceleratedCompositingMode);
- m_isInAcceleratedCompositingMode = true;
+ if (sequenceNumber < m_lastDidSetSizeSequenceNumber)
+ return;
- m_backingStore = nullptr;
- m_webPageProxy->enterAcceleratedCompositingMode(layerTreeContext);
+ enterAcceleratedCompositingMode(layerTreeContext);
}
void DrawingAreaProxyImpl::exitAcceleratedCompositingMode(uint64_t sequenceNumber)
{
- ASSERT(m_isInAcceleratedCompositingMode);
- m_isInAcceleratedCompositingMode = false;
+ if (sequenceNumber < m_lastDidSetSizeSequenceNumber)
+ return;
- m_webPageProxy->exitAcceleratedCompositingMode();
+ exitAcceleratedCompositingMode();
}
void DrawingAreaProxyImpl::incorporateUpdate(const UpdateInfo& updateInfo)
m_webPageProxy->process()->send(Messages::DrawingArea::SetSize(m_size), m_webPageProxy->pageID());
}
+void DrawingAreaProxyImpl::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext)
+{
+ ASSERT(!m_isInAcceleratedCompositingMode);
+ m_isInAcceleratedCompositingMode = true;
+
+ m_backingStore = nullptr;
+ m_webPageProxy->enterAcceleratedCompositingMode(layerTreeContext);
+}
+
+void DrawingAreaProxyImpl::exitAcceleratedCompositingMode()
+{
+ ASSERT(m_isInAcceleratedCompositingMode);
+ m_isInAcceleratedCompositingMode = false;
+
+ m_webPageProxy->exitAcceleratedCompositingMode();
+}
+
} // namespace WebKit
void incorporateUpdate(const UpdateInfo&);
void sendSetSize();
+ void enterAcceleratedCompositingMode(const LayerTreeContext&);
+ void exitAcceleratedCompositingMode();
+
// Whether we've sent a SetSize message and are now waiting for a DidSetSize message.
// Used to throttle SetSize messages so we don't send them faster than the Web process can handle.
bool m_isWaitingForDidSetSize;
LayerTreeHostMac::LayerTreeHostMac(WebPage* webPage, GraphicsLayer* graphicsLayer)
: LayerTreeHost(webPage)
- , m_layerTreeContext(LayerTreeContext::makeWithSeed())
, m_isValid(true)
{
mach_port_t serverPort = WebProcess::shared().compositingRenderServerPort();