From 3a7563ef640b96af33ec5489c6b11e688c6c5163 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:01:47 +0300 Subject: [PATCH] fixing @georgemoralis code --- src/Core/PS4/HLE/Graphics/Objects/video_out_ctx.h | 2 +- src/Core/PS4/HLE/Graphics/video_out.cpp | 11 ++++------- src/Core/PS4/HLE/Graphics/video_out.h | 5 +---- src/Core/PS4/HLE/Kernel/Objects/event_queue.h | 12 ++++++------ 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Core/PS4/HLE/Graphics/Objects/video_out_ctx.h b/src/Core/PS4/HLE/Graphics/Objects/video_out_ctx.h index 21efccb5..91f1aa91 100644 --- a/src/Core/PS4/HLE/Graphics/Objects/video_out_ctx.h +++ b/src/Core/PS4/HLE/Graphics/Objects/video_out_ctx.h @@ -12,7 +12,7 @@ struct VideoConfigInternal { bool isOpened = false; SceVideoOutFlipStatus m_flip_status; SceVideoOutVblankStatus m_vblank_status; - std::vector flip_evtEq; + std::vector m_flip_evtEq; }; class VideoOutCtx { diff --git a/src/Core/PS4/HLE/Graphics/video_out.cpp b/src/Core/PS4/HLE/Graphics/video_out.cpp index 7089506f..d3dc804c 100644 --- a/src/Core/PS4/HLE/Graphics/video_out.cpp +++ b/src/Core/PS4/HLE/Graphics/video_out.cpp @@ -65,11 +65,10 @@ s32 PS4_SYSV_ABI sceVideoOutAddFlipEvent(LibKernel::EventQueues::SceKernelEqueue auto* ctx = videoOut->getCtx(handle); - if (ctx == nullptr) - { + if (ctx == nullptr) { return SCE_VIDEO_OUT_ERROR_INVALID_HANDLE; } - ctx->m_mutex.LockMutex(); + Lib::LockMutexGuard lock(ctx->m_mutex); if (eq == nullptr) { return SCE_VIDEO_OUT_ERROR_INVALID_EVENT_QUEUE; @@ -86,12 +85,10 @@ s32 PS4_SYSV_ABI sceVideoOutAddFlipEvent(LibKernel::EventQueues::SceKernelEqueue // event.filter.reset_event_func = flip_event_reset_func;//called in sceKernelWaitEqueue // event.filter.trigger_event_func = flip_event_trigger_func;//called in sceKernelTriggerEvent event.filter.data = ctx; - + int result = 0; // sceKernelAddEvent(eq, event); - ctx->flip_evtEq.push_back(eq); - - ctx->m_mutex.UnlockMutex(); + ctx->m_flip_evtEq.push_back(eq); return result; } diff --git a/src/Core/PS4/HLE/Graphics/video_out.h b/src/Core/PS4/HLE/Graphics/video_out.h index 09761177..dfa5e38a 100644 --- a/src/Core/PS4/HLE/Graphics/video_out.h +++ b/src/Core/PS4/HLE/Graphics/video_out.h @@ -35,10 +35,7 @@ constexpr int SCE_VIDEO_OUT_BUFFER_ATTRIBUTE_OPTION_NONE = 0; constexpr int SCE_VIDEO_OUT_BUFFER_ATTRIBUTE_OPTION_VR = 7; constexpr int SCE_VIDEO_OUT_BUFFER_ATTRIBUTE_OPTION_STRICT_COLORIMETRY = 8; -//SceVideoOutEventId -constexpr int SCE_VIDEO_OUT_EVENT_FLIP = 0; -constexpr int SCE_VIDEO_OUT_EVENT_VBLANK = 1; -constexpr int SCE_VIDEO_OUT_EVENT_PRE_VBLANK_START = 2; +enum SceVideoOutEventId : s16 { SCE_VIDEO_OUT_EVENT_FLIP = 0, SCE_VIDEO_OUT_EVENT_VBLANK = 1, SCE_VIDEO_OUT_EVENT_PRE_VBLANK_START = 2 }; enum SceVideoOutTilingMode : s32 { SCE_VIDEO_OUT_TILING_MODE_TILE = 0, SCE_VIDEO_OUT_TILING_MODE_LINEAR = 1 }; diff --git a/src/Core/PS4/HLE/Kernel/Objects/event_queue.h b/src/Core/PS4/HLE/Kernel/Objects/event_queue.h index 389a66a1..f88e8442 100644 --- a/src/Core/PS4/HLE/Kernel/Objects/event_queue.h +++ b/src/Core/PS4/HLE/Kernel/Objects/event_queue.h @@ -33,9 +33,9 @@ struct EqueueEvent; using SceKernelEqueue = Kernel::Objects::EqueueInternal*; -using trigger_func_ptr = void (*)(EqueueEvent* event, void* trigger_data); -using reset_func_ptr = void (*)(EqueueEvent* event); -using delete_func_ptr = void (*)(SceKernelEqueue eq, EqueueEvent* event); +using TriggerFunc = void (*)(EqueueEvent* event, void* trigger_data); +using ResetFunc = void (*)(EqueueEvent* event); +using DeleteFunc = void (*)(SceKernelEqueue eq, EqueueEvent* event); struct Event { u64 ident = 0; /* identifier for this event */ @@ -48,9 +48,9 @@ struct Event { struct Filter { void* data = nullptr; - trigger_func_ptr trigger_event_func = nullptr; - reset_func_ptr reset__event_func = nullptr; - delete_func_ptr delete_event_func = nullptr; + TriggerFunc trigger_event_func = nullptr; + ResetFunc reset__event_func = nullptr; + DeleteFunc delete_event_func = nullptr; }; struct EqueueEvent {