diff --git a/gnome/src/extension.js b/gnome/src/extension.js index 54ea1b3..0255de6 100644 --- a/gnome/src/extension.js +++ b/gnome/src/extension.js @@ -92,7 +92,10 @@ export default class BreezyDesktopExtension extends Extension { var target_monitor = this._target_monitor; var is_effect_running = this._is_effect_running; this._running_poller_id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, (() => { - if (is_effect_running) return GLib.SOURCE_REMOVE; + if (is_effect_running) { + this._running_poller_id = undefined; + return GLib.SOURCE_REMOVE; + } const is_driver_running = this._check_driver_running(); if (is_driver_running && target_monitor) { @@ -102,6 +105,7 @@ export default class BreezyDesktopExtension extends Extension { Globals.logger.log('Driver is running, supported monitor connected. Enabling XR effect.'); this._effect_enable(); } + this._running_poller_id = undefined; return GLib.SOURCE_REMOVE; } else { return GLib.SOURCE_CONTINUE; @@ -115,6 +119,7 @@ export default class BreezyDesktopExtension extends Extension { const target_monitor = this._monitor_manager.getMonitorPropertiesList()?.find( monitor => SUPPORTED_MONITOR_PRODUCTS.includes(monitor.product)); if (target_monitor !== undefined) { + Globals.logger.log_debug(`BreezyDesktopExtension _find_supported_monitor - Identified supported monitor: ${target_monitor.connector}`); return { monitor: this._monitor_manager.getMonitors()[target_monitor.index], connector: target_monitor.connector, @@ -123,6 +128,7 @@ export default class BreezyDesktopExtension extends Extension { } if (this.settings.get_boolean('developer-mode')) { + Globals.logger.log_debug('BreezyDesktopExtension _find_supported_monitor - Using dummy monitor'); // allow testing XR devices with just USB, no video needed return { monitor: this._monitor_manager.getMonitors()[0], @@ -132,6 +138,7 @@ export default class BreezyDesktopExtension extends Extension { }; } + Globals.logger.log_debug('BreezyDesktopExtension _find_supported_monitor - No supported monitor found'); return null; } catch (e) { Globals.logger.log(`ERROR: BreezyDesktopExtension _find_supported_monitor ${e.message}\n${e.stack}`); @@ -157,10 +164,19 @@ export default class BreezyDesktopExtension extends Extension { if (target_monitor.is_dummy || !this._monitor_manager.checkOptimalMode(target_monitor.connector)) { Globals.logger.log('Ready, enabling XR effect'); this._effect_enable(); + } else { + Globals.logger.log_debug('BreezyDesktopExtension _setup - driver running but optimal mode check needed'); } } else { + Globals.logger.log_debug('BreezyDesktopExtension _setup - driver no running, starting poller'); this._poll_for_ready(); } + } else { + if (!target_monitor) { + Globals.logger.log_debug(`BreezyDesktopExtension _setup - Doing nothing, no supported monitor found`); + } else { + Globals.logger.log_debug(`BreezyDesktopExtension _setup - Doing nothing, target monitor found, waiting for poller to pick it up`); + } } } @@ -352,7 +368,10 @@ export default class BreezyDesktopExtension extends Extension { Globals.logger.log_debug('BreezyDesktopExtension _effect_disable'); this._is_effect_running = false; - if (this._running_poller_id) GLib.source_remove(this._running_poller_id); + if (this._running_poller_id) { + GLib.source_remove(this._running_poller_id); + this._running_poller_id = undefined; + } Main.wm.removeKeybinding('recenter-display-shortcut'); Main.wm.removeKeybinding('toggle-display-distance-shortcut'); diff --git a/gnome/src/monitormanager.js b/gnome/src/monitormanager.js index 3d52d8e..ae289c8 100644 --- a/gnome/src/monitormanager.js +++ b/gnome/src/monitormanager.js @@ -279,11 +279,13 @@ export const MonitorManager = GObject.registerClass({ } else { if (configChanged) { Globals.logger.log(`Switched to optimal mode for monitor ${monitorConnector}`); - } else if (this._changeHookFn !== null) { + } else if (!!this._changeHookFn) { Globals.logger.log_debug('MonitorManager checkOptimalMode: no config change'); // no config change means this won't be triggered automatically, so trigger it manually this._changeHookFn(); + } else { + Globals.logger.log('MonitorManager checkOptimalMode: can\'t trigger change hook, no hook set!'); } } }).bind(this)); @@ -321,8 +323,10 @@ export const MonitorManager = GObject.registerClass({ } } this._monitorProperties = monitorProperties; - if (this._changeHookFn !== null) { + if (!!this._changeHookFn) { this._changeHookFn(); + } else { + Globals.logger.log('MonitorManager _on_monitors_change: can\'t trigger change hook, no hook set!'); } }).bind(this)); }