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

Unified Diff: sky/engine/platform/graphics/Canvas2DLayerManager.cpp

Issue 673783005: Canvas2DLayerManager shouldn't use a task observer (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « sky/engine/platform/graphics/Canvas2DLayerManager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/platform/graphics/Canvas2DLayerManager.cpp
diff --git a/sky/engine/platform/graphics/Canvas2DLayerManager.cpp b/sky/engine/platform/graphics/Canvas2DLayerManager.cpp
index d4f75755c694fc944b26dfb69692f13c722c3f50..dc2672088b0b0a10013a34de0eeec8d424318d42 100644
--- a/sky/engine/platform/graphics/Canvas2DLayerManager.cpp
+++ b/sky/engine/platform/graphics/Canvas2DLayerManager.cpp
@@ -43,7 +43,7 @@ Canvas2DLayerManager::Canvas2DLayerManager()
: m_bytesAllocated(0)
, m_maxBytesAllocated(DefaultMaxBytesAllocated)
, m_targetBytesAllocated(DefaultTargetBytesAllocated)
- , m_taskObserverActive(false)
+ , m_limitPendingFramesTimer(this, &Canvas2DLayerManager::limitPendingFramesTimerFired)
{
}
@@ -51,7 +51,6 @@ Canvas2DLayerManager::~Canvas2DLayerManager()
{
ASSERT(!m_bytesAllocated);
ASSERT(!m_layerList.head());
- ASSERT(!m_taskObserverActive);
}
void Canvas2DLayerManager::init(size_t maxBytesAllocated, size_t targetBytesAllocated)
@@ -59,10 +58,8 @@ void Canvas2DLayerManager::init(size_t maxBytesAllocated, size_t targetBytesAllo
ASSERT(maxBytesAllocated >= targetBytesAllocated);
m_maxBytesAllocated = maxBytesAllocated;
m_targetBytesAllocated = targetBytesAllocated;
- if (m_taskObserverActive) {
- Platform::current()->currentThread()->removeTaskObserver(this);
- m_taskObserverActive = false;
- }
+ if (m_limitPendingFramesTimer.isActive())
+ m_limitPendingFramesTimer.stop();
}
Canvas2DLayerManager& Canvas2DLayerManager::get()
@@ -71,16 +68,8 @@ Canvas2DLayerManager& Canvas2DLayerManager::get()
return manager;
}
-void Canvas2DLayerManager::willProcessTask()
+void Canvas2DLayerManager::limitPendingFramesTimerFired(Timer<Canvas2DLayerManager>*)
{
-}
-
-void Canvas2DLayerManager::didProcessTask()
-{
- // Called after the script action for the current frame has been processed.
- ASSERT(m_taskObserverActive);
- Platform::current()->currentThread()->removeTaskObserver(this);
- m_taskObserverActive = false;
Canvas2DLayerBridge* layer = m_layerList.head();
while (layer) {
Canvas2DLayerBridge* currentLayer = layer;
@@ -100,11 +89,8 @@ void Canvas2DLayerManager::layerDidDraw(Canvas2DLayerBridge* layer)
}
}
- if (!m_taskObserverActive) {
- m_taskObserverActive = true;
- // Schedule a call to didProcessTask() after completion of the current script task.
- Platform::current()->currentThread()->addTaskObserver(this);
- }
+ if (!m_limitPendingFramesTimer.isActive())
+ m_limitPendingFramesTimer.startOneShot(0, FROM_HERE);
}
void Canvas2DLayerManager::layerTransientResourceAllocationChanged(Canvas2DLayerBridge* layer, intptr_t deltaBytes)
« no previous file with comments | « sky/engine/platform/graphics/Canvas2DLayerManager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698