1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-28 14:05:21 -04:00

core: improve how DMS handles multiple-sessions under the same user

This commit is contained in:
bbedward
2026-06-26 10:09:00 -04:00
parent 0bc89429bc
commit 03d86f78f4
5 changed files with 168 additions and 17 deletions
+33 -8
View File
@@ -104,6 +104,8 @@ Singleton {
signal matugenCompleted(string mode, string result)
property var matugenColors: ({})
property var _pendingGenerateParams: null
property int _colorsRetryCount: 0
property double _lastGenerateMs: 0
property bool themeModeAutomationActive: false
property bool dmsServiceWasDisconnected: true
@@ -1771,6 +1773,7 @@ Singleton {
if (!matugenAvailable || isGreeterMode)
return;
_lastGenerateMs = Date.now();
_pendingGenerateParams = true;
_themeGenerateDebounce.restart();
}
@@ -2217,6 +2220,7 @@ Singleton {
}
onLoaded: {
_colorsRetryCount = 0;
if (currentTheme === dynamic)
colorsFileLoadFailed = false;
parseAndLoadColors();
@@ -2227,14 +2231,28 @@ Singleton {
}
onLoadFailed: function (error) {
if (currentTheme === dynamic) {
log.warn("Dynamic colors file load failed, marking for regeneration");
colorsFileLoadFailed = true;
const isGreeterMode = (typeof SessionData !== "undefined" && SessionData.isGreeterMode);
if (!isGreeterMode && matugenAvailable && rawWallpaperPath) {
log.debug("Matugen available, triggering immediate regeneration");
generateSystemThemesFromCurrentTheme();
}
if (currentTheme !== dynamic)
return;
if (SessionData.isGreeterMode)
return;
if (workerRunning) {
colorsReloadRetry.restart();
return;
}
if (_colorsRetryCount < 3) {
_colorsRetryCount++;
colorsReloadRetry.restart();
return;
}
colorsFileLoadFailed = true;
const stale = Date.now() - _lastGenerateMs > 5000;
if (matugenAvailable && rawWallpaperPath && stale) {
log.debug("Dynamic colors unrecoverable, regenerating");
generateSystemThemesFromCurrentTheme();
}
}
@@ -2243,6 +2261,13 @@ Singleton {
}
}
Timer {
id: colorsReloadRetry
interval: 150
repeat: false
onTriggered: dynamicColorsFileView.reload()
}
IpcHandler {
target: "theme"