backends/drm: prevent some detachments

This commit is contained in:
Xaver Hugl 2022-01-16 17:24:10 +01:00
parent 0c78da0e3a
commit 090b687126
5 changed files with 11 additions and 11 deletions

View file

@ -194,7 +194,7 @@ int DrmConnector::currentModeIndex() const
return m_modeIndex;
}
QVector<DrmConnectorMode *> DrmConnector::modes()
QVector<DrmConnectorMode *> DrmConnector::modes() const
{
return m_modes;
}

View file

@ -98,7 +98,7 @@ public:
DrmConnectorMode *currentMode() const;
int currentModeIndex() const;
QVector<DrmConnectorMode *> modes();
QVector<DrmConnectorMode *> modes() const;
void setModeIndex(int index);
void findCurrentMode(drmModeModeInfo currentMode);
void updateModes();

View file

@ -116,7 +116,7 @@ void DrmOutput::updateCursor()
return;
}
const auto plane = m_pipeline->pending.crtc->cursorPlane();
if (!m_cursor || (plane && !plane->formats()[m_cursor->drmFormat()].contains(DRM_FORMAT_MOD_LINEAR))) {
if (!m_cursor || (plane && !plane->formats().value(m_cursor->drmFormat()).contains(DRM_FORMAT_MOD_LINEAR))) {
if (plane) {
const auto formatModifiers = plane->formats();
const auto formats = formatModifiers.keys();

View file

@ -191,7 +191,7 @@ bool DrmPipeline::populateAtomicValues(drmModeAtomicReq *req, uint32_t &flags)
if (pending.crtc) {
pending.crtc->setPending(DrmCrtc::PropertyIndex::VrrEnabled, pending.syncMode == RenderLoopPrivate::SyncMode::Adaptive);
pending.crtc->setPending(DrmCrtc::PropertyIndex::Gamma_LUT, pending.gamma ? pending.gamma->blobId() : 0);
auto modeSize = m_connector->modes()[pending.modeIndex]->size();
auto modeSize = m_connector->modes().at(pending.modeIndex)->size();
pending.crtc->primaryPlane()->set(QPoint(0, 0), m_primaryBuffer ? m_primaryBuffer->size() : bufferSize(), QPoint(0, 0), modeSize);
pending.crtc->primaryPlane()->setBuffer(activePending() ? m_primaryBuffer.get() : nullptr);
@ -224,7 +224,7 @@ void DrmPipeline::prepareAtomicModeset()
m_connector->setPending(DrmConnector::PropertyIndex::CrtcId, 0);
return;
}
auto mode = m_connector->modes()[pending.modeIndex];
auto mode = m_connector->modes().at(pending.modeIndex);
m_connector->setPending(DrmConnector::PropertyIndex::CrtcId, activePending() ? pending.crtc->id() : 0);
if (const auto &prop = m_connector->getProp(DrmConnector::PropertyIndex::Broadcast_RGB)) {
@ -400,7 +400,7 @@ void DrmPipeline::applyPendingChanges()
QSize DrmPipeline::bufferSize() const
{
const auto modeSize = m_connector->modes()[pending.modeIndex]->size();
const auto modeSize = m_connector->modes().at(pending.modeIndex)->size();
if (pending.bufferTransformation & (DrmPlane::Transformation::Rotate90 | DrmPlane::Transformation::Rotate270)) {
return modeSize.transposed();
}
@ -409,7 +409,7 @@ QSize DrmPipeline::bufferSize() const
QSize DrmPipeline::sourceSize() const
{
const auto modeSize = m_connector->modes()[pending.modeIndex]->size();
const auto modeSize = m_connector->modes().at(pending.modeIndex)->size();
if (pending.sourceTransformation & (DrmPlane::Transformation::Rotate90 | DrmPlane::Transformation::Rotate270)) {
return modeSize.transposed();
}
@ -418,7 +418,7 @@ QSize DrmPipeline::sourceSize() const
bool DrmPipeline::isCursorVisible() const
{
const QRect mode = QRect(QPoint(), m_connector->modes()[pending.modeIndex]->size());
const QRect mode = QRect(QPoint(), m_connector->modes().at(pending.modeIndex)->size());
return pending.cursorBo && QRect(pending.cursorPos, pending.cursorBo->size()).intersects(mode);
}
@ -468,7 +468,7 @@ bool DrmPipeline::isFormatSupported(uint32_t drmFormat) const
if (pending.crtc->primaryPlane()) {
return pending.crtc->primaryPlane()->formats().contains(drmFormat);
} else {
return legacyFormats.keys().contains(drmFormat);
return legacyFormats.contains(drmFormat);
}
} else {
return false;
@ -478,7 +478,7 @@ bool DrmPipeline::isFormatSupported(uint32_t drmFormat) const
QVector<uint64_t> DrmPipeline::supportedModifiers(uint32_t drmFormat) const
{
if (pending.crtc && pending.crtc->primaryPlane()) {
return pending.crtc->primaryPlane()->formats()[drmFormat];
return pending.crtc->primaryPlane()->formats().value(drmFormat);
} else {
return {};
}

View file

@ -33,7 +33,7 @@ bool DrmPipeline::presentLegacy()
bool DrmPipeline::legacyModeset()
{
auto mode = m_connector->modes()[pending.modeIndex];
auto mode = m_connector->modes().at(pending.modeIndex);
uint32_t connId = m_connector->id();
if (!checkTestBuffer() || drmModeSetCrtc(gpu()->fd(), pending.crtc->id(), m_primaryBuffer->bufferId(), 0, 0, &connId, 1, mode->nativeMode()) != 0) {
qCWarning(KWIN_DRM) << "Modeset failed!" << strerror(errno);