
Android's JVM requires threads to detach before they exit, but ONLY if they needed to AttachCurrentThread. Conversly, threads that were attached by the JVM (e.g. the result of making a native call from Java) must NOT be detached by the application. This is bug 2441. The fix for the above is to only pthread_setspecific() for threads that Attach(), not for already-attached threads. To ensure that we only detach Attached threads, added a GetEnv() call to ThreadDestructor(), which revealed that Oracle's JVM can overly-eagerly clear TLS accounting data, effectively detaching threads without their consent at shutdown. Work around this with a specific check. To guard against (some) regression, added a variant of PeerConnectionTest that runs on a non-main thread. This revealed a bug in LinuxDeviceManager which implicitly assumes its talk_base::Thread has already been initialized. Fixed that here too. BUG=2441 R=henrike@webrtc.org Review URL: https://webrtc-codereview.appspot.com/8759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5567 4adac7df-926f-26a2-2b94-8c16560cd09d
This directory holds a Java implementation of the webrtc::PeerConnection API, as well as the JNI glue C++ code that lets the Java implementation reuse the C++ implementation of the same API. To build the Java API and related tests, build with OS=linux or OS=android and include build_with_libjingle=1 build_with_chromium=0 in $GYP_DEFINES. To use the Java API, start by looking at the public interface of org.webrtc.PeerConnection{,Factory} and the org.webrtc.PeerConnectionTest. To understand the implementation of the API, see the native code in jni/. An example command-line to build & run the unittest: cd path/to/trunk GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 java_home=path/to/JDK" gclient runhooks && \ ninja -C out/Debug libjingle_peerconnection_java_unittest && \ ./out/Debug/libjingle_peerconnection_java_unittest (where path/to/JDK should contain include/jni.h) During development it can be helpful to run the JVM with the -Xcheck:jni flag.