Chromium Code Reviews| Index: talk/app/webrtc/java/jni/peerconnection_jni.cc |
| diff --git a/talk/app/webrtc/java/jni/peerconnection_jni.cc b/talk/app/webrtc/java/jni/peerconnection_jni.cc |
| index 5fa1617644d048e0933c947a5e8002fa63b6c970..c8660f9d6665dc0887b2f9a316f6c88ac51e0132 100644 |
| --- a/talk/app/webrtc/java/jni/peerconnection_jni.cc |
| +++ b/talk/app/webrtc/java/jni/peerconnection_jni.cc |
| @@ -74,6 +74,7 @@ |
| #include "webrtc/base/checks.h" |
| #include "webrtc/base/logging.h" |
| #include "webrtc/base/logsinks.h" |
| +#include "webrtc/base/networkmonitor.h" |
| #include "webrtc/base/messagequeue.h" |
| #include "webrtc/base/ssladapter.h" |
| #include "webrtc/base/stringutils.h" |
| @@ -86,6 +87,7 @@ |
| #include "talk/app/webrtc/java/jni/androidmediadecoder_jni.h" |
| #include "talk/app/webrtc/java/jni/androidmediaencoder_jni.h" |
| #include "talk/app/webrtc/java/jni/androidvideocapturer_jni.h" |
| +#include "talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h" |
| #include "webrtc/modules/video_render/video_render_internal.h" |
| #include "webrtc/system_wrappers/interface/logcat_trace_context.h" |
| using webrtc::LogcatTraceContext; |
| @@ -1019,6 +1021,7 @@ JOW(jboolean, PeerConnectionFactory_initializeAndroidGlobals)( |
| jboolean video_hw_acceleration) { |
| bool failure = false; |
| video_hw_acceleration_enabled = video_hw_acceleration; |
| + AndroidNetworkMonitor::SetAndroidContext(jni, context); |
| if (!factory_static_initialized) { |
| if (initialize_video) { |
| failure |= webrtc::SetRenderAndroidVM(GetJVM()); |
| @@ -1059,14 +1062,22 @@ class OwnedFactoryAndThreads { |
| Thread* signaling_thread, |
| WebRtcVideoEncoderFactory* encoder_factory, |
| WebRtcVideoDecoderFactory* decoder_factory, |
| + rtc::NetworkMonitorFactory* network_monitor_factory, |
| PeerConnectionFactoryInterface* factory) |
| : worker_thread_(worker_thread), |
| signaling_thread_(signaling_thread), |
| encoder_factory_(encoder_factory), |
| decoder_factory_(decoder_factory), |
| + network_monitor_factory_(network_monitor_factory), |
| factory_(factory) {} |
| - ~OwnedFactoryAndThreads() { CHECK_RELEASE(factory_); } |
| + ~OwnedFactoryAndThreads() { |
| + CHECK_RELEASE(factory_); |
| + // Release the network monitor factory instance if it was created. |
| + if (network_monitor_factory_ != nullptr) { |
| + rtc::NetworkMonitorFactory::SetFactory(nullptr); |
| + } |
|
pthatcher1
2015/10/15 08:11:43
Shouldn't this be more like
if (network_monitor_f
honghaiz3
2015/10/15 19:02:41
Done.
|
| + } |
| PeerConnectionFactoryInterface* factory() { return factory_; } |
| WebRtcVideoEncoderFactory* encoder_factory() { return encoder_factory_; } |
| @@ -1077,6 +1088,7 @@ class OwnedFactoryAndThreads { |
| const scoped_ptr<Thread> signaling_thread_; |
| WebRtcVideoEncoderFactory* encoder_factory_; |
| WebRtcVideoDecoderFactory* decoder_factory_; |
| + const rtc::NetworkMonitorFactory* network_monitor_factory_; |
| PeerConnectionFactoryInterface* factory_; // Const after ctor except dtor. |
| }; |
| @@ -1097,11 +1109,14 @@ JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)( |
| << "Failed to start threads"; |
| WebRtcVideoEncoderFactory* encoder_factory = nullptr; |
| WebRtcVideoDecoderFactory* decoder_factory = nullptr; |
| + rtc::NetworkMonitorFactory* network_monitor_factory = nullptr; |
| + |
| #if defined(ANDROID) && !defined(WEBRTC_CHROMIUM_BUILD) |
| if (video_hw_acceleration_enabled) { |
| encoder_factory = new MediaCodecVideoEncoderFactory(); |
| decoder_factory = new MediaCodecVideoDecoderFactory(); |
| } |
| + network_monitor_factory = AndroidNetworkMonitorFactory::CreateFactory(); |
|
pthatcher1
2015/10/15 08:11:43
I think this would be more clear as:
network_moni
honghaiz3
2015/10/15 19:02:41
Done.
|
| #endif |
| rtc::scoped_refptr<PeerConnectionFactoryInterface> factory( |
| webrtc::CreatePeerConnectionFactory(worker_thread, |
| @@ -1112,9 +1127,8 @@ JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)( |
| RTC_CHECK(factory) << "Failed to create the peer connection factory; " |
| << "WebRTC/libjingle init likely failed on this device"; |
| OwnedFactoryAndThreads* owned_factory = new OwnedFactoryAndThreads( |
| - worker_thread, signaling_thread, |
| - encoder_factory, decoder_factory, |
| - factory.release()); |
| + worker_thread, signaling_thread, encoder_factory, decoder_factory, |
| + network_monitor_factory, factory.release()); |
| return jlongFromPointer(owned_factory); |
| } |