Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(846)

Unified Diff: remoting/client/plugin/pepper_view.cc

Issue 18233015: Abstract PPAPI's ImageData behind webrtc::DesktopFrame interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify PepperDesktopFrame implementation Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/client/plugin/pepper_view.cc
diff --git a/remoting/client/plugin/pepper_view.cc b/remoting/client/plugin/pepper_view.cc
index 8af4fa3f9393bbec5bb3d703a14b5dd239791c6c..4859b7a64a043ca44429965f1a65028cb1d70dcd 100644
--- a/remoting/client/plugin/pepper_view.cc
+++ b/remoting/client/plugin/pepper_view.cc
@@ -22,6 +22,7 @@
#include "remoting/client/client_context.h"
#include "remoting/client/frame_producer.h"
#include "remoting/client/plugin/chromoting_instance.h"
+#include "remoting/client/plugin/pepper_desktop_frame.h"
#include "remoting/client/plugin/pepper_util.h"
using base::Passed;
@@ -139,7 +140,7 @@ void PepperView::SetView(const pp::View& view) {
void PepperView::ApplyBuffer(const SkISize& view_size,
const SkIRect& clip_area,
- pp::ImageData* buffer,
+ webrtc::DesktopFrame* buffer,
const SkRegion& region) {
DCHECK(context_->main_task_runner()->BelongsToCurrentThread());
@@ -160,7 +161,7 @@ void PepperView::ApplyBuffer(const SkISize& view_size,
}
}
-void PepperView::ReturnBuffer(pp::ImageData* buffer) {
+void PepperView::ReturnBuffer(webrtc::DesktopFrame* buffer) {
DCHECK(context_->main_task_runner()->BelongsToCurrentThread());
// Reuse the buffer if it is large enough, otherwise drop it on the floor
@@ -188,18 +189,21 @@ void PepperView::SetSourceSize(const SkISize& source_size,
instance_->SetDesktopSize(source_size, source_dpi);
}
-pp::ImageData* PepperView::AllocateBuffer() {
+webrtc::DesktopFrame* PepperView::AllocateBuffer() {
if (buffers_.size() >= kMaxPendingBuffersCount)
return NULL;
- pp::Size pp_size = pp::Size(clip_area_.width(), clip_area_.height());
- if (pp_size.IsEmpty())
+ if (clip_area_.width()==0 || clip_area_.height()==0)
return NULL;
// Create an image buffer of the required size, but don't zero it.
- pp::ImageData* buffer = new pp::ImageData(
- instance_, PP_IMAGEDATAFORMAT_BGRA_PREMUL, pp_size, false);
- if (buffer->is_null()) {
+ webrtc::DesktopFrame* buffer = new PepperDesktopFrame(
+ new pp::ImageData(instance_,
Wez 2013/07/03 21:46:39 You don't need to use new here; pp::ImageData itse
+ PP_IMAGEDATAFORMAT_BGRA_PREMUL,
+ pp::Size(clip_area_.width(),
+ clip_area_.height()),
+ false));
+ if (static_cast<PepperDesktopFrame*>(buffer)->data_object().is_null()) {
LOG(WARNING) << "Not enough memory for frame buffers.";
delete buffer;
return NULL;
@@ -209,7 +213,7 @@ pp::ImageData* PepperView::AllocateBuffer() {
return buffer;
}
-void PepperView::FreeBuffer(pp::ImageData* buffer) {
+void PepperView::FreeBuffer(webrtc::DesktopFrame* buffer) {
DCHECK(std::find(buffers_.begin(), buffers_.end(), buffer) != buffers_.end());
buffers_.remove(buffer);
@@ -217,7 +221,7 @@ void PepperView::FreeBuffer(pp::ImageData* buffer) {
}
void PepperView::InitiateDrawing() {
- pp::ImageData* buffer = AllocateBuffer();
+ webrtc::DesktopFrame* buffer = AllocateBuffer();
while (buffer) {
producer_->DrawBuffer(buffer);
buffer = AllocateBuffer();
@@ -225,7 +229,7 @@ void PepperView::InitiateDrawing() {
}
void PepperView::FlushBuffer(const SkIRect& clip_area,
- pp::ImageData* buffer,
+ webrtc::DesktopFrame* buffer,
const SkRegion& region) {
// Defer drawing if the flush is already in progress.
if (flush_pending_) {
@@ -257,7 +261,7 @@ void PepperView::FlushBuffer(const SkIRect& clip_area,
// Pepper Graphics 2D has a strange and badly documented API that the
// point here is the offset from the source rect. Why?
graphics2d_.PaintImageData(
- *buffer,
+ static_cast<PepperDesktopFrame*>(buffer)->data_object(),
pp::Point(clip_area.left(), clip_area.top()),
pp::Rect(rect.left(), rect.top(), rect.width(), rect.height()));
}
@@ -286,7 +290,7 @@ void PepperView::FlushBuffer(const SkIRect& clip_area,
}
void PepperView::OnFlushDone(base::Time paint_start,
- pp::ImageData* buffer,
+ webrtc::DesktopFrame* buffer,
int result) {
DCHECK(context_->main_task_runner()->BelongsToCurrentThread());
DCHECK(flush_pending_);

Powered by Google App Engine
This is Rietveld 408576698