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

Side by Side Diff: cc/single_thread_proxy.cc

Issue 11879012: cc: Redraw incomplete frames when new texture uploads finish (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@decouple_draw3b
Patch Set: fix [chromium-style] virtual methods with non-empty bodies shouldn't be declared inline Created 7 years, 11 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
« no previous file with comments | « cc/single_thread_proxy.h ('k') | cc/test/fake_layer_tree_host_impl_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/single_thread_proxy.h" 5 #include "cc/single_thread_proxy.h"
6 6
7 #include "base/auto_reset.h"
7 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
8 #include "cc/draw_quad.h" 9 #include "cc/draw_quad.h"
9 #include "cc/layer_tree_host.h" 10 #include "cc/layer_tree_host.h"
10 #include "cc/output_surface.h" 11 #include "cc/output_surface.h"
11 #include "cc/prioritized_resource_manager.h" 12 #include "cc/prioritized_resource_manager.h"
12 #include "cc/resource_update_controller.h" 13 #include "cc/resource_update_controller.h"
13 #include "cc/thread.h" 14 #include "cc/thread.h"
14 15
15 namespace cc { 16 namespace cc {
16 17
17 scoped_ptr<Proxy> SingleThreadProxy::create(LayerTreeHost* layerTreeHost) 18 scoped_ptr<Proxy> SingleThreadProxy::create(LayerTreeHost* layerTreeHost)
18 { 19 {
19 return make_scoped_ptr(new SingleThreadProxy(layerTreeHost)).PassAs<Proxy>() ; 20 return make_scoped_ptr(new SingleThreadProxy(layerTreeHost)).PassAs<Proxy>() ;
20 } 21 }
21 22
22 SingleThreadProxy::SingleThreadProxy(LayerTreeHost* layerTreeHost) 23 SingleThreadProxy::SingleThreadProxy(LayerTreeHost* layerTreeHost)
23 : Proxy(scoped_ptr<Thread>(NULL)) 24 : Proxy(scoped_ptr<Thread>(NULL))
24 , m_layerTreeHost(layerTreeHost) 25 , m_layerTreeHost(layerTreeHost)
25 , m_outputSurfaceLost(false) 26 , m_outputSurfaceLost(false)
26 , m_rendererInitialized(false) 27 , m_rendererInitialized(false)
27 , m_nextFrameIsNewlyCommittedFrame(false) 28 , m_nextFrameIsNewlyCommittedFrame(false)
29 , m_insideDraw(false)
28 , m_totalCommitCount(0) 30 , m_totalCommitCount(0)
29 { 31 {
30 TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy"); 32 TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy");
31 DCHECK(Proxy::isMainThread()); 33 DCHECK(Proxy::isMainThread());
32 DCHECK(layerTreeHost); 34 DCHECK(layerTreeHost);
33 35
34 // Impl-side painting not supported without threaded compositing 36 // Impl-side painting not supported without threaded compositing
35 DCHECK(!layerTreeHost->settings().implSidePainting); 37 DCHECK(!layerTreeHost->settings().implSidePainting);
36 } 38 }
37 39
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 m_layerTreeHostImpl.reset(); 264 m_layerTreeHostImpl.reset();
263 } 265 }
264 m_layerTreeHost = 0; 266 m_layerTreeHost = 0;
265 } 267 }
266 268
267 void SingleThreadProxy::setNeedsRedrawOnImplThread() 269 void SingleThreadProxy::setNeedsRedrawOnImplThread()
268 { 270 {
269 m_layerTreeHost->scheduleComposite(); 271 m_layerTreeHost->scheduleComposite();
270 } 272 }
271 273
274 void SingleThreadProxy::didSwapUseIncompleteTextureOnImplThread()
275 {
276 // implSidePainting only.
277 NOTREACHED();
278 }
279
280 void SingleThreadProxy::didUploadVisibleHighResolutionTileOnImplTread()
281 {
282 // implSidePainting only.
283 NOTREACHED();
284 }
285
272 void SingleThreadProxy::setNeedsCommitOnImplThread() 286 void SingleThreadProxy::setNeedsCommitOnImplThread()
273 { 287 {
274 m_layerTreeHost->scheduleComposite(); 288 m_layerTreeHost->scheduleComposite();
275 } 289 }
276 290
277 void SingleThreadProxy::setNeedsManageTilesOnImplThread() 291 void SingleThreadProxy::setNeedsManageTilesOnImplThread()
278 { 292 {
279 m_layerTreeHost->scheduleComposite(); 293 m_layerTreeHost->scheduleComposite();
280 } 294 }
281 295
(...skipping 20 matching lines...) Expand all
302 return; 316 return;
303 if (!m_layerTreeHost->contentsTextureManager()) 317 if (!m_layerTreeHost->contentsTextureManager())
304 return; 318 return;
305 319
306 m_layerTreeHostImpl->sendManagedMemoryStats( 320 m_layerTreeHostImpl->sendManagedMemoryStats(
307 m_layerTreeHost->contentsTextureManager()->memoryVisibleBytes(), 321 m_layerTreeHost->contentsTextureManager()->memoryVisibleBytes(),
308 m_layerTreeHost->contentsTextureManager()->memoryVisibleAndNearbyBytes() , 322 m_layerTreeHost->contentsTextureManager()->memoryVisibleAndNearbyBytes() ,
309 m_layerTreeHost->contentsTextureManager()->memoryUseBytes()); 323 m_layerTreeHost->contentsTextureManager()->memoryUseBytes());
310 } 324 }
311 325
326 bool SingleThreadProxy::isInsideDraw()
327 {
328 return m_insideDraw;
329 }
330
312 // Called by the legacy scheduling path (e.g. where render_widget does the sched uling) 331 // Called by the legacy scheduling path (e.g. where render_widget does the sched uling)
313 void SingleThreadProxy::compositeImmediately() 332 void SingleThreadProxy::compositeImmediately()
314 { 333 {
315 if (commitAndComposite()) { 334 if (commitAndComposite()) {
316 m_layerTreeHostImpl->swapBuffers(); 335 m_layerTreeHostImpl->swapBuffers();
317 didSwapFrame(); 336 didSwapFrame();
318 } 337 }
319 } 338 }
320 339
321 void SingleThreadProxy::forceSerializeOnSwapBuffers() 340 void SingleThreadProxy::forceSerializeOnSwapBuffers()
(...skipping 30 matching lines...) Expand all
352 bool result = doComposite(); 371 bool result = doComposite();
353 m_layerTreeHost->didBeginFrame(); 372 m_layerTreeHost->didBeginFrame();
354 return result; 373 return result;
355 } 374 }
356 375
357 bool SingleThreadProxy::doComposite() 376 bool SingleThreadProxy::doComposite()
358 { 377 {
359 DCHECK(!m_outputSurfaceLost); 378 DCHECK(!m_outputSurfaceLost);
360 { 379 {
361 DebugScopedSetImplThread impl(this); 380 DebugScopedSetImplThread impl(this);
381 base::AutoReset<bool> markInside(&m_insideDraw, true);
362 382
363 if (!m_layerTreeHostImpl->visible()) 383 if (!m_layerTreeHostImpl->visible())
364 return false; 384 return false;
365 385
366 m_layerTreeHostImpl->animate(base::TimeTicks::Now(), base::Time::Now()); 386 m_layerTreeHostImpl->animate(base::TimeTicks::Now(), base::Time::Now());
367 387
368 // We guard prepareToDraw() with canDraw() because it always returns a v alid frame, so can only 388 // We guard prepareToDraw() with canDraw() because it always returns a v alid frame, so can only
369 // be used when such a frame is possible. Since drawLayers() depends on the result of 389 // be used when such a frame is possible. Since drawLayers() depends on the result of
370 // prepareToDraw(), it is guarded on canDraw() as well. 390 // prepareToDraw(), it is guarded on canDraw() as well.
371 if (!m_layerTreeHostImpl->canDraw()) 391 if (!m_layerTreeHostImpl->canDraw())
(...skipping 28 matching lines...) Expand all
400 } 420 }
401 421
402 skia::RefPtr<SkPicture> SingleThreadProxy::capturePicture() 422 skia::RefPtr<SkPicture> SingleThreadProxy::capturePicture()
403 { 423 {
404 // Requires impl-side painting, which is only supported in threaded composit ing. 424 // Requires impl-side painting, which is only supported in threaded composit ing.
405 NOTREACHED(); 425 NOTREACHED();
406 return skia::RefPtr<SkPicture>(); 426 return skia::RefPtr<SkPicture>();
407 } 427 }
408 428
409 } // namespace cc 429 } // namespace cc
OLDNEW
« no previous file with comments | « cc/single_thread_proxy.h ('k') | cc/test/fake_layer_tree_host_impl_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698