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

Side by Side 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 ScopedLocalRefFrame local_ref_frame(jni()); 249 ScopedLocalRefFrame local_ref_frame(jni());
250 jmethodID m = GetMethodID( 250 jmethodID m = GetMethodID(
251 jni(), *j_observer_class_, "onIceGatheringChange", 251 jni(), *j_observer_class_, "onIceGatheringChange",
252 "(Lorg/webrtc/PeerConnection$IceGatheringState;)V"); 252 "(Lorg/webrtc/PeerConnection$IceGatheringState;)V");
253 jobject new_state_enum = JavaEnumFromIndex( 253 jobject new_state_enum = JavaEnumFromIndex(
254 jni(), "PeerConnection$IceGatheringState", new_state); 254 jni(), "PeerConnection$IceGatheringState", new_state);
255 jni()->CallVoidMethod(*j_observer_global_, m, new_state_enum); 255 jni()->CallVoidMethod(*j_observer_global_, m, new_state_enum);
256 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 256 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
257 } 257 }
258 258
259 void OnAddStream(MediaStreamInterface* stream) override { 259 void OnAddStream(rtc::scoped_refptr<MediaStreamInterface> stream) override {
260 ScopedLocalRefFrame local_ref_frame(jni()); 260 ScopedLocalRefFrame local_ref_frame(jni());
261 // Java MediaStream holds one reference. Corresponding Release() is in 261 // Java MediaStream holds one reference. Corresponding Release() is in
262 // MediaStream_free, triggered by MediaStream.dispose(). 262 // MediaStream_free, triggered by MediaStream.dispose().
263 stream->AddRef(); 263 stream->AddRef();
264 jobject j_stream = 264 jobject j_stream =
265 jni()->NewObject(*j_media_stream_class_, j_media_stream_ctor_, 265 jni()->NewObject(*j_media_stream_class_, j_media_stream_ctor_,
266 reinterpret_cast<jlong>(stream)); 266 reinterpret_cast<jlong>(stream.get()));
267 CHECK_EXCEPTION(jni()) << "error during NewObject"; 267 CHECK_EXCEPTION(jni()) << "error during NewObject";
268 268
269 for (const auto& track : stream->GetAudioTracks()) { 269 for (const auto& track : stream->GetAudioTracks()) {
270 jstring id = JavaStringFromStdString(jni(), track->id()); 270 jstring id = JavaStringFromStdString(jni(), track->id());
271 // Java AudioTrack holds one reference. Corresponding Release() is in 271 // Java AudioTrack holds one reference. Corresponding Release() is in
272 // MediaStreamTrack_free, triggered by AudioTrack.dispose(). 272 // MediaStreamTrack_free, triggered by AudioTrack.dispose().
273 track->AddRef(); 273 track->AddRef();
274 jobject j_track = 274 jobject j_track =
275 jni()->NewObject(*j_audio_track_class_, j_audio_track_ctor_, 275 jni()->NewObject(*j_audio_track_class_, j_audio_track_ctor_,
276 reinterpret_cast<jlong>(track.get()), id); 276 reinterpret_cast<jlong>(track.get()), id);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 RTC_CHECK(added); 312 RTC_CHECK(added);
313 } 313 }
314 remote_streams_[stream] = NewGlobalRef(jni(), j_stream); 314 remote_streams_[stream] = NewGlobalRef(jni(), j_stream);
315 315
316 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onAddStream", 316 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onAddStream",
317 "(Lorg/webrtc/MediaStream;)V"); 317 "(Lorg/webrtc/MediaStream;)V");
318 jni()->CallVoidMethod(*j_observer_global_, m, j_stream); 318 jni()->CallVoidMethod(*j_observer_global_, m, j_stream);
319 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 319 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
320 } 320 }
321 321
322 void OnRemoveStream(MediaStreamInterface* stream) override { 322 void OnRemoveStream(
323 rtc::scoped_refptr<MediaStreamInterface> stream) override {
323 ScopedLocalRefFrame local_ref_frame(jni()); 324 ScopedLocalRefFrame local_ref_frame(jni());
324 NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream); 325 NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream);
325 RTC_CHECK(it != remote_streams_.end()) << "unexpected stream: " << std::hex 326 RTC_CHECK(it != remote_streams_.end()) << "unexpected stream: " << std::hex
326 << stream; 327 << stream;
327 jobject j_stream = it->second; 328 jobject j_stream = it->second;
328 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onRemoveStream", 329 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onRemoveStream",
329 "(Lorg/webrtc/MediaStream;)V"); 330 "(Lorg/webrtc/MediaStream;)V");
330 jni()->CallVoidMethod(*j_observer_global_, m, j_stream); 331 jni()->CallVoidMethod(*j_observer_global_, m, j_stream);
331 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 332 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
333 // Release the refptr reference so that DisposeRemoteStream can assert
334 // it removes the final reference.
335 stream = nullptr;
332 DisposeRemoteStream(it); 336 DisposeRemoteStream(it);
333 } 337 }
334 338
335 void OnDataChannel(DataChannelInterface* channel) override { 339 void OnDataChannel(
340 rtc::scoped_refptr<DataChannelInterface> channel) override {
336 ScopedLocalRefFrame local_ref_frame(jni()); 341 ScopedLocalRefFrame local_ref_frame(jni());
337 jobject j_channel = jni()->NewObject( 342 jobject j_channel = jni()->NewObject(
338 *j_data_channel_class_, j_data_channel_ctor_, (jlong)channel); 343 *j_data_channel_class_, j_data_channel_ctor_, (jlong)channel.get());
339 CHECK_EXCEPTION(jni()) << "error during NewObject"; 344 CHECK_EXCEPTION(jni()) << "error during NewObject";
340 345
341 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onDataChannel", 346 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onDataChannel",
342 "(Lorg/webrtc/DataChannel;)V"); 347 "(Lorg/webrtc/DataChannel;)V");
343 jni()->CallVoidMethod(*j_observer_global_, m, j_channel); 348 jni()->CallVoidMethod(*j_observer_global_, m, j_channel);
344 349
345 // Channel is now owned by Java object, and will be freed from 350 // Channel is now owned by Java object, and will be freed from
346 // DataChannel.dispose(). Important that this be done _after_ the 351 // DataChannel.dispose(). Important that this be done _after_ the
347 // CallVoidMethod above as Java code might call back into native code and be 352 // CallVoidMethod above as Java code might call back into native code and be
348 // surprised to see a refcount of 2. 353 // surprised to see a refcount of 2.
(...skipping 1860 matching lines...) Expand 10 before | Expand all | Expand 10 after
2209 return JavaStringFromStdString( 2214 return JavaStringFromStdString(
2210 jni, 2215 jni,
2211 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); 2216 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
2212 } 2217 }
2213 2218
2214 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2219 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2215 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); 2220 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
2216 } 2221 }
2217 2222
2218 } // namespace webrtc_jni 2223 } // namespace webrtc_jni
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698