sceVideoOutClose implementation (partial)
This commit is contained in:
parent
675193fec3
commit
f916fd48b0
|
@ -1,6 +1,7 @@
|
|||
#include "video_out_ctx.h"
|
||||
|
||||
#include <Core/PS4/HLE/LibKernel.h>
|
||||
#include <debug.h>
|
||||
|
||||
namespace HLE::Graphics::Objects {
|
||||
|
||||
|
@ -28,6 +29,30 @@ int VideoOutCtx::Open() {
|
|||
|
||||
return handle;
|
||||
}
|
||||
void VideoOutCtx::Close(s32 handle) {
|
||||
Lib::LockMutexGuard lock(m_mutex);
|
||||
|
||||
m_video_out_ctx.isOpened = false;
|
||||
|
||||
if (m_video_out_ctx.m_flip_evtEq.size() > 0)
|
||||
{
|
||||
BREAKPOINT(); //we need to clear all events if they have been created
|
||||
}
|
||||
|
||||
m_video_out_ctx.m_flip_rate = 0;
|
||||
|
||||
// clear buffers
|
||||
for (auto& buffer : m_video_out_ctx.buffers) {
|
||||
buffer.buffer = nullptr;
|
||||
buffer.buffer_render = nullptr;
|
||||
buffer.buffer_size = 0;
|
||||
buffer.set_id = 0;
|
||||
}
|
||||
|
||||
m_video_out_ctx.buffers_sets.clear();
|
||||
|
||||
m_video_out_ctx.buffers_registration_index = 0;
|
||||
}
|
||||
|
||||
VideoConfigInternal* VideoOutCtx::getCtx(int handle) {
|
||||
if (handle != 1) return nullptr;
|
||||
|
|
|
@ -58,6 +58,7 @@ class VideoOutCtx {
|
|||
virtual ~VideoOutCtx() {}
|
||||
void Init(u32 width, u32 height);
|
||||
int Open();
|
||||
void Close(s32 handle);
|
||||
VideoConfigInternal* getCtx(int handle);
|
||||
FlipQueue& getFlipQueue() { return m_flip_queue; }
|
||||
HLE::Libs::Graphics::GraphicCtx* getGraphicCtx() {
|
||||
|
|
|
@ -299,6 +299,11 @@ s32 PS4_SYSV_ABI sceVideoOutOpen(SceUserServiceUserId userId, s32 busType, s32 i
|
|||
|
||||
return handle;
|
||||
}
|
||||
s32 PS4_SYSV_ABI sceVideoOutClose(s32 handle) {
|
||||
auto* videoOut = singleton<HLE::Graphics::Objects::VideoOutCtx>::instance();
|
||||
videoOut->Close(handle);
|
||||
return SCE_OK;
|
||||
}
|
||||
s32 PS4_SYSV_ABI sceVideoOutUnregisterBuffers(s32 handle, s32 attributeIndex) { BREAKPOINT(); }
|
||||
|
||||
void videoOutRegisterLib(SymbolsResolver* sym) {
|
||||
|
@ -312,5 +317,6 @@ void videoOutRegisterLib(SymbolsResolver* sym) {
|
|||
LIB_FUNCTION("Up36PTk687E", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutOpen);
|
||||
LIB_FUNCTION("zgXifHT9ErY", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutIsFlipPending);
|
||||
LIB_FUNCTION("N5KDtkIjjJ4", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutUnregisterBuffers);
|
||||
LIB_FUNCTION("uquVH4-Du78", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutClose);
|
||||
}
|
||||
} // namespace HLE::Libs::Graphics::VideoOut
|
|
@ -110,5 +110,5 @@ s32 PS4_SYSV_ABI sceVideoOutSubmitFlip(s32 handle, s32 bufferIndex, s32 flipMode
|
|||
s32 PS4_SYSV_ABI sceVideoOutGetFlipStatus(s32 handle, SceVideoOutFlipStatus* status);
|
||||
s32 PS4_SYSV_ABI sceVideoOutGetResolutionStatus(s32 handle, SceVideoOutResolutionStatus* status);
|
||||
s32 PS4_SYSV_ABI sceVideoOutOpen(SceUserServiceUserId userId, s32 busType, s32 index, const void* param);
|
||||
|
||||
s32 PS4_SYSV_ABI sceVideoOutClose(s32 handle);
|
||||
} // namespace HLE::Libs::Graphics::VideoOut
|
Loading…
Reference in New Issue