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..a98fc5f610322c7fd789e72877d1533e45e0a43f 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_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_; |
brianderson
2014/12/12 01:17:02
last_sent_begin_frame_args_?
simonhong
2014/12/15 15:37:27
Yep, it is more clear!
|
}; |
} // namespace content |