summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Wick <markus@selfnet.de>2021-04-06 20:30:22 +0200
committerMarkus Wick <markus@selfnet.de>2021-04-07 22:38:52 +0200
commit4aec060f6de410698d5b0a5bffd42d4327b258e4 (patch)
tree224799482cc260b15af31274497d92c308393113
parentMerge pull request #6130 from degasus/better_assert_handling (diff)
downloadyuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar.gz
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar.bz2
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar.lz
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar.xz
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.tar.zst
yuzu-4aec060f6de410698d5b0a5bffd42d4327b258e4.zip
-rw-r--r--src/common/threadsafe_queue.h10
-rw-r--r--src/video_core/gpu_thread.cpp3
2 files changed, 10 insertions, 3 deletions
diff --git a/src/common/threadsafe_queue.h b/src/common/threadsafe_queue.h
index a4647314a..ad04df8ca 100644
--- a/src/common/threadsafe_queue.h
+++ b/src/common/threadsafe_queue.h
@@ -83,11 +83,15 @@ public:
return true;
}
- T PopWait() {
+ void Wait() {
if (Empty()) {
std::unique_lock lock{cv_mutex};
cv.wait(lock, [this]() { return !Empty(); });
}
+ }
+
+ T PopWait() {
+ Wait();
T t;
Pop(t);
return t;
@@ -156,6 +160,10 @@ public:
return spsc_queue.Pop(t);
}
+ void Wait() {
+ spsc_queue.Wait();
+ }
+
T PopWait() {
return spsc_queue.PopWait();
}
diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp
index 99353f15f..cd59a7faf 100644
--- a/src/video_core/gpu_thread.cpp
+++ b/src/video_core/gpu_thread.cpp
@@ -29,8 +29,7 @@ static void RunThread(Core::System& system, VideoCore::RendererBase& renderer,
system.RegisterHostThread();
// Wait for first GPU command before acquiring the window context
- while (state.queue.Empty())
- ;
+ state.queue.Wait();
// If emulation was stopped during disk shader loading, abort before trying to acquire context
if (!state.is_running) {