Alex Glaznev c4905fb72a Fix race condition in Android camera JNI code.
AndroidVideoCapturerJni dtor is called on signaling thread
and may destroy JNI global refs while processing late camera
frame arrival in ReturnBuffer_w() in worker thread.

Fix this by waiting for all function invoked on worker thread
to complete in camera JNI dtor.

R=wzh@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/49099004

Cr-Commit-Position: refs/heads/master@{#9037}
2015-04-20 23:54:25 +00:00
..

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.