From 3a7d5feb88211cee4bd0ca67d0cbd9f95843e9d9 Mon Sep 17 00:00:00 2001 From: Wayne Heaney <42350981+wheaney@users.noreply.github.com> Date: Tue, 13 Aug 2024 10:10:10 -0700 Subject: [PATCH] Add Rokid support (#42) --- gnome/src/extension.js | 1 + modules/XRLinuxDriver | 2 +- ui/src/connecteddevice.py | 4 ++-- ui/src/statemanager.py | 12 +++++++++--- ui/src/window.py | 8 +++----- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gnome/src/extension.js b/gnome/src/extension.js index 5fae1c0..e56052f 100644 --- a/gnome/src/extension.js +++ b/gnome/src/extension.js @@ -25,6 +25,7 @@ const SUPPORTED_MONITOR_PRODUCTS = [ 'Air 2 Ultra', 'SmartGlasses', // TCL/RayNeo 'Rokid Max', + 'Rokid Air', NESTED_MONITOR_PRODUCT ]; diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 860d3ee..34b04d9 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 860d3ee26899c72709141296f557b9b61a5beefa +Subproject commit 34b04d94f4ee461f8969598e5fcbd3b70aaea9d3 diff --git a/ui/src/connecteddevice.py b/ui/src/connecteddevice.py index 46fb773..6cf13fa 100644 --- a/ui/src/connecteddevice.py +++ b/ui/src/connecteddevice.py @@ -89,7 +89,7 @@ class ConnectedDevice(Gtk.Box): self.state_manager.connect('notify::enabled-features-list', self._handle_enabled_features) self.state_manager.connect('notify::device-supports-sbs', self._handle_device_supports_sbs) - self.follow_mode_switch.set_active(self.state_manager.follow_mode) + self.follow_mode_switch.set_active(self.state_manager.get_property('follow-mode')) self.follow_mode_switch.connect('notify::active', self._refresh_follow_mode) self.effect_enable_switch.set_active(self._is_config_enabled(self.ipc.retrieve_config()) and self.extensions_manager.is_enabled()) @@ -141,7 +141,7 @@ class ConnectedDevice(Gtk.Box): def _refresh_follow_mode(self, switch, param): self.follow_threshold_scale.set_sensitive(switch.get_active()) - if (self.state_manager.follow_mode == switch.get_active()): + if (self.state_manager.get_property('follow-mode') == switch.get_active()): return self.ipc.write_control_flags({ diff --git a/ui/src/statemanager.py b/ui/src/statemanager.py index 5db03fb..f9dc84a 100644 --- a/ui/src/statemanager.py +++ b/ui/src/statemanager.py @@ -56,12 +56,16 @@ class StateManager(GObject.GObject): GObject.GObject.__init__(self) self.ipc = XRDriverIPC.get_instance() self.driver_running = False + self.follow_mode = False + self.follow_threshold = 15.0 + self.widescreen_mode = False self.connected_device_name = None self.license_action_needed = False self.license_action_needed_seconds = 0 self.confirmed_token = False self.license_present = False self.enabled_features = [] + self.device_supports_sbs = False self.start() @@ -99,9 +103,11 @@ class StateManager(GObject.GObject): elif self.license_present: self.set_property('license-present', False) - self.set_property('follow-mode', self.state.get('breezy_desktop_smooth_follow_enabled', False)) - self.set_property('device-supports-sbs', self.state.get('sbs_mode_supported', False)) - self.set_property('widescreen-mode', self.state.get('sbs_mode_enabled', False)) + # only update these properties if a device is still connected + if (self.connected_device_name): + self.set_property('follow-mode', self.state.get('breezy_desktop_smooth_follow_enabled', False)) + self.set_property('device-supports-sbs', self.state.get('sbs_mode_supported', False)) + self.set_property('widescreen-mode', self.state.get('sbs_mode_enabled', False)) if self.running: threading.Timer(1.0, self._refresh_state).start() diff --git a/ui/src/window.py b/ui/src/window.py index 85a9cab..372255a 100644 --- a/ui/src/window.py +++ b/ui/src/window.py @@ -75,11 +75,9 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): for child in self.main_content: self.main_content.remove(child) - if not self._skip_verification: - if not verify_installation(): - self.main_content.append(self.failed_verification) - - if not self.state_manager.driver_running: + if not self._skip_verification and not verify_installation(): + self.main_content.append(self.failed_verification) + elif not self.state_manager.driver_running: self.main_content.append(self.no_driver) elif not state_manager.connected_device_name: self.main_content.append(self.no_device)