mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[dxvk] Fixed lockup issue in thread destructors
This commit is contained in:
parent
24bceb86c2
commit
89138e5b40
@ -33,14 +33,17 @@ namespace dxvk {
|
||||
|
||||
|
||||
DxvkCsThread::~DxvkCsThread() {
|
||||
m_stopped.store(true);
|
||||
{ std::unique_lock<std::mutex> lock(m_mutex);
|
||||
m_stopped.store(true);
|
||||
}
|
||||
|
||||
m_condOnAdd.notify_one();
|
||||
m_thread.join();
|
||||
}
|
||||
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,22 @@
|
||||
#include "dxvk_device.h"
|
||||
#include "dxvk_queue.h"
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
DxvkSubmissionQueue::DxvkSubmissionQueue(DxvkDevice* device)
|
||||
: m_device(device),
|
||||
m_thread([this] () { this->threadFunc(); }) {
|
||||
m_thread([this] () { threadFunc(); }) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
DxvkSubmissionQueue::~DxvkSubmissionQueue() {
|
||||
m_stopped.store(true);
|
||||
{ std::unique_lock<std::mutex> lock(m_mutex);
|
||||
m_stopped.store(true);
|
||||
}
|
||||
|
||||
m_condOnAdd.notify_one();
|
||||
m_thread.join();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user