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

Side by Side Diff: Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp

Issue 9950004: Merge 112446 - [chromium] Scheduler should not tell FrameRateController to begin a frame when we do… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 m_commitCompletionEventOnImplThread->signal(); 554 m_commitCompletionEventOnImplThread->signal();
555 m_commitCompletionEventOnImplThread = 0; 555 m_commitCompletionEventOnImplThread = 0;
556 } 556 }
557 557
558 void CCThreadProxy::scheduledActionBeginContextRecreation() 558 void CCThreadProxy::scheduledActionBeginContextRecreation()
559 { 559 {
560 ASSERT(isImplThread()); 560 ASSERT(isImplThread());
561 m_mainThreadProxy->postTask(createCCThreadTask(this, &CCThreadProxy::beginCo ntextRecreation)); 561 m_mainThreadProxy->postTask(createCCThreadTask(this, &CCThreadProxy::beginCo ntextRecreation));
562 } 562 }
563 563
564 bool CCThreadProxy::scheduledActionDrawAndSwapInternal(bool forcedDraw) 564 CCScheduledActionDrawAndSwapResult CCThreadProxy::scheduledActionDrawAndSwapInte rnal(bool forcedDraw)
565 { 565 {
566 TRACE_EVENT("CCThreadProxy::scheduledActionDrawAndSwap", this, 0); 566 TRACE_EVENT("CCThreadProxy::scheduledActionDrawAndSwap", this, 0);
567 CCScheduledActionDrawAndSwapResult result;
568 result.didDraw = false;
569 result.didSwap = false;
567 ASSERT(isImplThread()); 570 ASSERT(isImplThread());
568 ASSERT(m_layerTreeHostImpl); 571 ASSERT(m_layerTreeHostImpl);
569 if (!m_layerTreeHostImpl) 572 if (!m_layerTreeHostImpl)
570 return false; 573 return result;
571 574
572 // FIXME: compute the frame display time more intelligently 575 // FIXME: compute the frame display time more intelligently
573 double monotonicTime = monotonicallyIncreasingTime(); 576 double monotonicTime = monotonicallyIncreasingTime();
574 double wallClockTime = currentTime(); 577 double wallClockTime = currentTime();
575 578
576 m_inputHandlerOnImplThread->animate(monotonicTime); 579 m_inputHandlerOnImplThread->animate(monotonicTime);
577 m_layerTreeHostImpl->animate(monotonicTime, wallClockTime); 580 m_layerTreeHostImpl->animate(monotonicTime, wallClockTime);
578 CCLayerTreeHostImpl::FrameData frame; 581 CCLayerTreeHostImpl::FrameData frame;
579 bool drawFrame = m_layerTreeHostImpl->prepareToDraw(frame) || forcedDraw; 582 bool drawFrame = m_layerTreeHostImpl->prepareToDraw(frame) || forcedDraw;
580 if (drawFrame) 583 if (drawFrame) {
581 m_layerTreeHostImpl->drawLayers(frame); 584 m_layerTreeHostImpl->drawLayers(frame);
585 result.didDraw = true;
586 }
582 587
583 // Check for a pending compositeAndReadback. 588 // Check for a pending compositeAndReadback.
584 if (m_readbackRequestOnImplThread) { 589 if (m_readbackRequestOnImplThread) {
585 ASSERT(drawFrame); // This should be a forcedDraw 590 ASSERT(drawFrame); // This should be a forcedDraw
586 m_layerTreeHostImpl->readback(m_readbackRequestOnImplThread->pixels, m_r eadbackRequestOnImplThread->rect); 591 m_layerTreeHostImpl->readback(m_readbackRequestOnImplThread->pixels, m_r eadbackRequestOnImplThread->rect);
587 m_readbackRequestOnImplThread->success = !m_layerTreeHostImpl->isContext Lost(); 592 m_readbackRequestOnImplThread->success = !m_layerTreeHostImpl->isContext Lost();
588 m_readbackRequestOnImplThread->completion.signal(); 593 m_readbackRequestOnImplThread->completion.signal();
589 m_readbackRequestOnImplThread = 0; 594 m_readbackRequestOnImplThread = 0;
590 } 595 }
591 596
592 if (drawFrame) 597 if (drawFrame)
593 m_layerTreeHostImpl->swapBuffers(); 598 result.didSwap = m_layerTreeHostImpl->swapBuffers();
594 599
595 // Process any finish request 600 // Process any finish request
596 if (m_finishAllRenderingCompletionEventOnImplThread) { 601 if (m_finishAllRenderingCompletionEventOnImplThread) {
597 ASSERT(drawFrame); // This should be a forcedDraw 602 ASSERT(drawFrame); // This should be a forcedDraw
598 m_layerTreeHostImpl->finishAllRendering(); 603 m_layerTreeHostImpl->finishAllRendering();
599 m_finishAllRenderingCompletionEventOnImplThread->signal(); 604 m_finishAllRenderingCompletionEventOnImplThread->signal();
600 m_finishAllRenderingCompletionEventOnImplThread = 0; 605 m_finishAllRenderingCompletionEventOnImplThread = 0;
601 } 606 }
602 607
603 // Tell the main thread that the the newly-commited frame was drawn. 608 // Tell the main thread that the the newly-commited frame was drawn.
604 if (m_nextFrameIsNewlyCommittedFrameOnImplThread) { 609 if (m_nextFrameIsNewlyCommittedFrameOnImplThread) {
605 m_nextFrameIsNewlyCommittedFrameOnImplThread = false; 610 m_nextFrameIsNewlyCommittedFrameOnImplThread = false;
606 m_mainThreadProxy->postTask(createCCThreadTask(this, &CCThreadProxy::did CommitAndDrawFrame)); 611 m_mainThreadProxy->postTask(createCCThreadTask(this, &CCThreadProxy::did CommitAndDrawFrame));
607 } 612 }
608 613
609 ASSERT(drawFrame || (!drawFrame && !forcedDraw)); 614 ASSERT(drawFrame || (!drawFrame && !forcedDraw));
610 return drawFrame; 615 return result;
611 } 616 }
612 617
613 bool CCThreadProxy::scheduledActionDrawAndSwapIfPossible() 618 CCScheduledActionDrawAndSwapResult CCThreadProxy::scheduledActionDrawAndSwapIfPo ssible()
614 { 619 {
615 return scheduledActionDrawAndSwapInternal(false); 620 return scheduledActionDrawAndSwapInternal(false);
616 } 621 }
617 622
618 void CCThreadProxy::scheduledActionDrawAndSwapForced() 623 CCScheduledActionDrawAndSwapResult CCThreadProxy::scheduledActionDrawAndSwapForc ed()
619 { 624 {
620 scheduledActionDrawAndSwapInternal(true); 625 return scheduledActionDrawAndSwapInternal(true);
621 } 626 }
622 627
623 void CCThreadProxy::didCommitAndDrawFrame() 628 void CCThreadProxy::didCommitAndDrawFrame()
624 { 629 {
625 ASSERT(isMainThread()); 630 ASSERT(isMainThread());
626 if (!m_layerTreeHost) 631 if (!m_layerTreeHost)
627 return; 632 return;
628 m_layerTreeHost->didCommitAndDrawFrame(); 633 m_layerTreeHost->didCommitAndDrawFrame();
629 } 634 }
630 635
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator()); 757 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator());
753 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr)); 758 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr));
754 if (*recreateSucceeded) { 759 if (*recreateSucceeded) {
755 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities(); 760 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities();
756 m_schedulerOnImplThread->didRecreateContext(); 761 m_schedulerOnImplThread->didRecreateContext();
757 } 762 }
758 completion->signal(); 763 completion->signal();
759 } 764 }
760 765
761 } // namespace WebCore 766 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h ('k') | Source/WebKit/chromium/ChangeLog » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698