Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(788)

Unified Diff: webrtc/sdk/android/src/java/org/webrtc/TextureBufferImpl.java

Issue 3003533002: Android: Fix synchronization problems in VideoFrame release. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
+ }
}
}
« no previous file with comments | « webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698