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) { |