| Index: content/browser/renderer_host/render_widget_host_view_mac.mm
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| index ddb1a16ae6f3a926d02cbb523666db9e6b7f6802..1c9ce1e430de8821450808b9dd533f7c5999f680 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| @@ -482,6 +482,44 @@ void RenderWidgetHostViewMac::DelegatedFrameHostUpdateVSyncParameters(
|
| render_widget_host_->UpdateVSyncParameters(timebase, interval);
|
| }
|
|
|
| +void RenderWidgetHostViewMac::SetBeginFrameSource(
|
| + cc::BeginFrameSource* source) {
|
| + if (begin_frame_source_ && needs_begin_frames_)
|
| + begin_frame_source_->RemoveObserver(this);
|
| + begin_frame_source_ = source;
|
| + if (begin_frame_source_ && needs_begin_frames_)
|
| + begin_frame_source_->AddObserver(this);
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// cc::BeginFrameSourceBase, public:
|
| +
|
| +void RenderWidgetHostViewMac::OnSetNeedsBeginFrames(bool needs_begin_frames) {
|
| + if (needs_begin_frames_ == needs_begin_frames)
|
| + return;
|
| +
|
| + needs_begin_frames_ = needs_begin_frames;
|
| + if (begin_frame_source_) {
|
| + if (needs_begin_frames_)
|
| + begin_frame_source_->AddObserver(this);
|
| + else
|
| + begin_frame_source_->RemoveObserver(this);
|
| + }
|
| +}
|
| +
|
| +bool RenderWidgetHostViewMac::OnBeginFrameDerivedImpl(
|
| + const cc::BeginFrameArgs& args) {
|
| + delegated_frame_host_->SetVSyncParameters(args.frame_time, args.interval);
|
| + render_widget_host_->Send(
|
| + new ViewMsg_BeginFrame(render_widget_host_->GetRoutingID(), args));
|
| + return true;
|
| +}
|
| +
|
| +void RenderWidgetHostViewMac::OnBeginFrameSourcePausedChanged(
|
| + bool paused) {
|
| + // Nothing to do here.
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // AcceleratedWidgetMacNSView, public:
|
|
|
| @@ -527,7 +565,9 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget,
|
| allow_pause_for_resize_or_repaint_(true),
|
| is_guest_view_hack_(is_guest_view_hack),
|
| wheel_gestures_enabled_(UseGestureBasedWheelScrolling()),
|
| - fullscreen_parent_host_view_(NULL),
|
| + fullscreen_parent_host_view_(nullptr),
|
| + begin_frame_source_(nullptr),
|
| + needs_begin_frames_(false),
|
| weak_factory_(this) {
|
| // |cocoa_view_| owns us and we will be deleted when |cocoa_view_|
|
| // goes away. Since we autorelease it, our caller must put
|
| @@ -687,6 +727,8 @@ bool RenderWidgetHostViewMac::OnMessageReceived(const IPC::Message& message) {
|
| IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewMac, message)
|
| IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedTextCompleted,
|
| OnGetRenderedTextCompleted)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_SetNeedsBeginFrames,
|
| + OnSetNeedsBeginFrames)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
|
|