Index: remoting/client/jni/jni_frame_consumer.cc |
diff --git a/remoting/client/jni/jni_frame_consumer.cc b/remoting/client/jni/jni_frame_consumer.cc |
index 8f8cfc6e9760d7d7ec1a92094e18b07c1ac43f1c..10450525f76f18a0451018b7c3452a7ebc738c5f 100644 |
--- a/remoting/client/jni/jni_frame_consumer.cc |
+++ b/remoting/client/jni/jni_frame_consumer.cc |
@@ -11,34 +11,6 @@ |
#include "remoting/client/jni/chromoting_jni_runtime.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" |
-namespace { |
- |
-// Allocates its buffer within a Java direct byte buffer, where it can be |
-// accessed by both native and managed code. |
-class DirectDesktopFrame : public webrtc::BasicDesktopFrame { |
- public: |
- DirectDesktopFrame(int width, int height); |
- |
- virtual ~DirectDesktopFrame(); |
- |
- jobject buffer() const { |
- return buffer_; |
- } |
- |
- private: |
- jobject buffer_; |
-}; |
- |
-DirectDesktopFrame::DirectDesktopFrame(int width, int height) |
- : webrtc::BasicDesktopFrame(webrtc::DesktopSize(width, height)) { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- buffer_ = env->NewDirectByteBuffer(data(), stride()*height); |
-} |
- |
-DirectDesktopFrame::~DirectDesktopFrame() {} |
- |
-} // namespace |
- |
namespace remoting { |
JniFrameConsumer::JniFrameConsumer(ChromotingJniRuntime* jni_runtime) |
@@ -69,7 +41,9 @@ void JniFrameConsumer::ApplyBuffer(const SkISize& view_size, |
DCHECK(jni_runtime_->display_task_runner()->BelongsToCurrentThread()); |
scoped_ptr<webrtc::DesktopFrame> buffer_scoped(buffer); |
- jni_runtime_->RedrawCanvas(); |
+ |
+ jni_runtime_->UpdateImageBuffer(view_size.width(), view_size.height(), |
+ buffer->data()); |
if (view_size.width() > view_size_.width() || |
view_size.height() > view_size_.height()) { |
@@ -118,14 +92,8 @@ void JniFrameConsumer::AllocateBuffer() { |
return; |
} |
- DirectDesktopFrame* buffer = new DirectDesktopFrame(view_size_.width(), |
- view_size_.height()); |
- |
- // Update Java's reference to the buffer and record of its dimensions. |
- jni_runtime_->UpdateImageBuffer(view_size_.width(), |
- view_size_.height(), |
- buffer->buffer()); |
- |
+ webrtc::DesktopSize size(view_size_.width(), view_size_.height()); |
+ webrtc::DesktopFrame* buffer = new webrtc::BasicDesktopFrame(size); |
frame_producer_->DrawBuffer(buffer); |
} |
} |