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

Unified Diff: webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.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
Index: webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.java
diff --git a/webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.java b/webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.java
index f2677f2fcd9dab49f63df7b560fdbf8c921c1170..2f545e9d647077e360e9dfa646a2af9da8364ca4 100644
--- a/webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.java
+++ b/webrtc/sdk/android/src/java/org/webrtc/I420BufferImpl.java
@@ -24,6 +24,7 @@ class I420BufferImpl implements VideoFrame.I420Buffer {
private final int strideU;
private final int strideV;
private final Runnable releaseCallback;
+ private final Object refCountLock = new Object();
private int refCount;
@@ -116,13 +117,17 @@ class I420BufferImpl implements VideoFrame.I420Buffer {
@Override
public void retain() {
- ++refCount;
+ synchronized (refCountLock) {
+ ++refCount;
+ }
}
@Override
public void release() {
- if (--refCount == 0 && releaseCallback != null) {
- releaseCallback.run();
+ synchronized (refCountLock) {
+ if (--refCount == 0 && releaseCallback != null) {
+ releaseCallback.run();
+ }
}
}
« no previous file with comments | « webrtc/sdk/android/api/org/webrtc/EglRenderer.java ('k') | webrtc/sdk/android/src/java/org/webrtc/NV12Buffer.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698