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

Unified Diff: remoting/client/jni/jni_frame_consumer.cc

Issue 2007123003: [Android Client] Break down multi-threaded classes by thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename JniSecretFetcher to JniPairingSecretFetcher Created 4 years, 7 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
« no previous file with comments | « remoting/client/jni/jni_frame_consumer.h ('k') | remoting/client/jni/jni_pairing_secret_fetcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 71c9b148d8d9b4cc74e90fe64e70aafcbde85c54..bb0bad4eefa0eb83589dad470e32450a7a454765 100644
--- a/remoting/client/jni/jni_frame_consumer.cc
+++ b/remoting/client/jni/jni_frame_consumer.cc
@@ -14,6 +14,7 @@
#include "remoting/client/jni/chromoting_jni_instance.h"
#include "remoting/client/jni/chromoting_jni_runtime.h"
#include "remoting/client/jni/jni_client.h"
+#include "remoting/client/jni/jni_display_handler.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_region.h"
#include "ui/gfx/android/java_bitmap.h"
@@ -22,9 +23,9 @@ namespace remoting {
class JniFrameConsumer::Renderer {
public:
- Renderer(ChromotingJniRuntime* jni_runtime, JniClient* jni_client) :
- jni_runtime_(jni_runtime),
- jni_client_(jni_client) {}
+ Renderer(ChromotingJniRuntime* jni_runtime,
+ base::WeakPtr<JniDisplayHandler> display)
+ : jni_runtime_(jni_runtime), display_handler_(display) {}
~Renderer() {
DCHECK(jni_runtime_->display_task_runner()->BelongsToCurrentThread());
}
@@ -35,7 +36,7 @@ class JniFrameConsumer::Renderer {
// Used to obtain task runner references and make calls to Java methods.
ChromotingJniRuntime* jni_runtime_;
- JniClient* jni_client_;
+ base::WeakPtr<JniDisplayHandler> display_handler_;
// This global reference is required, instead of a local reference, so it
// remains valid for the lifetime of |bitmap_| - gfx::JavaBitmap does not
@@ -52,6 +53,9 @@ class JniFrameConsumer::Renderer {
void JniFrameConsumer::Renderer::RenderFrame(
std::unique_ptr<webrtc::DesktopFrame> frame) {
DCHECK(jni_runtime_->display_task_runner()->BelongsToCurrentThread());
+ if (!display_handler_) {
+ return;
+ }
if (!bitmap_ || bitmap_->size().width() != frame->size().width() ||
bitmap_->size().height() != frame->size().height()) {
@@ -61,11 +65,11 @@ void JniFrameConsumer::Renderer::RenderFrame(
// |bitmap_| must be deleted before |bitmap_global_ref_| is released.
bitmap_.reset();
bitmap_global_ref_.Reset(
- env,
- jni_client_->NewBitmap(frame->size().width(), frame->size().height())
- .obj());
+ env, display_handler_
+ ->NewBitmap(frame->size().width(), frame->size().height())
+ .obj());
bitmap_.reset(new gfx::JavaBitmap(bitmap_global_ref_.obj()));
- jni_client_->UpdateFrameBitmap(bitmap_global_ref_.obj());
+ display_handler_->UpdateFrameBitmap(bitmap_global_ref_);
}
// Copy pixels from |frame| into the Java Bitmap.
@@ -84,13 +88,13 @@ void JniFrameConsumer::Renderer::RenderFrame(
bitmap_->stride(), buffer_rect, i.rect());
}
- jni_client_->RedrawCanvas();
+ display_handler_->RedrawCanvas();
}
JniFrameConsumer::JniFrameConsumer(ChromotingJniRuntime* jni_runtime,
- JniClient* jni_client)
+ base::WeakPtr<JniDisplayHandler> display)
: jni_runtime_(jni_runtime),
- renderer_(new Renderer(jni_runtime, jni_client)),
+ renderer_(new Renderer(jni_runtime, display)),
weak_factory_(this) {}
JniFrameConsumer::~JniFrameConsumer() {
« no previous file with comments | « remoting/client/jni/jni_frame_consumer.h ('k') | remoting/client/jni/jni_pairing_secret_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698