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

Side by Side Diff: cc/thread_proxy.cc

Issue 12217105: cc: Check for completed raster tasks at interval. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/thread_proxy.h" 5 #include "cc/thread_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/delay_based_time_source.h" 10 #include "cc/delay_based_time_source.h"
(...skipping 11 matching lines...) Expand all
22 using WebKit::WebSharedGraphicsContext3D; 22 using WebKit::WebSharedGraphicsContext3D;
23 23
24 namespace { 24 namespace {
25 25
26 // Measured in seconds. 26 // Measured in seconds.
27 const double contextRecreationTickRate = 0.03; 27 const double contextRecreationTickRate = 0.03;
28 28
29 // Measured in seconds. 29 // Measured in seconds.
30 const double smoothnessTakesPriorityExpirationDelay = 0.25; 30 const double smoothnessTakesPriorityExpirationDelay = 0.25;
31 31
32 // Measured in seconds.
33 const double checkForCompletedRasterTasksDelay = 0.004;
34
32 } // namespace 35 } // namespace
33 36
34 namespace cc { 37 namespace cc {
35 38
36 scoped_ptr<Proxy> ThreadProxy::create(LayerTreeHost* layerTreeHost, scoped_ptr<T hread> implThread) 39 scoped_ptr<Proxy> ThreadProxy::create(LayerTreeHost* layerTreeHost, scoped_ptr<T hread> implThread)
37 { 40 {
38 return make_scoped_ptr(new ThreadProxy(layerTreeHost, implThread.Pass())).Pa ssAs<Proxy>(); 41 return make_scoped_ptr(new ThreadProxy(layerTreeHost, implThread.Pass())).Pa ssAs<Proxy>();
39 } 42 }
40 43
41 ThreadProxy::ThreadProxy(LayerTreeHost* layerTreeHost, scoped_ptr<Thread> implTh read) 44 ThreadProxy::ThreadProxy(LayerTreeHost* layerTreeHost, scoped_ptr<Thread> implTh read)
(...skipping 13 matching lines...) Expand all
55 , m_readbackRequestOnImplThread(0) 58 , m_readbackRequestOnImplThread(0)
56 , m_commitCompletionEventOnImplThread(0) 59 , m_commitCompletionEventOnImplThread(0)
57 , m_completionEventForCommitHeldOnTreeActivation(0) 60 , m_completionEventForCommitHeldOnTreeActivation(0)
58 , m_textureAcquisitionCompletionEventOnImplThread(0) 61 , m_textureAcquisitionCompletionEventOnImplThread(0)
59 , m_nextFrameIsNewlyCommittedFrameOnImplThread(false) 62 , m_nextFrameIsNewlyCommittedFrameOnImplThread(false)
60 , m_renderVSyncEnabled(layerTreeHost->settings().renderVSyncEnabled) 63 , m_renderVSyncEnabled(layerTreeHost->settings().renderVSyncEnabled)
61 , m_insideDraw(false) 64 , m_insideDraw(false)
62 , m_totalCommitCount(0) 65 , m_totalCommitCount(0)
63 , m_deferCommits(false) 66 , m_deferCommits(false)
64 , m_renewTreePriorityOnImplThreadPending(false) 67 , m_renewTreePriorityOnImplThreadPending(false)
68 , m_checkForCompletedRasterTasksPending(false)
65 { 69 {
66 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy"); 70 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy");
67 DCHECK(isMainThread()); 71 DCHECK(isMainThread());
68 } 72 }
69 73
70 ThreadProxy::~ThreadProxy() 74 ThreadProxy::~ThreadProxy()
71 { 75 {
72 TRACE_EVENT0("cc", "ThreadProxy::~ThreadProxy"); 76 TRACE_EVENT0("cc", "ThreadProxy::~ThreadProxy");
73 DCHECK(isMainThread()); 77 DCHECK(isMainThread());
74 DCHECK(!m_started); 78 DCHECK(!m_started);
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 } 366 }
363 367
364 void ThreadProxy::manageTilesOnImplThread() 368 void ThreadProxy::manageTilesOnImplThread()
365 { 369 {
366 // TODO(nduca): If needed, move this into CCSchedulerStateMachine. 370 // TODO(nduca): If needed, move this into CCSchedulerStateMachine.
367 m_manageTilesPending = false; 371 m_manageTilesPending = false;
368 if (m_layerTreeHostImpl) 372 if (m_layerTreeHostImpl)
369 m_layerTreeHostImpl->manageTiles(); 373 m_layerTreeHostImpl->manageTiles();
370 } 374 }
371 375
376 void ThreadProxy::setNeedsCheckForCompletedRasterTasksOnImplThread()
377 {
brianderson 2013/02/12 01:44:31 DCHECK(isImplThread())?
reveman 2013/02/12 02:29:52 Sure. I'll add that to setNeedsManageTilesOnImplTh
378 if (m_checkForCompletedRasterTasksPending)
379 return;
380 Proxy::implThread()->postDelayedTask(
381 base::Bind(&ThreadProxy::checkForCompletedRasterTasksOnImplThread,
382 m_weakFactoryOnImplThread.GetWeakPtr()),
383 checkForCompletedRasterTasksDelay * 1000);
384 m_checkForCompletedRasterTasksPending = true;
385 }
386
387 void ThreadProxy::checkForCompletedRasterTasksOnImplThread()
388 {
brianderson 2013/02/12 01:44:31 DCHECK(isImplThread())?
reveman 2013/02/12 02:29:52 Done.
389 m_checkForCompletedRasterTasksPending = false;
390 if (m_layerTreeHostImpl)
391 m_layerTreeHostImpl->checkForCompletedRasterTasks();
392 }
393
372 void ThreadProxy::setNeedsForcedCommitOnImplThread() 394 void ThreadProxy::setNeedsForcedCommitOnImplThread()
373 { 395 {
374 DCHECK(isImplThread()); 396 DCHECK(isImplThread());
375 TRACE_EVENT0("cc", "ThreadProxy::setNeedsForcedCommitOnImplThread"); 397 TRACE_EVENT0("cc", "ThreadProxy::setNeedsForcedCommitOnImplThread");
376 m_schedulerOnImplThread->setNeedsForcedCommit(); 398 m_schedulerOnImplThread->setNeedsForcedCommit();
377 } 399 }
378 400
379 void ThreadProxy::postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animati onEventsVector> events, base::Time wallClockTime) 401 void ThreadProxy::postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animati onEventsVector> events, base::Time wallClockTime)
380 { 402 {
381 DCHECK(isImplThread()); 403 DCHECK(isImplThread());
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 1210
1189 void ThreadProxy::renewTreePriorityOnImplThread() 1211 void ThreadProxy::renewTreePriorityOnImplThread()
1190 { 1212 {
1191 DCHECK(m_renewTreePriorityOnImplThreadPending); 1213 DCHECK(m_renewTreePriorityOnImplThreadPending);
1192 m_renewTreePriorityOnImplThreadPending = false; 1214 m_renewTreePriorityOnImplThreadPending = false;
1193 1215
1194 renewTreePriority(); 1216 renewTreePriority();
1195 } 1217 }
1196 1218
1197 } // namespace cc 1219 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698