Allow Surface Flinger frame enqueue after process has exited (#3733)

This commit is contained in:
gdkchan 2022-10-02 18:50:03 -03:00 committed by GitHub
parent 358a781639
commit 81f848e54f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 13 deletions

View file

@ -453,7 +453,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
Item = item
};
_device.Gpu.Window.EnqueueFrameThreadSafe(
if (_device.Gpu.Window.EnqueueFrameThreadSafe(
layer.Owner,
frameBufferAddress,
frameBufferWidth,
@ -466,20 +466,25 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
crop,
AcquireBuffer,
ReleaseBuffer,
textureCallbackInformation);
if (item.Fence.FenceCount == 0)
textureCallbackInformation))
{
_device.Gpu.Window.SignalFrameReady();
_device.Gpu.GPFifo.Interrupt();
}
else
{
item.Fence.RegisterCallback(_device.Gpu, (x) =>
if (item.Fence.FenceCount == 0)
{
_device.Gpu.Window.SignalFrameReady();
_device.Gpu.GPFifo.Interrupt();
});
}
else
{
item.Fence.RegisterCallback(_device.Gpu, (x) =>
{
_device.Gpu.Window.SignalFrameReady();
_device.Gpu.GPFifo.Interrupt();
});
}
}
else
{
ReleaseBuffer(textureCallbackInformation);
}
}