| Index: webrtc/api/java/jni/peerconnection_jni.cc
|
| diff --git a/webrtc/api/java/jni/peerconnection_jni.cc b/webrtc/api/java/jni/peerconnection_jni.cc
|
| index ac328efc2b13d2e15c6a22878ba62cea11aebcc9..f1dd987dca4c9b833d9603c2588249855b1f611f 100644
|
| --- a/webrtc/api/java/jni/peerconnection_jni.cc
|
| +++ b/webrtc/api/java/jni/peerconnection_jni.cc
|
| @@ -256,14 +256,14 @@ class PCOJava : public PeerConnectionObserver {
|
| CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
|
| }
|
|
|
| - void OnAddStream(MediaStreamInterface* stream) override {
|
| + void OnAddStream(rtc::scoped_refptr<MediaStreamInterface> stream) override {
|
| ScopedLocalRefFrame local_ref_frame(jni());
|
| // Java MediaStream holds one reference. Corresponding Release() is in
|
| // MediaStream_free, triggered by MediaStream.dispose().
|
| stream->AddRef();
|
| jobject j_stream =
|
| jni()->NewObject(*j_media_stream_class_, j_media_stream_ctor_,
|
| - reinterpret_cast<jlong>(stream));
|
| + reinterpret_cast<jlong>(stream.get()));
|
| CHECK_EXCEPTION(jni()) << "error during NewObject";
|
|
|
| for (const auto& track : stream->GetAudioTracks()) {
|
| @@ -319,7 +319,8 @@ class PCOJava : public PeerConnectionObserver {
|
| CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
|
| }
|
|
|
| - void OnRemoveStream(MediaStreamInterface* stream) override {
|
| + void OnRemoveStream(
|
| + rtc::scoped_refptr<MediaStreamInterface> stream) override {
|
| ScopedLocalRefFrame local_ref_frame(jni());
|
| NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream);
|
| RTC_CHECK(it != remote_streams_.end()) << "unexpected stream: " << std::hex
|
| @@ -329,13 +330,17 @@ class PCOJava : public PeerConnectionObserver {
|
| "(Lorg/webrtc/MediaStream;)V");
|
| jni()->CallVoidMethod(*j_observer_global_, m, j_stream);
|
| CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
|
| + // Release the refptr reference so that DisposeRemoteStream can assert
|
| + // it removes the final reference.
|
| + stream = nullptr;
|
| DisposeRemoteStream(it);
|
| }
|
|
|
| - void OnDataChannel(DataChannelInterface* channel) override {
|
| + void OnDataChannel(
|
| + rtc::scoped_refptr<DataChannelInterface> channel) override {
|
| ScopedLocalRefFrame local_ref_frame(jni());
|
| jobject j_channel = jni()->NewObject(
|
| - *j_data_channel_class_, j_data_channel_ctor_, (jlong)channel);
|
| + *j_data_channel_class_, j_data_channel_ctor_, (jlong)channel.get());
|
| CHECK_EXCEPTION(jni()) << "error during NewObject";
|
|
|
| jmethodID m = GetMethodID(jni(), *j_observer_class_, "onDataChannel",
|
|
|