diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index 63f6f58ea7..7c8b7099e3 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -371,15 +371,23 @@ void __DisplayForgetFlip(FlipCallback callback, void *userdata) { } static void DisplayFireVblank() { - std::lock_guard guard(listenersLock); - for (VblankCallback cb : vblankListeners) { + std::vector toCall = []{ + std::lock_guard guard(listenersLock); + return vblankListeners; + }(); + + for (VblankCallback cb : toCall) { cb(); } } static void DisplayFireFlip() { - std::lock_guard guard(listenersLock); - for (auto cb : flipListeners) { + std::vector toCall = [] { + std::lock_guard guard(listenersLock); + return flipListeners; + }(); + + for (FlipListener cb : toCall) { cb.first(cb.second); } }