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:

committed by
WebRTC LUCI CQ

parent
399a2b5ef6
commit
2acdda84ca
@ -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;
|
||||
|
Reference in New Issue
Block a user