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

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: 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..bfe3f0582912b907759ea39b25d24c8bb94c1a0d 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 {
@@ -64,6 +66,8 @@ class CONTENT_EXPORT DelegatedFrameHostClient {
virtual DelegatedFrameHost* GetDelegatedFrameHost() const = 0;
virtual bool ShouldCreateResizeLock();
virtual void RequestCopyOfOutput(scoped_ptr<cc::CopyOutputRequest> request);
+
+ virtual void OnSendBeginFrame(const cc::BeginFrameArgs& args) = 0;
};
// The DelegatedFrameHost is used to host all of the RenderWidgetHostView state
@@ -72,6 +76,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 +117,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 +150,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 +163,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 +321,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_sent_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_sent_begin_frame_args_;
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698