forked from Mirror/Ryujinx
surfaceflinger: Fix fence callback issue (#1839)
This PR fixes a regression introduced in #1741. The actual implementation do the assumption of fences always exist and then registering the callback. Homebrews may not use fences, so the code crashes when it try to register the callback.
This commit is contained in:
parent
3e7383b3fd
commit
4f01c13f50
1 changed files with 11 additions and 3 deletions
|
@ -345,14 +345,22 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
TextureCallbackInformation textureCallbackInformation = new TextureCallbackInformation
|
TextureCallbackInformation textureCallbackInformation = new TextureCallbackInformation
|
||||||
{
|
{
|
||||||
Layer = layer,
|
Layer = layer,
|
||||||
Item = item,
|
Item = item
|
||||||
};
|
};
|
||||||
|
|
||||||
item.Fence.RegisterCallback(_device.Gpu, () =>
|
if (item.Fence.FenceCount == 0)
|
||||||
{
|
{
|
||||||
_device.Gpu.Window.SignalFrameReady();
|
_device.Gpu.Window.SignalFrameReady();
|
||||||
_device.Gpu.GPFifo.Interrupt();
|
_device.Gpu.GPFifo.Interrupt();
|
||||||
});
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.Fence.RegisterCallback(_device.Gpu, () =>
|
||||||
|
{
|
||||||
|
_device.Gpu.Window.SignalFrameReady();
|
||||||
|
_device.Gpu.GPFifo.Interrupt();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_device.Gpu.Window.EnqueueFrameThreadSafe(
|
_device.Gpu.Window.EnqueueFrameThreadSafe(
|
||||||
frameBufferAddress,
|
frameBufferAddress,
|
||||||
|
|
Loading…
Reference in a new issue