Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1513)

Unified Diff: cc/resource_update_controller.cc

Issue 11344004: Remove WebKit::Platform dependencies from cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/resource_update_controller.cc
diff --git a/cc/resource_update_controller.cc b/cc/resource_update_controller.cc
index 498f884290fd4c5117507f10264074366ad751cf..b3133c9846885a2730f743c5b616e39d810482c5 100644
--- a/cc/resource_update_controller.cc
+++ b/cc/resource_update_controller.cc
@@ -11,6 +11,7 @@
#include "cc/proxy.h"
#include "cc/resource_provider.h"
#include "cc/texture_copier.h"
+#include "cc/thread.h"
#include "third_party/khronos/GLES2/gl2.h"
#include "third_party/skia/include/gpu/SkGpuDevice.h"
#include <limits>
@@ -71,11 +72,13 @@ size_t ResourceUpdateController::maxFullUpdatesPerTick(
ResourceUpdateController::ResourceUpdateController(ResourceUpdateControllerClient* client, Thread* thread, scoped_ptr<ResourceUpdateQueue> queue, ResourceProvider* resourceProvider)
: m_client(client)
- , m_timer(new Timer(thread, this))
, m_queue(queue.Pass())
, m_resourceProvider(resourceProvider)
, m_textureUpdatesPerTick(maxFullUpdatesPerTick(resourceProvider))
, m_firstUpdateAttempt(true)
+ , m_thread(thread)
+ , m_weakFactory(ALLOW_THIS_IN_INITIALIZER_LIST(this))
+ , m_taskPosted(false)
{
}
@@ -89,7 +92,7 @@ void ResourceUpdateController::performMoreUpdates(
m_timeLimit = timeLimit;
// Update already in progress.
- if (m_timer->isActive())
+ if (m_taskPosted)
return;
// Call updateMoreTexturesNow() directly unless it's the first update
@@ -98,8 +101,11 @@ void ResourceUpdateController::performMoreUpdates(
if (m_firstUpdateAttempt) {
// Post a 0-delay task when no updates were left. When it runs,
// readyToFinalizeTextureUpdates() will be called.
- if (!updateMoreTexturesIfEnoughTimeRemaining())
- m_timer->startOneShot(0);
+ if (!updateMoreTexturesIfEnoughTimeRemaining()) {
+ m_taskPosted = true;
+ m_thread->postTask(base::Bind(&ResourceUpdateController::onTimerFired,
+ m_weakFactory.GetWeakPtr()));
+ }
m_firstUpdateAttempt = false;
} else
@@ -222,6 +228,7 @@ void ResourceUpdateController::finalize()
void ResourceUpdateController::onTimerFired()
{
+ m_taskPosted = false;
ResourceProvider::debugNotifyEnterZone(0xB000000);
if (!updateMoreTexturesIfEnoughTimeRemaining())
m_client->readyToFinalizeTextureUpdates();
@@ -254,7 +261,10 @@ bool ResourceUpdateController::updateMoreTexturesIfEnoughTimeRemaining()
// time estimate. We use a different timeout here to prevent unnecessary
// amounts of idle time when blocking uploads have reached the max.
if (m_resourceProvider->numBlockingUploads() >= maxBlockingUpdates()) {
- m_timer->startOneShot(uploaderBusyTickRate);
+ m_taskPosted = true;
+ m_thread->postDelayedTask(base::Bind(&ResourceUpdateController::onTimerFired,
+ m_weakFactory.GetWeakPtr()),
+ uploaderBusyTickRate * 1000);
return true;
}
@@ -273,9 +283,10 @@ void ResourceUpdateController::updateMoreTexturesNow()
{
size_t uploads = std::min(
m_queue->fullUploadSize(), updateMoreTexturesSize());
- m_timer->startOneShot(
- updateMoreTexturesTime().InSecondsF() / updateMoreTexturesSize() *
- uploads);
+ m_taskPosted = true;
+ m_thread->postDelayedTask(base::Bind(&ResourceUpdateController::onTimerFired,
+ m_weakFactory.GetWeakPtr()),
+ updateMoreTexturesTime().InSecondsF() / updateMoreTexturesSize() * uploads * 1000);
if (!uploads)
return;

Powered by Google App Engine
This is Rietveld 408576698