Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a164496b authored by nicolasroard's avatar nicolasroard
Browse files

Fix triple buffer update bug

bug:11140550

Change-Id: I530bf8b071c7336eb7a20293d6c9c2f5360df47e
parent 7943a83c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ public class SharedPreset {
    private volatile ImagePreset mProducerPreset = null;
    private volatile ImagePreset mConsumerPreset = null;
    private volatile ImagePreset mIntermediatePreset = null;
    private volatile boolean mHasNewContent = false;

    public synchronized void enqueuePreset(ImagePreset preset) {
        if (mProducerPreset == null || (!mProducerPreset.same(preset))) {
@@ -31,12 +32,17 @@ public class SharedPreset {
        ImagePreset temp = mIntermediatePreset;
        mIntermediatePreset = mProducerPreset;
        mProducerPreset = temp;
        mHasNewContent = true;
    }

    public synchronized ImagePreset dequeuePreset() {
        if (!mHasNewContent) {
            return mConsumerPreset;
        }
        ImagePreset temp = mConsumerPreset;
        mConsumerPreset = mIntermediatePreset;
        mIntermediatePreset = temp;
        mHasNewContent = false;
        return mConsumerPreset;
    }
}