summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-08-10 13:44:04 +0200
committervaxerski <vaxry@vaxry.net>2022-08-10 13:44:04 +0200
commit15fc0892c7cd8385bfa896fda4e79c10af48cc06 (patch)
tree283694e36696f8fab7505c138328275661fb8307 /src
parenta564be73c5639fd596b52e2f9956b05f4a8e967a (diff)
further fixes to monitor disabling on launch
Diffstat (limited to 'src')
-rw-r--r--src/events/Monitors.cpp7
-rw-r--r--src/helpers/Monitor.cpp18
-rw-r--r--src/helpers/Monitor.hpp1
3 files changed, 19 insertions, 7 deletions
diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp
index ee831187..bb8c2b96 100644
--- a/src/events/Monitors.cpp
+++ b/src/events/Monitors.cpp
@@ -64,18 +64,17 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
PNEWMONITOR->ID = g_pCompositor->getNextAvailableMonitorID();
- wlr_output_init_render(OUTPUT, g_pCompositor->m_sWLRAllocator, g_pCompositor->m_sWLRRenderer);
-
PNEWMONITOR->output = OUTPUT;
PNEWMONITOR->m_pThisWrap = PNEWMONITORWRAP;
PNEWMONITOR->onConnect(false);
- if (!pMostHzMonitor || PNEWMONITOR->refreshRate > pMostHzMonitor->refreshRate)
+ if ((!pMostHzMonitor || PNEWMONITOR->refreshRate > pMostHzMonitor->refreshRate) && PNEWMONITOR->m_bEnabled)
pMostHzMonitor = PNEWMONITOR;
// ready to process cuz we have a monitor
- g_pCompositor->m_bReadyToProcess = true;
+ if (PNEWMONITOR->m_bEnabled)
+ g_pCompositor->m_bReadyToProcess = true;
}
void Events::listener_monitorFrame(void* owner, void* data) {
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp
index b4d6d395..78e7d49b 100644
--- a/src/helpers/Monitor.cpp
+++ b/src/helpers/Monitor.cpp
@@ -6,6 +6,8 @@ void CMonitor::onConnect(bool noRule) {
if (m_bEnabled)
return;
+ szName = output->name;
+
// get monitor rule that matches
SMonitorRule monitorRule = g_pConfigManager->getMonitorRuleFor(output->name);
@@ -37,9 +39,16 @@ void CMonitor::onConnect(bool noRule) {
if (PREFSTATE)
wlr_output_set_mode(output, PREFSTATE);
+ else
+ Debug::log(WARN, "No mode found for disabled output %s", output->name)
wlr_output_enable(output, 0);
- wlr_output_commit(output);
+
+ if (!wlr_output_commit(output)) {
+ Debug::log(ERR, "Couldn't commit disabled state on output %s", output->name);
+ }
+
+ Events::listener_change(nullptr, nullptr);
m_bEnabled = false;
@@ -47,6 +56,11 @@ void CMonitor::onConnect(bool noRule) {
return;
}
+ if (!m_bRenderingInitPassed) {
+ wlr_output_init_render(output, g_pCompositor->m_sWLRAllocator, g_pCompositor->m_sWLRRenderer);
+ m_bRenderingInitPassed = true;
+ }
+
if (!m_pThisWrap) {
// find the wrap
@@ -64,8 +78,6 @@ void CMonitor::onConnect(bool noRule) {
m_bEnabled = true;
- szName = output->name;
-
wlr_output_set_scale(output, monitorRule.scale);
wlr_xcursor_manager_load(g_pCompositor->m_sWLRXCursorMgr, monitorRule.scale);
wlr_output_set_transform(output, WL_OUTPUT_TRANSFORM_NORMAL); // TODO: support other transforms
diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp
index 6f54aa14..5b8b02d4 100644
--- a/src/helpers/Monitor.hpp
+++ b/src/helpers/Monitor.hpp
@@ -58,6 +58,7 @@ public:
std::shared_ptr<CMonitor>* m_pThisWrap = nullptr;
bool m_bEnabled = false;
+ bool m_bRenderingInitPassed = false;
// For the list lookup