Browse Source

gpu: Add shut down method to synchronize threads before destruction

nce_cpp
ameerj 4 years ago
parent
commit
664fcdc64b
  1. 2
      src/core/core.cpp
  2. 10
      src/video_core/gpu.cpp
  3. 3
      src/video_core/gpu.h

2
src/core/core.cpp

@ -317,6 +317,8 @@ struct System::Impl {
is_powered_on = false;
exit_lock = false;
gpu_core->NotifyShutdown();
services.reset();
service_manager.reset();
cheat_engine.reset();

10
src/video_core/gpu.cpp

@ -312,6 +312,12 @@ struct GPU::Impl {
cpu_context->MakeCurrent();
}
void NotifyShutdown() {
std::unique_lock lk{sync_mutex};
shutting_down.store(true, std::memory_order::relaxed);
sync_cv.notify_all();
}
/// Obtain the CPU Context
void ObtainContext() {
cpu_context->MakeCurrent();
@ -859,6 +865,10 @@ void GPU::Start() {
impl->Start();
}
void GPU::NotifyShutdown() {
impl->NotifyShutdown();
}
void GPU::ObtainContext() {
impl->ObtainContext();
}

3
src/video_core/gpu.h

@ -232,6 +232,9 @@ public:
/// core timing events.
void Start();
/// Performs any additional necessary steps to shutdown GPU emulation.
void NotifyShutdown();
/// Obtain the CPU Context
void ObtainContext();

Loading…
Cancel
Save