diff options
author | glaznev@webrtc.org <glaznev@webrtc.org> | 2014-09-17 03:26:59 +0000 |
---|---|---|
committer | glaznev@webrtc.org <glaznev@webrtc.org> | 2014-09-17 03:26:59 +0000 |
commit | cacae6120f0d5968d8bf4fe8d863b03b38d2f2b3 (patch) | |
tree | c7b319dfb8d1552e6f38862f64ee99415b40e0a7 | |
parent | 8d8b4c781ea902ee1dfdd40cf52c54e5a3d887d0 (diff) | |
download | talk-cacae6120f0d5968d8bf4fe8d863b03b38d2f2b3.tar.gz |
Java VideoRenderer class may be backed by two different native
classes depending on type of rendering.
Fix crash in AppRtcDemo by calling correct destructor on exit.
BUG=
R=braveyao@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/23699004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/talk@7202 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | app/webrtc/java/jni/peerconnection_jni.cc | 6 | ||||
-rw-r--r-- | app/webrtc/java/src/org/webrtc/VideoRenderer.java | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/app/webrtc/java/jni/peerconnection_jni.cc b/app/webrtc/java/jni/peerconnection_jni.cc index 83a80a0..de1836d 100644 --- a/app/webrtc/java/jni/peerconnection_jni.cc +++ b/app/webrtc/java/jni/peerconnection_jni.cc @@ -2707,10 +2707,14 @@ JOW(void, VideoCapturer_free)(JNIEnv*, jclass, jlong j_p) { delete reinterpret_cast<cricket::VideoCapturer*>(j_p); } -JOW(void, VideoRenderer_free)(JNIEnv*, jclass, jlong j_p) { +JOW(void, VideoRenderer_freeGuiVideoRenderer)(JNIEnv*, jclass, jlong j_p) { delete reinterpret_cast<VideoRendererWrapper*>(j_p); } +JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { + delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); +} + JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { CHECK_RELEASE(reinterpret_cast<MediaStreamTrackInterface*>(j_p)); } diff --git a/app/webrtc/java/src/org/webrtc/VideoRenderer.java b/app/webrtc/java/src/org/webrtc/VideoRenderer.java index 27ad80e..19df137 100644 --- a/app/webrtc/java/src/org/webrtc/VideoRenderer.java +++ b/app/webrtc/java/src/org/webrtc/VideoRenderer.java @@ -176,11 +176,16 @@ public class VideoRenderer { } public void dispose() { - free(nativeVideoRenderer); + if (callbacks == null) { + freeGuiVideoRenderer(nativeVideoRenderer); + } else { + freeWrappedVideoRenderer(nativeVideoRenderer); + } } private static native long nativeCreateGuiVideoRenderer(int x, int y); private static native long nativeWrapVideoRenderer(Callbacks callbacks); - private static native void free(long nativeVideoRenderer); + private static native void freeGuiVideoRenderer(long nativeVideoRenderer); + private static native void freeWrappedVideoRenderer(long nativeVideoRenderer); } |