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:
parent
24bceb86c2
commit
89138e5b40
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user