| Index: talk/app/webrtc/java/src/org/webrtc/VideoRenderer.java
|
| diff --git a/talk/app/webrtc/java/src/org/webrtc/VideoRenderer.java b/talk/app/webrtc/java/src/org/webrtc/VideoRenderer.java
|
| index 401640b463bfdfff7f832ebf75ce73100a0b40fb..596d3779a9389e4c11ce1cb288545d09d443e22f 100644
|
| --- a/talk/app/webrtc/java/src/org/webrtc/VideoRenderer.java
|
| +++ b/talk/app/webrtc/java/src/org/webrtc/VideoRenderer.java
|
| @@ -177,9 +177,9 @@ public class VideoRenderer {
|
| }
|
|
|
| // |this| either wraps a native (GUI) renderer or a client-supplied Callbacks
|
| - // (Java) implementation; so exactly one of these will be non-0/null.
|
| - final long nativeVideoRenderer;
|
| - private final Callbacks callbacks;
|
| + // (Java) implementation; this is indicated by |isWrappedVideoRenderer|.
|
| + long nativeVideoRenderer;
|
| + private final boolean isWrappedVideoRenderer;
|
|
|
| public static VideoRenderer createGui(int x, int y) {
|
| long nativeVideoRenderer = nativeCreateGuiVideoRenderer(x, y);
|
| @@ -191,20 +191,25 @@ public class VideoRenderer {
|
|
|
| public VideoRenderer(Callbacks callbacks) {
|
| nativeVideoRenderer = nativeWrapVideoRenderer(callbacks);
|
| - this.callbacks = callbacks;
|
| + isWrappedVideoRenderer = true;
|
| }
|
|
|
| private VideoRenderer(long nativeVideoRenderer) {
|
| this.nativeVideoRenderer = nativeVideoRenderer;
|
| - callbacks = null;
|
| + isWrappedVideoRenderer = false;
|
| }
|
|
|
| public void dispose() {
|
| - if (callbacks == null) {
|
| + if (nativeVideoRenderer == 0) {
|
| + // Already disposed.
|
| + return;
|
| + }
|
| + if (!isWrappedVideoRenderer) {
|
| freeGuiVideoRenderer(nativeVideoRenderer);
|
| } else {
|
| freeWrappedVideoRenderer(nativeVideoRenderer);
|
| }
|
| + nativeVideoRenderer = 0;
|
| }
|
|
|
| private static native long nativeCreateGuiVideoRenderer(int x, int y);
|
|
|