diff --git a/src/video_core/control/scheduler.cpp b/src/video_core/control/scheduler.cpp index b9f73328d9..c2267acede 100644 --- a/src/video_core/control/scheduler.cpp +++ b/src/video_core/control/scheduler.cpp @@ -17,14 +17,12 @@ Scheduler::Scheduler(GPU& gpu_) : gpu{gpu_} {} Scheduler::~Scheduler() = default; void Scheduler::Push(s32 channel, CommandList&& entries) { - std::shared_ptr channel_state; - { - std::unique_lock lk(scheduling_guard); - auto it = channels.find(channel); - ASSERT(it != channels.end()); - channel_state = it->second; - gpu.BindChannel(channel_state->bind_id); - } + std::unique_lock lk(scheduling_guard); + auto it = channels.find(channel); + ASSERT(it != channels.end()); + auto& channel_state = it->second; + gpu.BindChannel(channel_state->bind_id); + lk.unlock(); channel_state->dma_pusher->Push(std::move(entries)); channel_state->dma_pusher->DispatchCalls(); }