mirror of
https://github.com/hyprwm/aquamarine.git
synced 2025-12-20 04:40:12 +01:00
feat: only do modeset when the mode is different from the current one
This commit is contained in:
parent
dc45d00900
commit
f22acc57c9
1 changed files with 10 additions and 17 deletions
|
|
@ -100,8 +100,16 @@ void Aquamarine::CDRMAtomicRequest::addConnector(Hyprutils::Memory::CSharedPoint
|
|||
TRACE(backend->log(AQ_LOG_TRACE, std::format("atomic addConnector values: CRTC {}, mode {}", enable ? connector->crtc->id : 0, data.atomic.modeBlob)));
|
||||
|
||||
conn = connector;
|
||||
drmModeModeInfo* currentMode = connector->getCurrentMode();
|
||||
bool modeDiffers = true;
|
||||
if (currentMode) {
|
||||
modeDiffers = memcmp(currentMode, &data.modeInfo, sizeof(drmModeModeInfo)) != 0;
|
||||
free(currentMode);
|
||||
}
|
||||
|
||||
addConnectorModeset(connector, data);
|
||||
if (modeDiffers) {
|
||||
addConnectorModeset(connector, data);
|
||||
}
|
||||
addConnectorCursor(connector, data);
|
||||
|
||||
add(connector->id, connector->props.crtc_id, enable ? connector->crtc->id : 0);
|
||||
|
|
@ -455,22 +463,7 @@ bool Aquamarine::CDRMAtomicImpl::commit(Hyprutils::Memory::CSharedPointer<SDRMCo
|
|||
}
|
||||
|
||||
bool Aquamarine::CDRMAtomicImpl::reset() {
|
||||
CDRMAtomicRequest request(backend);
|
||||
|
||||
for (auto const& crtc : backend->crtcs) {
|
||||
request.add(crtc->id, crtc->props.mode_id, 0);
|
||||
request.add(crtc->id, crtc->props.active, 0);
|
||||
}
|
||||
|
||||
for (auto const& conn : backend->connectors) {
|
||||
request.add(conn->id, conn->props.crtc_id, 0);
|
||||
}
|
||||
|
||||
for (auto const& plane : backend->planes) {
|
||||
request.planeProps(plane, nullptr, 0, {});
|
||||
}
|
||||
|
||||
return request.commit(DRM_MODE_ATOMIC_ALLOW_MODESET);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Aquamarine::CDRMAtomicImpl::moveCursor(SP<SDRMConnector> connector, bool skipSchedule) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue