| Index: webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java
|
| diff --git a/webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java b/webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java
|
| index 7575929cba7bf70483b6b47c3d01a369e086ece4..af9ac253f17e40497004427706b72044647d7634 100644
|
| --- a/webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java
|
| +++ b/webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java
|
| @@ -19,6 +19,7 @@ public class NV12Buffer implements VideoFrame.Buffer {
|
| private final int sliceHeight;
|
| private final ByteBuffer buffer;
|
| private final Runnable releaseCallback;
|
| + private final Object refCountLock = new Object();
|
|
|
| private int refCount;
|
|
|
| @@ -51,13 +52,17 @@ public class NV12Buffer implements VideoFrame.Buffer {
|
|
|
| @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();
|
| + }
|
| }
|
| }
|
|
|
| @@ -75,4 +80,4 @@ public class NV12Buffer implements VideoFrame.Buffer {
|
| int scaleWidth, int scaleHeight, ByteBuffer src, int srcWidth, int srcHeight, int srcStride,
|
| int srcSliceHeight, ByteBuffer dstY, int dstStrideY, ByteBuffer dstU, int dstStrideU,
|
| ByteBuffer dstV, int dstStrideV);
|
| -}
|
| +}
|
|
|