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;
|
FileDescriptor createNonMasterFd() const;
|
||||||
std::unique_ptr<DrmLease> leaseOutputs(const QVector<DrmOutput *> &outputs);
|
std::unique_ptr<DrmLease> leaseOutputs(const QVector<DrmOutput *> &outputs);
|
||||||
|
void waitIdle();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void activeChanged(bool active);
|
void activeChanged(bool active);
|
||||||
|
@ -123,7 +124,6 @@ private:
|
||||||
DrmOutput *findOutput(quint32 connector);
|
DrmOutput *findOutput(quint32 connector);
|
||||||
void removeOutput(DrmOutput *output);
|
void removeOutput(DrmOutput *output);
|
||||||
void initDrmResources();
|
void initDrmResources();
|
||||||
void waitIdle();
|
|
||||||
|
|
||||||
DrmPipeline::Error checkCrtcAssignment(QVector<DrmConnector *> connectors, const QVector<DrmCrtc *> &crtcs);
|
DrmPipeline::Error checkCrtcAssignment(QVector<DrmConnector *> connectors, const QVector<DrmCrtc *> &crtcs);
|
||||||
DrmPipeline::Error testPipelines();
|
DrmPipeline::Error testPipelines();
|
||||||
|
|
|
@ -272,6 +272,9 @@ bool DrmOutput::setDrmDpmsMode(DpmsMode mode)
|
||||||
updateDpmsMode(mode);
|
updateDpmsMode(mode);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (!active) {
|
||||||
|
gpu()->waitIdle();
|
||||||
|
}
|
||||||
m_pipeline->setActive(active);
|
m_pipeline->setActive(active);
|
||||||
if (DrmPipeline::commitPipelines({m_pipeline}, active ? DrmPipeline::CommitMode::TestAllowModeset : DrmPipeline::CommitMode::CommitModeset) == DrmPipeline::Error::None) {
|
if (DrmPipeline::commitPipelines({m_pipeline}, active ? DrmPipeline::CommitMode::TestAllowModeset : DrmPipeline::CommitMode::CommitModeset) == DrmPipeline::Error::None) {
|
||||||
m_pipeline->applyPendingChanges();
|
m_pipeline->applyPendingChanges();
|
||||||
|
|
Loading…
Reference in a new issue