Chromium Code Reviews| Index: remoting/client/jni/jni_frame_consumer.h |
| diff --git a/remoting/client/jni/jni_frame_consumer.h b/remoting/client/jni/jni_frame_consumer.h |
| index a9a036196acca0dc58b121f624b1028658462326..517e3b598dbe36ecb960c5d007468c0da41cf931 100644 |
| --- a/remoting/client/jni/jni_frame_consumer.h |
| +++ b/remoting/client/jni/jni_frame_consumer.h |
| @@ -11,6 +11,7 @@ |
| #include "base/compiler_specific.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "remoting/client/frame_consumer.h" |
| #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" |
| @@ -18,10 +19,6 @@ namespace gfx { |
| class JavaBitmap; |
| } // namespace gfx |
| -namespace webrtc { |
| -class DesktopFrame; |
| -} // namespace webrtc |
| - |
| namespace remoting { |
| class ChromotingJniInstance; |
| class ChromotingJniRuntime; |
| @@ -36,51 +33,24 @@ class JniFrameConsumer : public FrameConsumer { |
| ~JniFrameConsumer() override; |
| - // This must be called once before the producer's source size is set. |
| - void set_frame_producer(FrameProducer* producer); |
| - |
| // FrameConsumer implementation. |
| - void ApplyBuffer(const webrtc::DesktopSize& view_size, |
| - const webrtc::DesktopRect& clip_area, |
| - webrtc::DesktopFrame* buffer, |
| - const webrtc::DesktopRegion& region, |
| - const webrtc::DesktopRegion* shape) override; |
| - void ReturnBuffer(webrtc::DesktopFrame* buffer) override; |
| - void SetSourceSize(const webrtc::DesktopSize& source_size, |
| - const webrtc::DesktopVector& dpi) override; |
| + scoped_ptr<webrtc::DesktopFrame> AllocateFrame( |
| + const webrtc::DesktopSize& size) override; |
| + void DrawFrame(scoped_ptr<webrtc::DesktopFrame> frame) override; |
|
Jamie
2015/08/19 20:52:10
This is missing the |done| parameter. I'm surprise
Sergey Ulanov
2015/08/19 23:37:13
Done.
|
| PixelFormat GetPixelFormat() override; |
| private: |
| - // Allocates a new buffer of |source_size|, informs Java about it, and tells |
| - // the producer to draw onto it. |
| - void AllocateBuffer(const webrtc::DesktopSize& source_size); |
| - |
| - // Frees a frame buffer previously allocated by AllocateBuffer. |
| - void FreeBuffer(webrtc::DesktopFrame* buffer); |
| + class Renderer; |
| - // Variables are to be used from the display thread. |
| + void OnFrameRendered(const base::Closure& done); |
| // Used to obtain task runner references and make calls to Java methods. |
| ChromotingJniRuntime* jni_runtime_; |
| - // Used to record statistics. |
| - scoped_refptr<ChromotingJniInstance> jni_instance_; |
| - |
| - FrameProducer* frame_producer_; |
| - webrtc::DesktopRect clip_area_; |
| - |
| - // List of allocated image buffers. |
| - std::list<webrtc::DesktopFrame*> buffers_; |
| - |
| - // This global reference is required, instead of a local reference, so it |
| - // remains valid for the lifetime of |bitmap_| - gfx::JavaBitmap does not |
| - // create its own global reference internally. And this global ref must be |
| - // destroyed (released) after |bitmap_| is destroyed. |
| - base::android::ScopedJavaGlobalRef<jobject> bitmap_global_ref_; |
| + // Renderer object used to render the frames on the display thread. |
| + scoped_ptr<Renderer> renderer_; |
| - // Reference to the frame bitmap that is passed to Java when the frame is |
| - // allocated. This provides easy access to the underlying pixels. |
| - scoped_ptr<gfx::JavaBitmap> bitmap_; |
| + base::WeakPtrFactory<JniFrameConsumer> weak_factory_; |
| DISALLOW_COPY_AND_ASSIGN(JniFrameConsumer); |
| }; |