| Index: webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
|
| diff --git a/webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java b/webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
|
| index ebcb22ff9c5c75692be5cd171fa112f8aebbf0da..c2b2010ef2b19b2d373a33012864e4e8f67b6d40 100644
|
| --- a/webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
|
| +++ b/webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
|
| @@ -25,6 +25,7 @@ class TextureBufferImpl implements VideoFrame.TextureBuffer {
|
| private final Matrix transformMatrix;
|
| private final SurfaceTextureHelper surfaceTextureHelper;
|
| private final Runnable releaseCallback;
|
| + private final Object refCountLock = new Object();
|
| private int refCount;
|
|
|
| public TextureBufferImpl(int width, int height, Type type, int id, Matrix transformMatrix,
|
| @@ -102,13 +103,17 @@ class TextureBufferImpl implements VideoFrame.TextureBuffer {
|
|
|
| @Override
|
| public void retain() {
|
| - ++refCount;
|
| + synchronized (refCountLock) {
|
| + ++refCount;
|
| + }
|
| }
|
|
|
| @Override
|
| public void release() {
|
| - if (--refCount == 0) {
|
| - releaseCallback.run();
|
| + synchronized (refCountLock) {
|
| + if (--refCount == 0 && releaseCallback != null) {
|
| + releaseCallback.run();
|
| + }
|
| }
|
| }
|
|
|
|
|