aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-10-02 19:13:29 -0300
committerGitHub <noreply@github.com>2023-10-02 22:13:29 +0000
commit8b2625b0be3020740a90f167e46f8f665102fef5 (patch)
tree5f5d1addf8e00bc2957c3fd61e4a116565549217
parent651e24fed9603084d45ee036a0f4558abc204482 (diff)
Decrement nvmap reference count on surface flinger prealloc (#5753)1.1.1038
-rw-r--r--src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs6
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;