diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-12 22:43:41 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-12 22:43:41 +0000 |
commit | cd57cc5a246367c2558fefa04ae9eca8f4d545d2 (patch) | |
tree | a2235045e9c5e4ff028d641b76f5d01aa5461b26 /cc/rate_limiter.h | |
parent | 3fe7ba055be580443445895c0ee01ada3b628487 (diff) | |
download | chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.zip chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.gz chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.bz2 |
[cc] Rename all cc/ filenames to Chromium style
BUG=155413
Review URL: https://codereview.chromium.org/11122003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/rate_limiter.h')
-rw-r--r-- | cc/rate_limiter.h | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/cc/rate_limiter.h b/cc/rate_limiter.h index 638cbb2..7b48d74 100644 --- a/cc/rate_limiter.h +++ b/cc/rate_limiter.h @@ -1,3 +1,53 @@ -// Copyright 2012 The Chromium Authors. All rights reserved. +// Copyright 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + +#ifndef RateLimiter_h +#define RateLimiter_h + +#if USE(ACCELERATED_COMPOSITING) + +#include "base/memory/ref_counted.h" + +namespace WebKit { +class WebGraphicsContext3D; +} + +namespace cc { + +class RateLimiterClient { +public: + virtual void rateLimit() = 0; +}; + +// A RateLimiter can be used to make sure that a single context does not dominate all execution time. +// To use, construct a RateLimiter class around the context and call start() whenever calls are made on the +// context outside of normal flow control. RateLimiter will block if the context is too far ahead of the +// compositor. +class RateLimiter : public base::RefCounted<RateLimiter> { +public: + static scoped_refptr<RateLimiter> create(WebKit::WebGraphicsContext3D*, RateLimiterClient*); + + void start(); + + // Context and client will not be accessed after stop(). + void stop(); + +private: + RateLimiter(WebKit::WebGraphicsContext3D*, RateLimiterClient*); + ~RateLimiter(); + friend class base::RefCounted<RateLimiter>; + + class Task; + friend class Task; + void rateLimitContext(); + + WebKit::WebGraphicsContext3D* m_context; + bool m_active; + RateLimiterClient *m_client; +}; + +} +#endif // USE(ACCELERATED_COMPOSITING) + +#endif |