backends/drm: check if m_commits is empty after waiting for commitPending

The main thread might've cleared the list, so it could crash

Fixes https://crash-reports.kde.org/share/issue/1e34fff2ef0d48f29fb64748caef884a/
wilder/Plasma/6.3
Xaver Hugl 1 year ago
parent c5185611a5
commit 7f4e1ca15b
  1. 6
      src/backends/drm/drm_commit_thread.cpp

@ -85,6 +85,9 @@ DrmCommitThread::DrmCommitThread(DrmGpu *gpu, const QString &name)
bool timeout = true;
while (std::chrono::steady_clock::now() < cursorTarget && timeout && m_commits.front()->isCursorOnly()) {
timeout = m_commitPending.wait_for(lock, 50us) == std::cv_status::timeout;
if (m_commits.empty()) {
break;
}
optimizeCommits(cursorTarget);
}
if (!timeout) {
@ -92,6 +95,9 @@ DrmCommitThread::DrmCommitThread(DrmGpu *gpu, const QString &name)
continue;
}
}
if (m_commits.empty()) {
continue;
}
}
submit();
}

Loading…
Cancel
Save