1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

[dxvk] Fixed lockup issue in thread destructors

This commit is contained in:
Philip Rebohle 2017-12-25 16:05:11 +01:00
parent 24bceb86c2
commit 89138e5b40
2 changed files with 12 additions and 4 deletions

View File

@ -33,14 +33,17 @@ namespace dxvk {
DxvkCsThread::~DxvkCsThread() { DxvkCsThread::~DxvkCsThread() {
m_stopped.store(true); { std::unique_lock<std::mutex> lock(m_mutex);
m_stopped.store(true);
}
m_condOnAdd.notify_one(); m_condOnAdd.notify_one();
m_thread.join(); m_thread.join();
} }
void DxvkCsThread::dispatchChunk(Rc<DxvkCsChunk>&& chunk) { void DxvkCsThread::dispatchChunk(Rc<DxvkCsChunk>&& chunk) {
{ std::lock_guard<std::mutex> lock(m_mutex); { std::unique_lock<std::mutex> lock(m_mutex);
m_chunks.push(std::move(m_curChunk)); m_chunks.push(std::move(m_curChunk));
} }

View File

@ -1,17 +1,22 @@
#include "dxvk_device.h" #include "dxvk_device.h"
#include "dxvk_queue.h" #include "dxvk_queue.h"
using namespace std::chrono_literals;
namespace dxvk { namespace dxvk {
DxvkSubmissionQueue::DxvkSubmissionQueue(DxvkDevice* device) DxvkSubmissionQueue::DxvkSubmissionQueue(DxvkDevice* device)
: m_device(device), : m_device(device),
m_thread([this] () { this->threadFunc(); }) { m_thread([this] () { threadFunc(); }) {
} }
DxvkSubmissionQueue::~DxvkSubmissionQueue() { DxvkSubmissionQueue::~DxvkSubmissionQueue() {
m_stopped.store(true); { std::unique_lock<std::mutex> lock(m_mutex);
m_stopped.store(true);
}
m_condOnAdd.notify_one(); m_condOnAdd.notify_one();
m_thread.join(); m_thread.join();
} }