SurfaceViewRenderer currently stores widthSpec/heightSpec internally, and triggers requestLayout() from renderFrameOnRenderThread()->checkConsistentLayout() when it detects a change using widthSpec/heightSpec. This is not reliable, because onMeasure() might be called several times during the layout process negotiation. For example it might look like this: -> onMeasure(at most 1920, at most 1080) <- setMeasuredDimension(1080, 1080) -> onMeasure(exactly 1080, exactly 1080) <- setMeasuredDimension(1080, 1080) Then we store (exactly 1080, exactly 1080) even though we are allowed to be bigger than this, and requestLayout() will never be triggered. This CL moves the requestLayout() trigger to updateFrameDimensionsAndReportEvents() when the frame size changes. Other small changes in this CL are: * Replace with/height variables with Point. * Add logging in updateFrameDimensionsAndReportEvents() even when rendererEvents is null. * Use Math.round() in RendererCommon.getDisplaySize() instead of integer cast. R=hbos@webrtc.org Review URL: https://codereview.webrtc.org/1453413005 . Cr-Commit-Position: refs/heads/master@{#10774}
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.