aquamarine/patch.txt

57 lines
2.7 KiB
Plaintext

diff --git a/include/aquamarine/backend/DRM.hpp b/include/aquamarine/backend/DRM.hpp
index 348bbaa..040cad7 100644
--- a/include/aquamarine/backend/DRM.hpp
+++ b/include/aquamarine/backend/DRM.hpp
@@ -367,7 +367,7 @@ namespace Aquamarine {
bool initMgpu();
bool grabFormats();
bool shouldBlit();
- void scanConnectors();
+ void scanConnectors(bool allowConnect = true);
void scanLeases();
void restoreAfterVT();
void recheckCRTCs();
diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp
index c2c6125..899bbec 100644
--- a/src/backend/drm/DRM.cpp
+++ b/src/backend/drm/DRM.cpp
@@ -658,7 +658,7 @@ bool Aquamarine::CDRMBackend::registerGPU(SP<CSessionDevice> gpu_, SP<CDRMBacken
auto E = std::any_cast<CSessionDevice::SChangeEvent>(d);
if (E.type == CSessionDevice::AQ_SESSION_EVENT_CHANGE_HOTPLUG) {
backend->log(AQ_LOG_DEBUG, std::format("drm: Got a hotplug event for {}", gpuName));
- scanConnectors();
+ scanConnectors(false);
recheckCRTCs();
} else if (E.type == CSessionDevice::AQ_SESSION_EVENT_CHANGE_LEASE) {
backend->log(AQ_LOG_DEBUG, std::format("drm: Got a lease event for {}", gpuName));
@@ -676,7 +676,7 @@ eBackendType Aquamarine::CDRMBackend::type() {
return eBackendType::AQ_BACKEND_DRM;
}
-void Aquamarine::CDRMBackend::scanConnectors() {
+void Aquamarine::CDRMBackend::scanConnectors(bool allowConnect) {
backend->log(AQ_LOG_DEBUG, std::format("drm: Scanning connectors for {}", gpu->path));
auto resources = drmModeGetResources(gpu->fd);
@@ -722,12 +722,14 @@ void Aquamarine::CDRMBackend::scanConnectors() {
backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} connection state: {}", connectorID, (int)drmConn->connection));
- if (conn->status == DRM_MODE_CONNECTED && !conn->output) {
- backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} connected", conn->szName));
- conn->connect(drmConn);
- } else if (conn->status != DRM_MODE_CONNECTED && conn->output) {
- backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} disconnected", conn->szName));
- conn->disconnect();
+ if (allowConnect) {
+ if (conn->status == DRM_MODE_CONNECTED && !conn->output) {
+ backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} connected", conn->szName));
+ conn->connect(drmConn);
+ } else if (conn->status != DRM_MODE_CONNECTED && conn->output) {
+ backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} disconnected", conn->szName));
+ conn->disconnect();
+ }
}
drmModeFreeConnector(drmConn);