summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglaznev@webrtc.org <glaznev@webrtc.org>2014-09-17 03:26:59 +0000
committerglaznev@webrtc.org <glaznev@webrtc.org>2014-09-17 03:26:59 +0000
commitcacae6120f0d5968d8bf4fe8d863b03b38d2f2b3 (patch)
treec7b319dfb8d1552e6f38862f64ee99415b40e0a7
parent8d8b4c781ea902ee1dfdd40cf52c54e5a3d887d0 (diff)
downloadtalk-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.cc6
-rw-r--r--app/webrtc/java/src/org/webrtc/VideoRenderer.java9
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);
}