mirror of
https://github.com/hyprwm/aquamarine.git
synced 2025-12-20 02:30:02 +01:00
drm: revert "Avoid unnecessary modesetting (#183)"
This reverts commit c0c56dde3e.
Breaks dpms
This commit is contained in:
parent
c0c56dde3e
commit
33ebde1c30
4 changed files with 28 additions and 17 deletions
|
|
@ -18,7 +18,8 @@ using namespace Hyprutils::Memory;
|
|||
#define WP CWeakPointer
|
||||
|
||||
Aquamarine::CDRMDumbBuffer::CDRMDumbBuffer(const SAllocatorBufferParams& params, Hyprutils::Memory::CWeakPointer<CDRMDumbAllocator> allocator_,
|
||||
Hyprutils::Memory::CSharedPointer<CSwapchain> swapchain) : allocator(allocator_) {
|
||||
Hyprutils::Memory::CSharedPointer<CSwapchain> swapchain) :
|
||||
allocator(allocator_) {
|
||||
attrs.format = params.format;
|
||||
|
||||
if (int ret = drmModeCreateDumbBuffer(allocator->drmFD(), params.size.x, params.size.y, 32, 0, &handle, &stride, &bufferLen); ret < 0) {
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ static SDRMFormat guessFormatFrom(std::vector<SDRMFormat> formats, bool cursor,
|
|||
}
|
||||
|
||||
Aquamarine::CGBMBuffer::CGBMBuffer(const SAllocatorBufferParams& params, Hyprutils::Memory::CWeakPointer<CGBMAllocator> allocator_,
|
||||
Hyprutils::Memory::CSharedPointer<CSwapchain> swapchain) : allocator(allocator_) {
|
||||
Hyprutils::Memory::CSharedPointer<CSwapchain> swapchain) :
|
||||
allocator(allocator_) {
|
||||
if (!allocator)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -99,17 +99,9 @@ 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);
|
||||
}
|
||||
|
||||
if (modeDiffers)
|
||||
addConnectorModeset(connector, data);
|
||||
conn = connector;
|
||||
|
||||
addConnectorModeset(connector, data);
|
||||
addConnectorCursor(connector, data);
|
||||
|
||||
add(connector->id, connector->props.crtc_id, enable ? connector->crtc->id : 0);
|
||||
|
|
@ -463,7 +455,22 @@ bool Aquamarine::CDRMAtomicImpl::commit(Hyprutils::Memory::CSharedPointer<SDRMCo
|
|||
}
|
||||
|
||||
bool Aquamarine::CDRMAtomicImpl::reset() {
|
||||
return true;
|
||||
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);
|
||||
}
|
||||
|
||||
bool Aquamarine::CDRMAtomicImpl::moveCursor(SP<SDRMConnector> connector, bool skipSchedule) {
|
||||
|
|
|
|||
|
|
@ -70,13 +70,15 @@ int main(int argc, char** argv, char** envp) {
|
|||
});
|
||||
|
||||
newMouseListener = aqBackend->events.newPointer.listen([](const SP<Aquamarine::IPointer>& pointer) {
|
||||
mouseMotionListener = pointer->events.warp.listen(
|
||||
[](const Aquamarine::IPointer::SWarpEvent& event) { std::cout << "[Client] Mouse warped to " << std::format("{}", event.absolute) << "\n"; });
|
||||
mouseMotionListener = pointer->events.warp.listen([](const Aquamarine::IPointer::SWarpEvent& event) {
|
||||
std::cout << "[Client] Mouse warped to " << std::format("{}", event.absolute) << "\n";
|
||||
});
|
||||
});
|
||||
|
||||
newKeyboardListener = aqBackend->events.newKeyboard.listen([](const SP<Aquamarine::IKeyboard>& keyboard) {
|
||||
keyboardKeyListener = keyboard->events.key.listen(
|
||||
[](const Aquamarine::IKeyboard::SKeyEvent& event) { std::cout << "[Client] Key " << std::format("{}", event.key) << " state: " << event.pressed << " \n"; });
|
||||
keyboardKeyListener = keyboard->events.key.listen([](const Aquamarine::IKeyboard::SKeyEvent& event) {
|
||||
std::cout << "[Client] Key " << std::format("{}", event.key) << " state: " << event.pressed << " \n";
|
||||
});
|
||||
});
|
||||
|
||||
if (!aqBackend || !aqBackend->start()) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue