mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-09 08:58:03 +02:00
Add headless output if no gpus in session supports KMS
This commit is contained in:
parent
a5858018d8
commit
2db4602bcd
2 changed files with 19 additions and 5 deletions
|
|
@ -735,8 +735,7 @@ void CCompositor::removeLockFile() {
|
|||
std::filesystem::remove(PATH);
|
||||
}
|
||||
|
||||
void CCompositor::prepareFallbackOutput() {
|
||||
// create a backup monitor
|
||||
void CCompositor::prepareFallbackOutputs() {
|
||||
SP<Aquamarine::IBackendImplementation> headless;
|
||||
for (auto const& impl : m_aqBackend->getImplementations()) {
|
||||
if (impl->type() == Aquamarine::AQ_BACKEND_HEADLESS) {
|
||||
|
|
@ -746,14 +745,29 @@ void CCompositor::prepareFallbackOutput() {
|
|||
}
|
||||
|
||||
if (!headless) {
|
||||
Log::logger->log(Log::WARN, "No headless in prepareFallbackOutput?!");
|
||||
Log::logger->log(Log::WARN, "No headless in prepareFallbackOutputs?!");
|
||||
return;
|
||||
}
|
||||
|
||||
// create a backup monitor
|
||||
headless->createOutput();
|
||||
|
||||
if (m_monitors.empty())
|
||||
enterUnsafeState();
|
||||
|
||||
// create a headless monitor if no card support kms.
|
||||
bool supportsKMS = false;
|
||||
if (m_aqBackend->hasSession()) {
|
||||
for (SP<CSessionDevice> dev : m_aqBackend->session->sessionDevices) {
|
||||
supportsKMS |= dev->supportsKMS();
|
||||
}
|
||||
}
|
||||
|
||||
if (supportsKMS)
|
||||
return;
|
||||
|
||||
Log::logger->log(Log::DEBUG, "Running on DRM-only gpu. Creating initial HEADLESS-0 output.");
|
||||
headless->createOutput("HEADLESS-0");
|
||||
}
|
||||
|
||||
void CCompositor::startCompositor() {
|
||||
|
|
@ -775,7 +789,7 @@ void CCompositor::startCompositor() {
|
|||
|
||||
Log::logger->log(Log::DEBUG, "Running on WAYLAND_DISPLAY: {}", m_wlDisplaySocket);
|
||||
|
||||
prepareFallbackOutput();
|
||||
prepareFallbackOutputs();
|
||||
|
||||
g_pHyprRenderer->setCursorFromName("left_ptr");
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ class CCompositor {
|
|||
void cleanEnvironment();
|
||||
void setRandomSplash();
|
||||
void initManagers(eManagersInitStage stage);
|
||||
void prepareFallbackOutput();
|
||||
void prepareFallbackOutputs();
|
||||
void createLockFile();
|
||||
void removeLockFile();
|
||||
void setMallocThreshold();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue