| Index: remoting/client/plugin/pepper_video_renderer_2d.cc | 
| diff --git a/remoting/client/plugin/pepper_video_renderer_2d.cc b/remoting/client/plugin/pepper_video_renderer_2d.cc | 
| index 678e829edccddad43c74d9a9aed9fcbd94de193f..e7d6f2449284c58b5fad5534d4edc9f3ea244a22 100644 | 
| --- a/remoting/client/plugin/pepper_video_renderer_2d.cc | 
| +++ b/remoting/client/plugin/pepper_video_renderer_2d.cc | 
| @@ -100,11 +100,11 @@ bool PepperVideoRenderer2D::Initialize(pp::Instance* instance, | 
|  | 
| instance_ = instance; | 
| event_handler_ = event_handler; | 
| -  frame_consumer_proxy_ = new FrameConsumerProxy( | 
| -      context.main_task_runner(), weak_factory_.GetWeakPtr()); | 
| +  scoped_ptr<FrameConsumerProxy> frame_consumer_proxy = | 
| +      make_scoped_ptr(new FrameConsumerProxy(weak_factory_.GetWeakPtr())); | 
| software_video_renderer_.reset(new SoftwareVideoRenderer( | 
| context.main_task_runner(), context.decode_task_runner(), | 
| -      frame_consumer_proxy_)); | 
| +      frame_consumer_proxy.Pass())); | 
|  | 
| return true; | 
| } | 
| @@ -207,7 +207,7 @@ void PepperVideoRenderer2D::ApplyBuffer(const webrtc::DesktopSize& view_size, | 
| const webrtc::DesktopRect& clip_area, | 
| webrtc::DesktopFrame* buffer, | 
| const webrtc::DesktopRegion& region, | 
| -                                        const webrtc::DesktopRegion& shape) { | 
| +                                        const webrtc::DesktopRegion* shape) { | 
| DCHECK(CalledOnValidThread()); | 
|  | 
| if (!frame_received_) { | 
| @@ -216,15 +216,20 @@ void PepperVideoRenderer2D::ApplyBuffer(const webrtc::DesktopSize& view_size, | 
| } | 
| // We cannot use the data in the buffer if its dimensions don't match the | 
| // current view size. | 
| -  // TODO(alexeypa): We could rescale and draw it (or even draw it without | 
| -  // rescaling) to reduce the perceived lag while we are waiting for | 
| -  // the properly scaled data. | 
| if (!view_size_.equals(view_size)) { | 
| FreeBuffer(buffer); | 
| AllocateBuffers(); | 
| } else { | 
| FlushBuffer(clip_area, buffer, region); | 
| -    event_handler_->OnVideoShape(shape); | 
| +    if (shape) { | 
| +      if (!source_shape_ || !source_shape_->Equals(*shape)) { | 
| +        source_shape_ = make_scoped_ptr(new webrtc::DesktopRegion(*shape)); | 
| +        event_handler_->OnVideoShape(source_shape_.get()); | 
| +      } | 
| +    } else if (source_shape_) { | 
| +      source_shape_ = nullptr; | 
| +      event_handler_->OnVideoShape(nullptr); | 
| +    } | 
| } | 
| } | 
|  | 
|  |