Compare commits
4 Commits
c260ee1e8f
...
c67ca5c742
| Author | SHA1 | Date |
|---|---|---|
|
|
c67ca5c742 | |
|
|
ef35ef24da | |
|
|
6c5783048e | |
|
|
44f5b6a946 |
|
|
@ -1,10 +1,13 @@
|
|||
hyprland (0.51.1+ds-0.1) unstable; urgency=medium
|
||||
hyprland (0.51.1+ds-1) unstable; urgency=medium
|
||||
|
||||
* Non-maintainer upload
|
||||
* Salvage package (Closes: #1118076):
|
||||
- Change maintainer to Hyprland team
|
||||
- Update Vcs-* fields to point to Hyprland team
|
||||
* New upstream version 0.51.1+ds
|
||||
* Backport patch to fix chrome crash when moved between monitors
|
||||
* Backport patch to fix monitors getting stuck off
|
||||
|
||||
-- Chow Loong Jin <hyperair@debian.org> Thu, 09 Oct 2025 17:08:53 +0800
|
||||
-- Chow Loong Jin <hyperair@debian.org> Wed, 05 Nov 2025 17:12:46 +0800
|
||||
|
||||
hyprland (0.51.0+ds-0.1) UNRELEASED; urgency=medium
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
Source: hyprland
|
||||
Section: x11
|
||||
Priority: optional
|
||||
Maintainer: Alan M Varghese (NyxTrail) <alan@digistorm.in>
|
||||
Maintainer: Debian Hyprland Maintainers <team+hyprland@tracker.debian.org>
|
||||
Uploaders:
|
||||
Alan M Varghese (NyxTrail) <alan@digistorm.in>,
|
||||
Carl Keinath <carl.keinath@gmail.com>,
|
||||
Chow Loong Jin <hyperair@debian.org>
|
||||
Build-Depends:
|
||||
libaquamarine-dev (>= 0.9.0),
|
||||
chrpath,
|
||||
|
|
@ -49,8 +53,8 @@ Build-Depends:
|
|||
Standards-Version: 4.7.0
|
||||
Homepage: https://hyprland.org
|
||||
Rules-Requires-Root: no
|
||||
Vcs-Git: https://salsa.debian.org/NyxTrail/hyprland.git
|
||||
Vcs-Browser: https://salsa.debian.org/NyxTrail/hyprland
|
||||
Vcs-Git: https://salsa.debian.org/hyprland-team/hyprland.git
|
||||
Vcs-Browser: https://salsa.debian.org/hyprland-team/hyprland
|
||||
|
||||
Package: hyprland
|
||||
Architecture: any
|
||||
|
|
|
|||
|
|
@ -0,0 +1,80 @@
|
|||
Origin: https://github.com/hyprwm/hyprland/commit/560c53d87dedf7df8185eb370cfbf3575826e85c
|
||||
Author: Vaxry <vaxry@vaxry.net>
|
||||
Bug: https://github.com/hyprwm/Hyprland/discussions/12045
|
||||
Applied-Upstream: yes
|
||||
Last-Update: 2025-11-05
|
||||
Subject: monitor/dpms: fix possible invalid state
|
||||
|
||||
If dpms gets immediately re-enabled, a commit could fail, not schedule any frames anymore, and the monitor would be stuck off. Fix this by adding a timer to retry if commit fails.
|
||||
Index: hyprland/src/helpers/Monitor.cpp
|
||||
===================================================================
|
||||
--- hyprland.orig/src/helpers/Monitor.cpp 2025-11-05 14:47:00.871682876 +0800
|
||||
+++ hyprland/src/helpers/Monitor.cpp 2025-11-05 14:47:00.863682970 +0800
|
||||
@@ -1865,13 +1865,14 @@
|
||||
|
||||
if (on) {
|
||||
// enable the monitor. Wait for the frame to be presented, then begin animation
|
||||
- m_dpmsBlackOpacity->setValueAndWarp(1.F);
|
||||
m_dpmsBlackOpacity->setCallbackOnEnd(nullptr);
|
||||
+ m_dpmsBlackOpacity->setValueAndWarp(1.F);
|
||||
m_pendingDpmsAnimation = true;
|
||||
m_pendingDpmsAnimationCounter = 0;
|
||||
commitDPMSState(true);
|
||||
} else {
|
||||
// disable the monitor. Begin the animation, then do dpms on its end.
|
||||
+ m_dpmsBlackOpacity->setCallbackOnEnd(nullptr);
|
||||
m_dpmsBlackOpacity->setValueAndWarp(0.F);
|
||||
*m_dpmsBlackOpacity = 1.F;
|
||||
m_dpmsBlackOpacity->setCallbackOnEnd(
|
||||
@@ -1891,7 +1892,29 @@
|
||||
m_output->state->setEnabled(state);
|
||||
|
||||
if (!m_state.commit()) {
|
||||
- Debug::log(ERR, "Couldn't commit output {} for DPMS = {}", m_name, state);
|
||||
+ Debug::log(ERR, "Couldn't commit output {} for DPMS = {}, will retry.", m_name, state);
|
||||
+
|
||||
+ // retry in 2 frames. This could happen when the DRM backend rejects our commit
|
||||
+ // because disable + enable were sent almost instantly
|
||||
+
|
||||
+ m_dpmsRetryTimer = makeShared<CEventLoopTimer>(
|
||||
+ std::chrono::milliseconds(2000 / sc<int>(m_refreshRate)),
|
||||
+ [this, self = m_self](SP<CEventLoopTimer> s, void* d) {
|
||||
+ if (!self)
|
||||
+ return;
|
||||
+
|
||||
+ m_output->state->resetExplicitFences();
|
||||
+ m_output->state->setEnabled(m_dpmsStatus);
|
||||
+ if (!m_state.commit()) {
|
||||
+ Debug::log(ERR, "Couldn't retry committing output {} for DPMS = {}", m_name, m_dpmsStatus);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ m_dpmsRetryTimer.reset();
|
||||
+ },
|
||||
+ nullptr);
|
||||
+ g_pEventLoopManager->addTimer(m_dpmsRetryTimer);
|
||||
+
|
||||
return;
|
||||
}
|
||||
|
||||
Index: hyprland/src/helpers/Monitor.hpp
|
||||
===================================================================
|
||||
--- hyprland.orig/src/helpers/Monitor.hpp 2025-11-05 14:47:00.871682876 +0800
|
||||
+++ hyprland/src/helpers/Monitor.hpp 2025-11-05 14:47:00.864416147 +0800
|
||||
@@ -76,6 +76,7 @@
|
||||
class CMonitor;
|
||||
class CSyncTimeline;
|
||||
class CEGLSync;
|
||||
+class CEventLoopTimer;
|
||||
|
||||
class CMonitorState {
|
||||
public:
|
||||
@@ -146,6 +147,8 @@
|
||||
bool m_createdByUser = false;
|
||||
bool m_isUnsafeFallback = false;
|
||||
|
||||
+ SP<CEventLoopTimer> m_dpmsRetryTimer;
|
||||
+
|
||||
bool m_pendingFrame = false; // if we schedule a frame during rendering, reschedule it after
|
||||
bool m_renderingActive = false;
|
||||
|
||||
|
|
@ -5,3 +5,4 @@
|
|||
005-libcpp-port.patch
|
||||
006-hyprpm-global-headers.patch
|
||||
007-backport-cm-chrome-crash-fix.patch
|
||||
008-fix-dpms-invalid-state.patch
|
||||
|
|
|
|||
Loading…
Reference in New Issue