summaryrefslogtreecommitdiffstats
path: root/cc/CCTextureUpdateController.h
diff options
context:
space:
mode:
authorreveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 23:14:20 +0000
committerreveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 23:14:20 +0000
commit3c496dcf5e0eafca0ac04526e9f71b123f91667b (patch)
tree1fb77746d9f29c1f3296a37fab616ad02e033f88 /cc/CCTextureUpdateController.h
parentf0b6e30a20fcfe6b1e70f88191e7befde010d546 (diff)
downloadchromium_src-3c496dcf5e0eafca0ac04526e9f71b123f91667b.zip
chromium_src-3c496dcf5e0eafca0ac04526e9f71b123f91667b.tar.gz
chromium_src-3c496dcf5e0eafca0ac04526e9f71b123f91667b.tar.bz2
cc: Scheduler will never process a commit until it receives a vsync tick.
Add updateResourcesComplete callback to CCScheduler and use this to indicate completion of texture updates instead of calling CCSchedulerClient::hasMoreResourceUpdates when receiving a vsync tick. WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=94721 BUG=123399,147651 TEST=Added CCTextureUpdateControllerTest.UpdateMoreTextures, CCTextureUpdateControllerTest.HasMoreUpdates and CCTextureUpdateControllerTest.UpdatesCompleteInFiniteTime to cc_unittests. Review URL: https://chromiumcodereview.appspot.com/10911262 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156669 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/CCTextureUpdateController.h')
-rw-r--r--cc/CCTextureUpdateController.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/cc/CCTextureUpdateController.h b/cc/CCTextureUpdateController.h
index 6fc8db3..3d485a7 100644
--- a/cc/CCTextureUpdateController.h
+++ b/cc/CCTextureUpdateController.h
@@ -15,19 +15,26 @@ namespace WebCore {
class TextureCopier;
class TextureUploader;
+class CCTextureUpdateControllerClient {
+public:
+ virtual void updateTexturesCompleted() = 0;
+
+protected:
+ virtual ~CCTextureUpdateControllerClient() { }
+};
+
class CCTextureUpdateController : public CCTimerClient {
WTF_MAKE_NONCOPYABLE(CCTextureUpdateController);
public:
- static PassOwnPtr<CCTextureUpdateController> create(CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader)
+ static PassOwnPtr<CCTextureUpdateController> create(CCTextureUpdateControllerClient* client, CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader)
{
- return adoptPtr(new CCTextureUpdateController(thread, queue, resourceProvider, copier, uploader));
+ return adoptPtr(new CCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader));
}
static size_t maxPartialTextureUpdates();
static void updateTextures(CCResourceProvider*, TextureCopier*, TextureUploader*, CCTextureUpdateQueue*, size_t count);
virtual ~CCTextureUpdateController();
- bool hasMoreUpdates() const;
void updateMoreTextures(double monotonicTimeLimit);
// CCTimerClient implementation.
@@ -39,11 +46,13 @@ public:
virtual size_t updateMoreTexturesSize() const;
protected:
- CCTextureUpdateController(CCThread*, PassOwnPtr<CCTextureUpdateQueue>, CCResourceProvider*, TextureCopier*, TextureUploader*);
+ CCTextureUpdateController(CCTextureUpdateControllerClient*, CCThread*, PassOwnPtr<CCTextureUpdateQueue>, CCResourceProvider*, TextureCopier*, TextureUploader*);
- void updateMoreTexturesIfEnoughTimeRemaining();
+ // This returns true when there were textures left to update.
+ bool updateMoreTexturesIfEnoughTimeRemaining();
void updateMoreTexturesNow();
+ CCTextureUpdateControllerClient* m_client;
OwnPtr<CCTimer> m_timer;
OwnPtr<CCTextureUpdateQueue> m_queue;
bool m_contentsTexturesPurged;