summaryrefslogtreecommitdiff
path: root/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-03-12 14:11:15 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-03-12 14:11:15 +0100
commitdd91e772430dc294e3bf478c119ef8d43c0a3358 (patch)
tree6f33ce4d5872a5691e0291eb45bf6ab373a5f567 /Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h
parentad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (diff)
downloadqtwebkit-dd91e772430dc294e3bf478c119ef8d43c0a3358.tar.gz
Imported WebKit commit 3db4eb1820ac8fb03065d7ea73a4d9db1e8fea1a (http://svn.webkit.org/repository/webkit/trunk@110422)
This includes build fixes for the latest qtbase/qtdeclarative as well as the final QML2 API.
Diffstat (limited to 'Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h')
-rw-r--r--Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h b/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h
index 330ef51ca..057691213 100644
--- a/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h
+++ b/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h
@@ -31,6 +31,7 @@
#include "cc/CCProxy.h"
#include "cc/CCScheduler.h"
#include "cc/CCThread.h"
+#include "cc/CCTimer.h"
#include <wtf/OwnPtr.h>
namespace WebCore {
@@ -41,6 +42,7 @@ class CCScheduler;
class CCScopedThreadProxy;
class CCTextureUpdater;
class CCThread;
+class CCThreadProxyContextRecreationTimer;
class CCThreadProxy : public CCProxy, CCLayerTreeHostImplClient, CCSchedulerClient {
public:
@@ -50,15 +52,16 @@ public:
// CCProxy implementation
virtual bool compositeAndReadback(void *pixels, const IntRect&);
- virtual void startPageScaleAnimation(const IntSize& targetPosition, bool useAnchor, float scale, double durationSec);
+ virtual void startPageScaleAnimation(const IntSize& targetPosition, bool useAnchor, float scale, double duration);
virtual GraphicsContext3D* context();
virtual void finishAllRendering();
virtual bool isStarted() const;
virtual bool initializeContext();
virtual bool initializeLayerRenderer();
+ virtual bool recreateContext();
virtual int compositorIdentifier() const;
virtual const LayerRendererCapabilities& layerRendererCapabilities() const;
- virtual void loseCompositorContext(int numTimes);
+ virtual void loseContext();
virtual void setNeedsAnimate();
virtual void setNeedsCommit();
virtual void setNeedsRedraw();
@@ -68,10 +71,11 @@ public:
virtual size_t maxPartialTextureUpdates() const;
// CCLayerTreeHostImplClient implementation
+ virtual void didLoseContextOnImplThread();
virtual void onSwapBuffersCompleteOnImplThread();
virtual void setNeedsRedrawOnImplThread();
virtual void setNeedsCommitOnImplThread();
- virtual void postAnimationEventsToMainThreadOnImplThread(PassOwnPtr<CCAnimationEventsVector>);
+ virtual void postAnimationEventsToMainThreadOnImplThread(PassOwnPtr<CCAnimationEventsVector>, double wallClockTime);
// CCSchedulerClient implementation
virtual bool canDraw();
@@ -80,15 +84,19 @@ public:
virtual void scheduledActionDrawAndSwap();
virtual void scheduledActionUpdateMoreResources();
virtual void scheduledActionCommit();
+ virtual void scheduledActionBeginContextRecreation();
private:
explicit CCThreadProxy(CCLayerTreeHost*);
+ friend class CCThreadProxyContextRecreationTimer;
// Called on main thread
void beginFrameAndCommit(int sequenceNumber, double frameBeginTime, PassOwnPtr<CCScrollAndScaleSet>);
void didCommitAndDrawFrame();
void didCompleteSwapBuffers();
- void setAnimationEvents(PassOwnPtr<CCAnimationEventsVector>);
+ void setAnimationEvents(PassOwnPtr<CCAnimationEventsVector>, double wallClockTime);
+ void beginContextRecreation();
+ void tryToRecreateContext();
// Called on impl thread
struct ReadbackRequest {
@@ -109,10 +117,13 @@ private:
void setVisibleOnImplThread(CCCompletionEvent*, bool visible);
void layerTreeHostClosedOnImplThread(CCCompletionEvent*);
void setFullRootLayerDamageOnImplThread();
+ void recreateContextOnImplThread(CCCompletionEvent*, GraphicsContext3D*, bool* recreateSucceeded, LayerRendererCapabilities*);
// Accessed on main thread only.
bool m_animateRequested;
bool m_commitRequested;
+ bool m_contextLost;
+ OwnPtr<CCThreadProxyContextRecreationTimer> m_contextRecreationTimer;
CCLayerTreeHost* m_layerTreeHost;
int m_compositorIdentifier;
bool m_layerRendererInitialized;