Skip to content

Commit 85ff606

Browse files
committed
feat(Command): add class to asyncronously execute commands
1 parent 6f25d49 commit 85ff606

File tree

18 files changed

+436
-362
lines changed

18 files changed

+436
-362
lines changed

core/global/audio_manager.gd

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ enum VOLUME {
1818
## Limit the maximum volume to 200%
1919
const volume_limit := "2.0"
2020

21-
## Thread to run audio changes on
22-
var thread := load("res://core/systems/threading/thread_pool.tres")
23-
2421
## Current volume
2522
var current_volume := await _get_current_volume()
2623
var _muted := false
@@ -29,7 +26,6 @@ var _current_output := ""
2926

3027

3128
func _init() -> void:
32-
thread.start()
3329
current_volume = await _get_current_volume()
3430
_output_devices = await _get_output_devices()
3531

@@ -80,8 +76,11 @@ func set_volume(value: float, type: VOLUME = VOLUME.ABSOLUTE) -> int:
8076
suffix = "%+"
8177

8278
var percent := value * 100
83-
var args := ["set-volume", "--limit", volume_limit, "@DEFAULT_AUDIO_SINK@", str(percent) + suffix]
84-
var code := await thread.exec(OS.execute.bind("wpctl", args)) as int
79+
var args: Array[String] = ["set-volume", "--limit", volume_limit, "@DEFAULT_AUDIO_SINK@", str(percent) + suffix]
80+
var cmd := Command.create("wpctl", args)
81+
cmd.timeout = 5.0
82+
cmd.execute()
83+
var code := await cmd.finished as int
8584

8685
return code
8786

@@ -90,7 +89,10 @@ func set_volume(value: float, type: VOLUME = VOLUME.ABSOLUTE) -> int:
9089
func toggle_mute() -> int:
9190
_muted = !_muted
9291
volume_mute_toggled.emit()
93-
var code := await thread.exec(OS.execute.bind("wpctl", ["set-mute", "@DEFAULT_AUDIO_SINK@", "toggle"])) as int
92+
var cmd := Command.create("wpctl", ["set-mute", "@DEFAULT_AUDIO_SINK@", "toggle"])
93+
cmd.timeout = 5.0
94+
cmd.execute()
95+
var code := await cmd.finished as int
9496
return code
9597

9698

@@ -116,7 +118,11 @@ func set_output_device(device: String) -> int:
116118
var i := devices.find(device)
117119
var device_id := ids[i]
118120

119-
return await thread.exec(OS.execute.bind("wpctl", ["set-default", device_id]))
121+
var cmd := Command.create("wpctl", ["set-default", device_id])
122+
cmd.timeout = 5.0
123+
cmd.execute()
124+
125+
return await cmd.finished as int
120126

121127

122128
## Returns the currently set output device
@@ -135,16 +141,16 @@ func get_current_volume() -> float:
135141

136142
## Fetch the volume for the current output device
137143
func _get_current_volume() -> float:
138-
var output := []
139-
var code := await thread.exec(OS.execute.bind("wpctl", ["get-volume", "@DEFAULT_AUDIO_SINK@"], output)) as int
140-
if code != 0:
141-
return -1
142-
if output.size() == 0:
144+
var cmd := Command.create("wpctl", ["get-volume", "@DEFAULT_AUDIO_SINK@"])
145+
cmd.timeout = 5.0
146+
cmd.execute()
147+
var code := await cmd.finished as int
148+
if code != OK:
143149
return -1
144150

145151
# Parse the output of wpctl
146152
# Example: Volume: 0.52
147-
var text := output[0] as String
153+
var text := cmd.stdout
148154
var parts := text.split(" ")
149155
if parts.size() < 2:
150156
return -1
@@ -178,28 +184,26 @@ func _get_output_devices() -> PackedStringArray:
178184

179185
# Inspects the given wirepipe object
180186
func _wpctl_inspect(id: String) -> PackedStringArray:
181-
var out := PackedStringArray()
182-
var output := []
183-
var code := await thread.exec(OS.execute.bind("wpctl", ["inspect", id], output)) as int
184-
if code != 0:
185-
return out
186-
if output.size() == 0:
187-
return out
188-
var text := output[0] as String
189-
return text.split("\n")
187+
var cmd := Command.create("wpctl", ["inspect", id])
188+
cmd.timeout = 5.0
189+
cmd.execute()
190+
var code := await cmd.finished as int
191+
if code != OK:
192+
return PackedStringArray()
193+
return cmd.stdout.split("\n")
190194

191195

192196
# Returns an array of discovered Wirepipe object IDs
193197
func _get_wpctl_object_ids() -> PackedStringArray:
194198
var ids := PackedStringArray()
195199

196-
var output := []
197-
var code := await thread.exec(OS.execute.bind("wpctl", ["status"], output)) as int
198-
if code != 0:
199-
return ids
200-
if output.size() == 0:
200+
var cmd := Command.create("wpctl", ["status"])
201+
cmd.timeout = 5.0
202+
cmd.execute()
203+
var code := await cmd.finished as int
204+
if code != OK:
201205
return ids
202-
var text := output[0] as String
206+
var text := cmd.stdout
203207
var parts := text.split(" ")
204208
if parts.size() < 2:
205209
return ids

core/global/battery_manager.gd

Lines changed: 0 additions & 91 deletions
This file was deleted.

core/global/battery_manager.tres

Lines changed: 0 additions & 18 deletions
This file was deleted.

core/platform/actions/start_inputplumber.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ const INPUT_PLUMBER_PATH := "/usr/share/opengamepadui/scripts/manage_input"
66

77
func execute() -> void:
88
logger.info("Starting InputPlumber")
9-
var cmd := CommandSync.new(INPUT_PLUMBER_PATH, ["startInputPlumber"])
10-
if cmd.execute() != OK:
9+
var cmd := Command.create(INPUT_PLUMBER_PATH, ["startInputPlumber"])
10+
if cmd.execute_blocking() != OK:
1111
logger.warn("Failed to start InputPlumber: " + cmd.stdout)

core/platform/actions/start_powerstation.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ const POWERTOOLS_PATH := "/usr/share/opengamepadui/scripts/manage_input"
66

77
func execute() -> void:
88
logger.info("Starting PowerStation")
9-
var cmd := CommandSync.new(POWERTOOLS_PATH, ["startPowerStation"])
10-
if cmd.execute() != OK:
9+
var cmd := Command.create(POWERTOOLS_PATH, ["startPowerStation"])
10+
if cmd.execute_blocking() != OK:
1111
logger.warn("Failed to start PowerStation: " + cmd.stdout)

core/platform/actions/turbo_takeover.gd

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ class_name ActionTurboTakeover
33

44

55
func execute() -> void:
6-
var cmd := Command.new("/usr/share/opengamepadui/scripts/manage_input", ["turbo_takeover", "1"])
7-
var code := await cmd.execute() as int
6+
var cmd := Command.create("/usr/share/opengamepadui/scripts/manage_input", ["turbo_takeover", "1"])
7+
cmd.execute()
8+
var code := await cmd.finished as int
89
if code != OK:
9-
logger.warn("Unable to take over turbo button: " + cmd.stdout)
10+
logger.warn("Unable to take over turbo button: " + cmd.stdout + " " + cmd.stderr)

core/systems/battery.gd

Lines changed: 0 additions & 87 deletions
This file was deleted.

core/systems/disks/steam_removable_media_manager.gd

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,11 @@ func trim_sd_card() -> Error:
161161
return ERR_SCRIPT_FAILED
162162

163163

164-
func _execute_in_thread(path: String, args: Array = []) -> Array:
164+
func _execute_in_thread(path: String, args: Array[String] = []) -> Array:
165165
block_operations = true
166-
var thread_options := SharedThread.Option.NONE
167-
var thread := SharedThread.new(thread_options)
168-
thread.start()
169-
var cmd := Command.new(path, args, thread)
170-
var code := await cmd.execute() as int
171-
thread.stop()
166+
var cmd := Command.create(path, args)
167+
if cmd.execute() != OK:
168+
return ["", -1]
169+
var code := await cmd.finished as int
172170
block_operations = false
173171
return [cmd.stdout, code]

core/systems/hardware/cpu.gd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ func _get_property(prop_path: String) -> String:
9999

100100
## Provides info on the GPU vendor, model, and capabilities.
101101
func _get_lscpu_info() -> PackedStringArray:
102-
var cmd := CommandSync.new("lscpu")
103-
if cmd.execute() != OK:
102+
var cmd := Command.create("lscpu", [])
103+
if cmd.execute_blocking() != OK:
104104
return []
105105
return cmd.stdout.split("\n")
106106

@@ -111,4 +111,3 @@ func _to_string() -> String:
111111
+ ") Model: (" + str(model) \
112112
+ ") Core count: (" + str(core_count) \
113113
+ ")>"
114-

0 commit comments

Comments
 (0)