backends/drm: fail presentation if there's no buffer for it yet
BUG: 474483
This commit is contained in:
parent
c7ddf987a1
commit
87cee87aff
1 changed files with 6 additions and 1 deletions
|
@ -231,6 +231,9 @@ bool DrmPipeline::prepareAtomicPresentation(DrmAtomicCommit *commit)
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto fb = m_primaryLayer->currentBuffer();
|
const auto fb = m_primaryLayer->currentBuffer();
|
||||||
|
if (!fb) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
m_pending.crtc->primaryPlane()->set(commit, QPoint(0, 0), fb->buffer()->size(), centerBuffer(fb->buffer()->size(), m_pending.mode->size()));
|
m_pending.crtc->primaryPlane()->set(commit, QPoint(0, 0), fb->buffer()->size(), centerBuffer(fb->buffer()->size(), m_pending.mode->size()));
|
||||||
commit->addBuffer(m_pending.crtc->primaryPlane(), fb);
|
commit->addBuffer(m_pending.crtc->primaryPlane(), fb);
|
||||||
return true;
|
return true;
|
||||||
|
@ -374,7 +377,9 @@ bool DrmPipeline::updateCursor()
|
||||||
}
|
}
|
||||||
// test the full state, to take pending commits into account
|
// test the full state, to take pending commits into account
|
||||||
auto fullState = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
auto fullState = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
||||||
prepareAtomicPresentation(fullState.get());
|
if (!prepareAtomicPresentation(fullState.get())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
prepareAtomicCursor(fullState.get());
|
prepareAtomicCursor(fullState.get());
|
||||||
if (!fullState->test()) {
|
if (!fullState->test()) {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue