Working Indicators

This commit is contained in:
Hariharan Mudaliar 2025-10-15 22:51:14 +05:30
commit 357335d35e
2 changed files with 18 additions and 18 deletions

View file

@ -65,7 +65,7 @@ struct PrivacyLiveActivity: View {
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .trailing)
}
}
.frame(width: isExpanded ? max(0, vm.effectiveClosedNotchHeight - (isHovering ? 0 : 12) + gestureProgress / 2) : 0, height: vm.effectiveClosedNotchHeight - (isHovering ? 0 : 12))
.frame(width: isExpanded ? max(0, vm.effectiveClosedNotchHeight + 30 + gestureProgress / 2) : 0, height: vm.effectiveClosedNotchHeight - (isHovering ? 0 : 12))
}
.frame(height: vm.effectiveClosedNotchHeight + (isHovering ? 8 : 0))
.onAppear {

View file

@ -55,9 +55,9 @@ class MicrophoneMonitor: ObservableObject {
// Remove property listener
if isListenerRegistered, defaultInputDevice != 0 {
var address = AudioObjectPropertyAddress(
mSelector: kAudioDevicePropertyDeviceIsRunning,
mScope: kAudioDevicePropertyScopeInput,
mElement: kAudioObjectPropertyElementMain
mSelector: kAudioDevicePropertyDeviceIsRunningSomewhere,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster
)
let context = Unmanaged.passUnretained(self).toOpaque()
@ -150,7 +150,7 @@ class MicrophoneMonitor: ObservableObject {
var address = AudioObjectPropertyAddress(
mSelector: kAudioHardwarePropertyDefaultInputDevice,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMain
mElement: kAudioObjectPropertyElementMaster
)
let status = AudioObjectGetPropertyData(
@ -175,9 +175,9 @@ class MicrophoneMonitor: ObservableObject {
guard defaultInputDevice != 0 else { return false }
var address = AudioObjectPropertyAddress(
mSelector: kAudioDevicePropertyDeviceIsRunning,
mScope: kAudioDevicePropertyScopeInput,
mElement: kAudioObjectPropertyElementMain
mSelector: kAudioDevicePropertyDeviceIsRunningSomewhere,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster
)
let hasProperty = AudioObjectHasProperty(defaultInputDevice, &address)
@ -190,11 +190,11 @@ class MicrophoneMonitor: ObservableObject {
private func setupPropertyListener() {
guard defaultInputDevice != 0 else { return }
// Try kAudioDevicePropertyDeviceIsRunning (simpler, more reliable for input devices)
// Use kAudioDevicePropertyDeviceIsRunningSomewhere (tracks when device is in use anywhere)
var address = AudioObjectPropertyAddress(
mSelector: kAudioDevicePropertyDeviceIsRunning,
mScope: kAudioDevicePropertyScopeInput,
mElement: kAudioObjectPropertyElementMain
mSelector: kAudioDevicePropertyDeviceIsRunningSomewhere,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster
)
// Pass self as context
@ -220,9 +220,9 @@ class MicrophoneMonitor: ObservableObject {
guard defaultInputDevice != 0, isListenerRegistered else { return }
var address = AudioObjectPropertyAddress(
mSelector: kAudioDevicePropertyDeviceIsRunning,
mScope: kAudioDevicePropertyScopeInput,
mElement: kAudioObjectPropertyElementMain
mSelector: kAudioDevicePropertyDeviceIsRunningSomewhere,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster
)
let context = Unmanaged.passUnretained(self).toOpaque()
@ -273,9 +273,9 @@ class MicrophoneMonitor: ObservableObject {
/// Check if audio device is running
private func isDeviceRunning(_ deviceID: AudioDeviceID) -> Bool {
var address = AudioObjectPropertyAddress(
mSelector: kAudioDevicePropertyDeviceIsRunning,
mScope: kAudioDevicePropertyScopeInput,
mElement: kAudioObjectPropertyElementMain
mSelector: kAudioDevicePropertyDeviceIsRunningSomewhere,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster
)
var isRunning: UInt32 = 0