Index: remoting/client/jni/jni_display_handler.cc |
diff --git a/remoting/client/jni/jni_display_handler.cc b/remoting/client/jni/jni_display_handler.cc |
index b699461e800a7585be9c90817bad05ebff8d9fe4..16a4a46719e99cca5825c3bb70562cd48a8cf6f1 100644 |
--- a/remoting/client/jni/jni_display_handler.cc |
+++ b/remoting/client/jni/jni_display_handler.cc |
@@ -53,15 +53,22 @@ void DisplayCursorShapeStub::SetCursorShape( |
} |
// JniDisplayHandler definitions. |
-JniDisplayHandler::JniDisplayHandler( |
- ChromotingJniRuntime* runtime, |
- base::android::ScopedJavaGlobalRef<jobject> java_display) |
+JniDisplayHandler::JniDisplayHandler(ChromotingJniRuntime* runtime) |
: runtime_(runtime), |
- java_display_(java_display), |
- weak_factory_(this) {} |
+ weak_factory_(this) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ java_display_.Reset(Java_Display_createJavaDisplayObject( |
+ env, reinterpret_cast<intptr_t>(this))); |
+} |
JniDisplayHandler::~JniDisplayHandler() { |
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); |
+ Java_Display_invalidate(base::android::AttachCurrentThread(), |
+ java_display_.obj()); |
+} |
+ |
+base::android::ScopedJavaLocalRef<jobject> JniDisplayHandler::GetJavaDisplay() { |
+ return base::android::ScopedJavaLocalRef<jobject>(java_display_); |
Lambros
2016/06/27 23:51:44
I'm not sure if this is correct? ScopedJavaLocalRe
Sergey Ulanov
2016/06/27 23:59:18
It's a java object, so it cannot be owned. This li
Yuwei
2016/06/28 00:03:26
It will eventually call SetNewLocalRef(env, other.
|
} |
void JniDisplayHandler::UpdateCursorShape( |
@@ -124,16 +131,6 @@ bool JniDisplayHandler::RegisterJni(JNIEnv* env) { |
return RegisterNativesImpl(env); |
} |
-void JniDisplayHandler::Destroy( |
- JNIEnv* env, |
- const base::android::JavaParamRef<jobject>& caller) { |
- if (runtime_->display_task_runner()->BelongsToCurrentThread()) { |
- delete this; |
- } else { |
- runtime_->display_task_runner()->DeleteSoon(FROM_HERE, this); |
- } |
-} |
- |
void JniDisplayHandler::ScheduleRedraw( |
JNIEnv* env, |
const base::android::JavaParamRef<jobject>& caller) { |
@@ -142,10 +139,4 @@ void JniDisplayHandler::ScheduleRedraw( |
weak_factory_.GetWeakPtr())); |
} |
-static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) { |
- return reinterpret_cast<intptr_t>(new JniDisplayHandler( |
- ChromotingJniRuntime::GetInstance(), |
- base::android::ScopedJavaGlobalRef<jobject>(env, caller))); |
-} |
- |
} // namespace remoting |