diff options
author | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 23:14:20 +0000 |
---|---|---|
committer | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 23:14:20 +0000 |
commit | 3c496dcf5e0eafca0ac04526e9f71b123f91667b (patch) | |
tree | 1fb77746d9f29c1f3296a37fab616ad02e033f88 /cc/CCTextureUpdateController.h | |
parent | f0b6e30a20fcfe6b1e70f88191e7befde010d546 (diff) | |
download | chromium_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.h | 19 |
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; |