Update android peer connection factory wrapper away from rtc::MessageHandler

Bug: webrtc:9702
Change-Id: Iab87e8e31a52d91b127ed03f5c356d4ccb4619cc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/274140
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Commit-Queue: Xavier Lepaul‎ <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38033}
This commit is contained in:
Danil Chapovalov
2022-09-05 11:01:51 +02:00
committed by WebRTC LUCI CQ
parent 399a2b5ef6
commit 2acdda84ca

View File

@ -72,31 +72,12 @@ typedef void (*JavaMethodPointer)(JNIEnv*, const JavaRef<jobject>&);
// given Java object.
void PostJavaCallback(JNIEnv* env,
rtc::Thread* queue,
const rtc::Location& posted_from,
const JavaRef<jobject>& j_object,
JavaMethodPointer java_method_pointer) {
// One-off message handler that calls the Java method on the specified Java
// object before deleting itself.
class JavaAsyncCallback : public rtc::MessageHandler {
public:
JavaAsyncCallback(JNIEnv* env,
const JavaRef<jobject>& j_object,
JavaMethodPointer java_method_pointer)
: j_object_(env, j_object), java_method_pointer_(java_method_pointer) {}
void OnMessage(rtc::Message*) override {
java_method_pointer_(AttachCurrentThreadIfNeeded(), j_object_);
// The message has been delivered, clean up after ourself.
delete this;
}
private:
ScopedJavaGlobalRef<jobject> j_object_;
JavaMethodPointer java_method_pointer_;
};
queue->Post(posted_from,
new JavaAsyncCallback(env, j_object, java_method_pointer));
ScopedJavaGlobalRef<jobject> object(env, j_object);
queue->PostTask([object = std::move(object), java_method_pointer] {
java_method_pointer(AttachCurrentThreadIfNeeded(), object);
});
}
absl::optional<PeerConnectionFactoryInterface::Options>
@ -147,11 +128,11 @@ ScopedJavaLocalRef<jobject> NativeToScopedJavaPeerConnectionFactory(
ScopedJavaLocalRef<jobject> j_pcf = Java_PeerConnectionFactory_Constructor(
env, NativeToJavaPointer(owned_factory));
PostJavaCallback(env, owned_factory->network_thread(), RTC_FROM_HERE, j_pcf,
PostJavaCallback(env, owned_factory->network_thread(), j_pcf,
&Java_PeerConnectionFactory_onNetworkThreadReady);
PostJavaCallback(env, owned_factory->worker_thread(), RTC_FROM_HERE, j_pcf,
PostJavaCallback(env, owned_factory->worker_thread(), j_pcf,
&Java_PeerConnectionFactory_onWorkerThreadReady);
PostJavaCallback(env, owned_factory->signaling_thread(), RTC_FROM_HERE, j_pcf,
PostJavaCallback(env, owned_factory->signaling_thread(), j_pcf,
&Java_PeerConnectionFactory_onSignalingThreadReady);
return j_pcf;