mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-16 04:09:39 +00:00
VideoCommon/AsyncRequests: Remove now unnecessary SetEnable function. Requests are now always enabled. Call SetPassthrough on initialization to not be racy.
This commit is contained in:
parent
6416b0a6ec
commit
700abd68e3
@ -457,6 +457,8 @@ static void FifoPlayerThread(Core::System& system, const std::optional<std::stri
|
|||||||
const auto init_video = [&] {
|
const auto init_video = [&] {
|
||||||
DeclareAsGPUThread();
|
DeclareAsGPUThread();
|
||||||
|
|
||||||
|
AsyncRequests::GetInstance()->SetPassthrough(!system.IsDualCoreMode());
|
||||||
|
|
||||||
// Must happen on the proper thread for some video backends, e.g. OpenGL.
|
// Must happen on the proper thread for some video backends, e.g. OpenGL.
|
||||||
return g_video_backend->Initialize(wsi);
|
return g_video_backend->Initialize(wsi);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -42,9 +42,6 @@ void AsyncRequests::QueueEvent(Event&& event)
|
|||||||
{
|
{
|
||||||
m_empty.Clear();
|
m_empty.Clear();
|
||||||
|
|
||||||
if (!m_enable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_queue.push(std::move(event));
|
m_queue.push(std::move(event));
|
||||||
|
|
||||||
auto& system = Core::System::GetInstance();
|
auto& system = Core::System::GetInstance();
|
||||||
@ -57,20 +54,6 @@ void AsyncRequests::WaitForEmptyQueue()
|
|||||||
m_cond.wait(lock, [this] { return m_queue.empty(); });
|
m_cond.wait(lock, [this] { return m_queue.empty(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncRequests::SetEnable(bool enable)
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(m_mutex);
|
|
||||||
m_enable = enable;
|
|
||||||
|
|
||||||
if (!enable)
|
|
||||||
{
|
|
||||||
// flush the queue on disabling
|
|
||||||
while (!m_queue.empty())
|
|
||||||
m_queue.pop();
|
|
||||||
m_cond.notify_one();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AsyncRequests::SetPassthrough(bool enable)
|
void AsyncRequests::SetPassthrough(bool enable)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_mutex);
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
|
|||||||
@ -26,7 +26,6 @@ public:
|
|||||||
PullEventsInternal();
|
PullEventsInternal();
|
||||||
}
|
}
|
||||||
void WaitForEmptyQueue();
|
void WaitForEmptyQueue();
|
||||||
void SetEnable(bool enable);
|
|
||||||
void SetPassthrough(bool enable);
|
void SetPassthrough(bool enable);
|
||||||
|
|
||||||
template <typename F>
|
template <typename F>
|
||||||
@ -74,6 +73,5 @@ private:
|
|||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
std::condition_variable m_cond;
|
std::condition_variable m_cond;
|
||||||
|
|
||||||
bool m_enable = false;
|
|
||||||
bool m_passthrough = true;
|
bool m_passthrough = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -287,9 +287,6 @@ void FifoManager::ResetVideoBuffer()
|
|||||||
// Purpose: Keep the Core HW updated about the CPU-GPU distance
|
// Purpose: Keep the Core HW updated about the CPU-GPU distance
|
||||||
void FifoManager::RunGpuLoop()
|
void FifoManager::RunGpuLoop()
|
||||||
{
|
{
|
||||||
AsyncRequests::GetInstance()->SetEnable(true);
|
|
||||||
AsyncRequests::GetInstance()->SetPassthrough(false);
|
|
||||||
|
|
||||||
m_gpu_mainloop.Run(
|
m_gpu_mainloop.Run(
|
||||||
[this] {
|
[this] {
|
||||||
// Run events from the CPU thread.
|
// Run events from the CPU thread.
|
||||||
@ -391,9 +388,6 @@ void FifoManager::RunGpuLoop()
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
100);
|
100);
|
||||||
|
|
||||||
AsyncRequests::GetInstance()->SetEnable(false);
|
|
||||||
AsyncRequests::GetInstance()->SetPassthrough(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FifoManager::FlushGpu()
|
void FifoManager::FlushGpu()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user