| Index: remoting/client/plugin/pepper_view.cc
|
| diff --git a/remoting/client/plugin/pepper_view.cc b/remoting/client/plugin/pepper_view.cc
|
| index a0f6ac4b01943dc9d290c9b2bebe98b53536a708..16a66a0ada8818830625935bcaafc8d30e01973b 100644
|
| --- a/remoting/client/plugin/pepper_view.cc
|
| +++ b/remoting/client/plugin/pepper_view.cc
|
| @@ -61,11 +61,10 @@ const size_t kMaxPendingBuffersCount = 2;
|
| } // namespace
|
|
|
| PepperView::PepperView(ChromotingInstance* instance,
|
| - ClientContext* context,
|
| - FrameProducer* producer)
|
| + ClientContext* context)
|
| : instance_(instance),
|
| context_(context),
|
| - producer_(producer),
|
| + producer_(NULL),
|
| merge_buffer_(NULL),
|
| dips_to_device_scale_(1.0f),
|
| dips_to_view_scale_(1.0f),
|
| @@ -73,7 +72,6 @@ PepperView::PepperView(ChromotingInstance* instance,
|
| is_initialized_(false),
|
| frame_received_(false),
|
| callback_factory_(this) {
|
| - InitiateDrawing();
|
| }
|
|
|
| PepperView::~PepperView() {
|
| @@ -91,6 +89,15 @@ PepperView::~PepperView() {
|
| }
|
| }
|
|
|
| +void PepperView::Initialize(FrameProducer* producer) {
|
| + producer_ = producer;
|
| + webrtc::DesktopFrame* buffer = AllocateBuffer();
|
| + while (buffer) {
|
| + producer_->DrawBuffer(buffer);
|
| + buffer = AllocateBuffer();
|
| + }
|
| +}
|
| +
|
| void PepperView::SetView(const pp::View& view) {
|
| bool view_changed = false;
|
|
|
| @@ -150,7 +157,7 @@ void PepperView::SetView(const pp::View& view) {
|
|
|
| if (view_changed) {
|
| producer_->SetOutputSizeAndClip(view_size_, clip_area_);
|
| - InitiateDrawing();
|
| + Initialize(producer_);
|
| }
|
| }
|
|
|
| @@ -171,7 +178,7 @@ void PepperView::ApplyBuffer(const webrtc::DesktopSize& view_size,
|
| // the properly scaled data.
|
| if (!view_size_.equals(view_size)) {
|
| FreeBuffer(buffer);
|
| - InitiateDrawing();
|
| + Initialize(producer_);
|
| } else {
|
| FlushBuffer(clip_area, buffer, region);
|
| }
|
| @@ -187,7 +194,7 @@ void PepperView::ReturnBuffer(webrtc::DesktopFrame* buffer) {
|
| producer_->DrawBuffer(buffer);
|
| } else {
|
| FreeBuffer(buffer);
|
| - InitiateDrawing();
|
| + Initialize(producer_);
|
| }
|
| }
|
|
|
| @@ -205,6 +212,10 @@ void PepperView::SetSourceSize(const webrtc::DesktopSize& source_size,
|
| instance_->SetDesktopSize(source_size, source_dpi);
|
| }
|
|
|
| +FrameConsumer::PixelFormat PepperView::GetPixelFormat() {
|
| + return FORMAT_BGRA;
|
| +}
|
| +
|
| webrtc::DesktopFrame* PepperView::AllocateBuffer() {
|
| if (buffers_.size() >= kMaxPendingBuffersCount)
|
| return NULL;
|
| @@ -235,14 +246,6 @@ void PepperView::FreeBuffer(webrtc::DesktopFrame* buffer) {
|
| delete buffer;
|
| }
|
|
|
| -void PepperView::InitiateDrawing() {
|
| - webrtc::DesktopFrame* buffer = AllocateBuffer();
|
| - while (buffer) {
|
| - producer_->DrawBuffer(buffer);
|
| - buffer = AllocateBuffer();
|
| - }
|
| -}
|
| -
|
| void PepperView::FlushBuffer(const webrtc::DesktopRect& clip_area,
|
| webrtc::DesktopFrame* buffer,
|
| const webrtc::DesktopRegion& region) {
|
|
|