Skip to content

Commit

Permalink
Fix Emu.Stop() with vulkan device enumeration hack
Browse files Browse the repository at this point in the history
  • Loading branch information
elad335 committed Jul 11, 2019
1 parent 2898309 commit 100025a
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions rpcs3/rpcs3qt/emu_settings.cpp
Expand Up @@ -163,11 +163,11 @@ emu_settings::Render_Creator::Render_Creator()
static std::mutex mtx;
static std::condition_variable cond;
static bool thread_running = true;
static volatile bool device_found = false;
static bool device_found = false;

static QStringList compatible_gpus;

thread_ctrl::spawn("Vulkan device enumeration", [&]
std::thread enum_thread = std::thread([&]
{
thread_ctrl::set_native_priority(-1);

Expand All @@ -189,7 +189,8 @@ emu_settings::Render_Creator::Render_Creator()
}
}
}
std::scoped_lock{mtx}, thread_running = false;

std::lock_guard{mtx}, thread_running = false;
cond.notify_all();
});

Expand All @@ -207,6 +208,7 @@ emu_settings::Render_Creator::Render_Creator()
"Selecting ignore starts the emulator without Vulkan support."),
QMessageBox::Ignore | QMessageBox::Abort, QMessageBox::Abort);

enum_thread.detach();
if (button != QMessageBox::Ignore)
std::exit(1);

Expand All @@ -216,6 +218,7 @@ emu_settings::Render_Creator::Render_Creator()
{
supportsVulkan = device_found;
vulkanAdapters = std::move(compatible_gpus);
enum_thread.join();
}
#endif

Expand Down

0 comments on commit 100025a

Please sign in to comment.