backends/drm: wait for pending pageflips before turning outputs off
This commit is contained in:
parent
db2944076a
commit
2fff5891a5
2 changed files with 4 additions and 1 deletions
|
@ -112,6 +112,7 @@ public:
|
|||
|
||||
FileDescriptor createNonMasterFd() const;
|
||||
std::unique_ptr<DrmLease> leaseOutputs(const QVector<DrmOutput *> &outputs);
|
||||
void waitIdle();
|
||||
|
||||
Q_SIGNALS:
|
||||
void activeChanged(bool active);
|
||||
|
@ -123,7 +124,6 @@ private:
|
|||
DrmOutput *findOutput(quint32 connector);
|
||||
void removeOutput(DrmOutput *output);
|
||||
void initDrmResources();
|
||||
void waitIdle();
|
||||
|
||||
DrmPipeline::Error checkCrtcAssignment(QVector<DrmConnector *> connectors, const QVector<DrmCrtc *> &crtcs);
|
||||
DrmPipeline::Error testPipelines();
|
||||
|
|
|
@ -272,6 +272,9 @@ bool DrmOutput::setDrmDpmsMode(DpmsMode mode)
|
|||
updateDpmsMode(mode);
|
||||
return true;
|
||||
}
|
||||
if (!active) {
|
||||
gpu()->waitIdle();
|
||||
}
|
||||
m_pipeline->setActive(active);
|
||||
if (DrmPipeline::commitPipelines({m_pipeline}, active ? DrmPipeline::CommitMode::TestAllowModeset : DrmPipeline::CommitMode::CommitModeset) == DrmPipeline::Error::None) {
|
||||
m_pipeline->applyPendingChanges();
|
||||
|
|
Loading…
Reference in a new issue