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

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

Issue 10201008: Merge 114475 - [chromium] Ensure RateLimiter waits for Swapbuffers completion (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 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 627
628 void CCLayerTreeHost::startRateLimiter(GraphicsContext3D* context) 628 void CCLayerTreeHost::startRateLimiter(GraphicsContext3D* context)
629 { 629 {
630 if (m_animating) 630 if (m_animating)
631 return; 631 return;
632 ASSERT(context); 632 ASSERT(context);
633 RateLimiterMap::iterator it = m_rateLimiters.find(context); 633 RateLimiterMap::iterator it = m_rateLimiters.find(context);
634 if (it != m_rateLimiters.end()) 634 if (it != m_rateLimiters.end())
635 it->second->start(); 635 it->second->start();
636 else { 636 else {
637 RefPtr<RateLimiter> rateLimiter = RateLimiter::create(context); 637 RefPtr<RateLimiter> rateLimiter = RateLimiter::create(context, this);
638 m_rateLimiters.set(context, rateLimiter); 638 m_rateLimiters.set(context, rateLimiter);
639 rateLimiter->start(); 639 rateLimiter->start();
640 } 640 }
641 } 641 }
642 642
643 void CCLayerTreeHost::rateLimit()
644 {
645 // Force a no-op command on the compositor context, so that any ratelimiting commands will wait for the compositing
646 // context, and therefore for the SwapBuffers.
647 m_proxy->forceSerializeOnSwapBuffers();
648 }
649
643 void CCLayerTreeHost::stopRateLimiter(GraphicsContext3D* context) 650 void CCLayerTreeHost::stopRateLimiter(GraphicsContext3D* context)
644 { 651 {
645 RateLimiterMap::iterator it = m_rateLimiters.find(context); 652 RateLimiterMap::iterator it = m_rateLimiters.find(context);
646 if (it != m_rateLimiters.end()) { 653 if (it != m_rateLimiters.end()) {
647 it->second->stop(); 654 it->second->stop();
648 m_rateLimiters.remove(it); 655 m_rateLimiters.remove(it);
649 } 656 }
650 } 657 }
651 658
652 bool CCLayerTreeHost::requestPartialTextureUpdate() 659 bool CCLayerTreeHost::requestPartialTextureUpdate()
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) { 702 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) {
696 if (layer->id() == events[eventIndex].layerId) 703 if (layer->id() == events[eventIndex].layerId)
697 layer->notifyAnimationStarted(events[eventIndex], wallClockTime); 704 layer->notifyAnimationStarted(events[eventIndex], wallClockTime);
698 } 705 }
699 706
700 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) 707 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex)
701 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); 708 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime);
702 } 709 }
703 710
704 } // namespace WebCore 711 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h ('k') | Source/WebCore/platform/graphics/chromium/cc/CCProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698