diff --git a/src/core/libraries/videoout/driver.cpp b/src/core/libraries/videoout/driver.cpp index c604365ef..daa3b370f 100644 --- a/src/core/libraries/videoout/driver.cpp +++ b/src/core/libraries/videoout/driver.cpp @@ -311,7 +311,7 @@ void VideoOutDriver::PresentThread(std::stop_token token) { } } else { Flip(request); - main_port.vblank_cv.notify_all(); + request.port->vo_cv.notify_all(); // wake up threads waiting to submit more flips } FRAME_END; diff --git a/src/core/libraries/videoout/video_out.cpp b/src/core/libraries/videoout/video_out.cpp index 61fc12636..c6a151474 100644 --- a/src/core/libraries/videoout/video_out.cpp +++ b/src/core/libraries/videoout/video_out.cpp @@ -350,22 +350,8 @@ s32 sceVideoOutSubmitEopFlip(s32 handle, u32 buf_id, u32 mode, u32 arg, void** u LOG_WARNING(Lib_VideoOut, "Ignoring flip IRQ during mode change"); return; } - std::tuple pending; - { - std::lock_guard lock(port->pending_mutex); - if (port->pending_flips.empty()) { - LOG_ERROR(Lib_VideoOut, "Received GfxFlip IRQ but no flips pending"); - return; - } - pending = port->pending_flips.front(); - port->pending_flips.pop(); - } - const auto [queued_buf_id, queued_arg] = pending; - ASSERT_MSG(queued_buf_id == buf_id, - "Out-of-order flip IRQ (expected buf_id = {}, got = {})", buf_id, - queued_buf_id); - const bool result = driver->SubmitFlip(port, queued_buf_id, queued_arg, true); - ASSERT_MSG(result, "EOP flip submission failed for buffer {}", queued_buf_id); + const bool result = driver->SubmitFlip(port, buf_id, arg, true); + ASSERT_MSG(result, "EOP flip submission failed for buffer {}", buf_id); }); return ORBIS_OK;