28 lines
1,004 B
C#
28 lines
1,004 B
C#
|
using Ryujinx.Graphics.GAL.Multithreading.Model;
|
|||
|
using Ryujinx.Graphics.GAL.Multithreading.Resources;
|
|||
|
using System;
|
|||
|
|
|||
|
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Window
|
|||
|
{
|
|||
|
struct WindowPresentCommand : IGALCommand
|
|||
|
{
|
|||
|
public CommandType CommandType => CommandType.WindowPresent;
|
|||
|
private TableRef<ThreadedTexture> _texture;
|
|||
|
private ImageCrop _crop;
|
|||
|
private TableRef<Action> _swapBuffersCallback;
|
|||
|
|
|||
|
public void Set(TableRef<ThreadedTexture> texture, ImageCrop crop, TableRef<Action> swapBuffersCallback)
|
|||
|
{
|
|||
|
_texture = texture;
|
|||
|
_crop = crop;
|
|||
|
_swapBuffersCallback = swapBuffersCallback;
|
|||
|
}
|
|||
|
|
|||
|
public static void Run(ref WindowPresentCommand command, ThreadedRenderer threaded, IRenderer renderer)
|
|||
|
{
|
|||
|
threaded.SignalFrame();
|
|||
|
renderer.Window.Present(command._texture.Get(threaded)?.Base, command._crop, command._swapBuffersCallback.Get(threaded));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|