| Index: cc/CCTextureUpdateController.cpp
|
| diff --git a/cc/CCTextureUpdateController.cpp b/cc/CCTextureUpdateController.cpp
|
| index 9c448be081f8be4a611d833388daf192ec2eb466..25d41cca581bb25b83adb03ad0fbf5172fee4c23 100644
|
| --- a/cc/CCTextureUpdateController.cpp
|
| +++ b/cc/CCTextureUpdateController.cpp
|
| @@ -92,9 +92,8 @@ void CCTextureUpdateController::updateTextures(CCResourceProvider* resourceProvi
|
| copier->flush();
|
| }
|
|
|
| -CCTextureUpdateController::CCTextureUpdateController(CCTextureUpdateControllerClient* client, CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader)
|
| - : m_client(client)
|
| - , m_timer(adoptPtr(new CCTimer(thread, this)))
|
| +CCTextureUpdateController::CCTextureUpdateController(CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader)
|
| + : m_timer(adoptPtr(new CCTimer(thread, this)))
|
| , m_queue(queue)
|
| , m_resourceProvider(resourceProvider)
|
| , m_copier(copier)
|
| @@ -108,40 +107,34 @@ CCTextureUpdateController::~CCTextureUpdateController()
|
| {
|
| }
|
|
|
| +bool CCTextureUpdateController::hasMoreUpdates() const
|
| +{
|
| + return m_queue->hasMoreUpdates();
|
| +}
|
| +
|
| void CCTextureUpdateController::updateMoreTextures(double monotonicTimeLimit)
|
| {
|
| - ASSERT(monotonicTimeLimit >= m_monotonicTimeLimit);
|
| m_monotonicTimeLimit = monotonicTimeLimit;
|
|
|
| - // Update already in progress.
|
| - if (m_timer->isActive())
|
| + if (!m_queue->hasMoreUpdates())
|
| return;
|
|
|
| // Call updateMoreTexturesNow() directly unless it's the first update
|
| // attempt. This ensures that we empty the update queue in a finite
|
| // amount of time.
|
| if (m_firstUpdateAttempt) {
|
| - // Post a 0-delay task when no updates were left. When it runs,
|
| - // updateTexturesCompleted() will be called.
|
| - if (!updateMoreTexturesIfEnoughTimeRemaining())
|
| - m_timer->startOneShot(0);
|
| -
|
| + updateMoreTexturesIfEnoughTimeRemaining();
|
| m_firstUpdateAttempt = false;
|
| } else
|
| updateMoreTexturesNow();
|
| }
|
|
|
| -void CCTextureUpdateController::discardUploads()
|
| -{
|
| - // CCTextureUpdateControllerClient::updateTexturesCompleted will be
|
| - // called when all remaining texture copies are done.
|
| - m_queue->clearUploads();
|
| -}
|
| -
|
| void CCTextureUpdateController::onTimerFired()
|
| {
|
| - if (!updateMoreTexturesIfEnoughTimeRemaining())
|
| - m_client->updateTexturesCompleted();
|
| + if (!m_queue->hasMoreUpdates())
|
| + return;
|
| +
|
| + updateMoreTexturesIfEnoughTimeRemaining();
|
| }
|
|
|
| double CCTextureUpdateController::monotonicTimeNow() const
|
| @@ -159,16 +152,11 @@ size_t CCTextureUpdateController::updateMoreTexturesSize() const
|
| return textureUpdatesPerTick;
|
| }
|
|
|
| -bool CCTextureUpdateController::updateMoreTexturesIfEnoughTimeRemaining()
|
| +void CCTextureUpdateController::updateMoreTexturesIfEnoughTimeRemaining()
|
| {
|
| - if (!m_queue->hasMoreUpdates())
|
| - return false;
|
| -
|
| bool hasTimeRemaining = monotonicTimeNow() < m_monotonicTimeLimit - updateMoreTexturesTime();
|
| if (hasTimeRemaining)
|
| updateMoreTexturesNow();
|
| -
|
| - return true;
|
| }
|
|
|
| void CCTextureUpdateController::updateMoreTexturesNow()
|
|
|