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

Unified Diff: webrtc/api/java/jni/peerconnection_jni.cc

Issue 1972793003: Use scoped_refptr for On(Add|Remove)Stream and OnDataChannel. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Adding "deprecated" comments. 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
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",

Powered by Google App Engine
This is Rietveld 408576698