diff options
author | gdkchan <gab.dark.100@gmail.com> | 2023-10-02 19:13:29 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-02 22:13:29 +0000 |
commit | 8b2625b0be3020740a90f167e46f8f665102fef5 (patch) | |
tree | 5f5d1addf8e00bc2957c3fd61e4a116565549217 | |
parent | 651e24fed9603084d45ee036a0f4558abc204482 (diff) |
Decrement nvmap reference count on surface flinger prealloc (#5753)1.1.1038
-rw-r--r-- | src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs index 887d1861..55bfac84 100644 --- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs +++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs @@ -669,6 +669,12 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger lock (Core.Lock) { + // If we are replacing a buffer that has already been queued, make sure we release the references. + if (Core.Slots[slot].BufferState == BufferState.Queued) + { + Core.Slots[slot].GraphicBuffer.Object.DecrementNvMapHandleRefCount(Core.Owner); + } + Core.Slots[slot].BufferState = BufferState.Free; Core.Slots[slot].Fence = AndroidFence.NoFence; Core.Slots[slot].RequestBufferCalled = false; |