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

Unified Diff: content/browser/compositor/delegated_frame_host.h

Issue 775143003: cc: Implement unified BeginFrame on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move common logic to DelegatedFrameHost Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/compositor/delegated_frame_host.h
diff --git a/content/browser/compositor/delegated_frame_host.h b/content/browser/compositor/delegated_frame_host.h
index 5029fb3cc49e28ba9309cee103a7d8eec105fa09..2290fda651200b639cdc0c5b1f19ba02bbb188b8 100644
--- a/content/browser/compositor/delegated_frame_host.h
+++ b/content/browser/compositor/delegated_frame_host.h
@@ -16,6 +16,7 @@
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/public/browser/render_process_host.h"
+#include "ui/base/compositor/compositor_begin_frame_observer.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/compositor_observer.h"
#include "ui/compositor/compositor_vsync_manager.h"
@@ -25,6 +26,7 @@
namespace cc {
class SurfaceFactory;
+struct BeginFrameArgs;
}
namespace media {
@@ -72,6 +74,7 @@ class CONTENT_EXPORT DelegatedFrameHostClient {
// the ui::Compositor associated with its DelegatedFrameHostClient.
class CONTENT_EXPORT DelegatedFrameHost
: public ui::CompositorObserver,
+ public ui::CompositorBeginFrameObserver,
public ui::CompositorVSyncManager::Observer,
public ui::LayerOwnerDelegate,
public ImageTransportFactoryObserver,
@@ -112,6 +115,7 @@ class CONTENT_EXPORT DelegatedFrameHost
scoped_ptr<RenderWidgetHostViewFrameSubscriber> subscriber);
void EndFrameSubscription();
bool HasFrameSubscriber() const { return frame_subscriber_; }
+ void OnSetNeedsBeginFrames(bool needs_begin_frames);
// Exposed for tests.
cc::DelegatedFrameProvider* FrameProviderForTesting() const {
@@ -144,6 +148,11 @@ class CONTENT_EXPORT DelegatedFrameHost
void LockResources();
void UnlockResources();
+ void StartObservingBeginFrames();
+ void StopObservingBeginFrames();
+
+ void SetVSyncParams(base::TimeTicks timebase, base::TimeDelta interval);
+
// Overridden from ui::CompositorObserver:
void OnCompositingDidCommit(ui::Compositor* compositor) override;
void OnCompositingStarted(ui::Compositor* compositor,
@@ -152,6 +161,9 @@ class CONTENT_EXPORT DelegatedFrameHost
void OnCompositingAborted(ui::Compositor* compositor) override;
void OnCompositingLockStateChanged(ui::Compositor* compositor) override;
+ // Overridden from ui::CompositorBeginFrameObserver:
+ void OnSendBeginFrame(const cc::BeginFrameArgs& args) override;
+
// Overridden from ui::CompositorVSyncManager::Observer:
void OnUpdateVSyncParameters(base::TimeTicks timebase,
base::TimeDelta interval) override;
@@ -307,6 +319,17 @@ class CONTENT_EXPORT DelegatedFrameHost
yuv_readback_pipeline_;
scoped_ptr<DelegatedFrameEvictor> delegated_frame_evictor_;
+
+ // True when unified BeginFrame scheduing is used.
+ bool begin_frame_scheduling_enabled_;
+
+ // True when RenderWidget needs a BeginFrame.
+ bool needs_begin_frames_;
+
+ // Pass |last_begin_frame_args_| to compositor when |this| is added as a
+ // CompositorBeginFrameObserver. With this, Compositor can determine whether
+ // latest BeginFrameArgs can be used immediately or not.
+ cc::BeginFrameArgs last_begin_frame_args_;
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698