diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index 50583ba133..0f75096fb0 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -1711,8 +1711,7 @@ work_item& GLGSRender::post_flush_request(u32 address, gl::texture_cache::thrash { std::lock_guard lock(queue_guard); - work_queue.emplace_back(); - work_item &result = work_queue.back(); + work_item &result = work_queue.emplace_back(); result.address_to_flush = address; result.section_data = std::move(flush_data); return result; diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index d48e282dc0..373a0d91b0 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -3201,11 +3201,12 @@ namespace rsx const auto memory_end = memory_address + memory_range; u32 sync_address = 0; - for (const auto &writer : m_pending_writes) + for (auto It = m_pending_writes.crbegin(); It != m_pending_writes.crend(); ++It) { - if (writer.sink >= memory_address && writer.sink < memory_end) + if (It->sink >= memory_address && It->sink < memory_end) { - sync_address = writer.sink; + sync_address = It->sink; + break; } }