From 4a8a83f223bbc2b9d18ef91423c1ee807b297b35 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Fri, 15 May 2026 16:03:08 -0400 Subject: PA reconnect: recover cleanly when PulseAudio restarts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - On PA_CONTEXT_FAILED/TERMINATED, emit deviceRemoved for all devices so UI clears itself, then reconnect after 2s - Skip pa_context_disconnect and stream detach locks when PA is already dead to avoid hang in pa_threaded_mainloop_stop - Emit defaultOutputChanged(0)/defaultInputChanged(0) before deleting devices to prevent dangling pointer crash in TmixTray::setDevice - Disconnect all device signals before close() to avoid use-after-free from cross-device wiring (source→recording levelChanged bridge) - Icon: generate proper 22x22 (and 16/32/48) from source, install all sizes Co-Authored-By: Claude Sonnet 4.6 --- img/crystal/audio-volume-error.png | Bin 0 -> 1176 bytes img/crystal/audio-volume-high.png | Bin 0 -> 1581 bytes img/crystal/audio-volume-low.png | Bin 0 -> 1379 bytes img/crystal/audio-volume-medium.png | Bin 0 -> 1423 bytes img/crystal/audio-volume-muted.png | Bin 0 -> 809 bytes img/mix_ac97.png | Bin 0 -> 407 bytes img/mix_audio.png | Bin 0 -> 170 bytes img/mix_bass.png | Bin 0 -> 174 bytes img/mix_cd.png | Bin 0 -> 233 bytes img/mix_digital.png | Bin 0 -> 200 bytes img/mix_ext.png | Bin 0 -> 156 bytes img/mix_headphone.png | Bin 0 -> 261 bytes img/mix_microphone.png | Bin 0 -> 190 bytes img/mix_microphone_recording.png | Bin 0 -> 5794 bytes img/mix_midi.png | Bin 0 -> 174 bytes img/mix_record.png | Bin 0 -> 957 bytes img/mix_surround.png | Bin 0 -> 204 bytes img/mix_unknown.png | Bin 0 -> 172 bytes img/mix_video.png | Bin 0 -> 145 bytes img/mix_volume.png | Bin 0 -> 176 bytes img/mixer.png | Bin 0 -> 196 bytes img/tmix-16.png | Bin 0 -> 685 bytes img/tmix-32.png | Bin 0 -> 1194 bytes img/tmix-48.png | Bin 0 -> 1798 bytes img/tmix.png | Bin 0 -> 758 bytes 25 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/crystal/audio-volume-error.png create mode 100644 img/crystal/audio-volume-high.png create mode 100644 img/crystal/audio-volume-low.png create mode 100644 img/crystal/audio-volume-medium.png create mode 100644 img/crystal/audio-volume-muted.png create mode 100644 img/mix_ac97.png create mode 100644 img/mix_audio.png create mode 100644 img/mix_bass.png create mode 100644 img/mix_cd.png create mode 100644 img/mix_digital.png create mode 100644 img/mix_ext.png create mode 100644 img/mix_headphone.png create mode 100644 img/mix_microphone.png create mode 100644 img/mix_microphone_recording.png create mode 100644 img/mix_midi.png create mode 100644 img/mix_record.png create mode 100644 img/mix_surround.png create mode 100644 img/mix_unknown.png create mode 100644 img/mix_video.png create mode 100644 img/mix_volume.png create mode 100644 img/mixer.png create mode 100644 img/tmix-16.png create mode 100644 img/tmix-32.png create mode 100644 img/tmix-48.png create mode 100644 img/tmix.png (limited to 'img') diff --git a/img/crystal/audio-volume-error.png b/img/crystal/audio-volume-error.png new file mode 100644 index 0000000..05b2767 Binary files /dev/null and b/img/crystal/audio-volume-error.png differ diff --git a/img/crystal/audio-volume-high.png b/img/crystal/audio-volume-high.png new file mode 100644 index 0000000..2c091e6 Binary files /dev/null and b/img/crystal/audio-volume-high.png differ diff --git a/img/crystal/audio-volume-low.png b/img/crystal/audio-volume-low.png new file mode 100644 index 0000000..6d3a341 Binary files /dev/null and b/img/crystal/audio-volume-low.png differ diff --git a/img/crystal/audio-volume-medium.png b/img/crystal/audio-volume-medium.png new file mode 100644 index 0000000..8b85e0e Binary files /dev/null and b/img/crystal/audio-volume-medium.png differ diff --git a/img/crystal/audio-volume-muted.png b/img/crystal/audio-volume-muted.png new file mode 100644 index 0000000..4872861 Binary files /dev/null and b/img/crystal/audio-volume-muted.png differ diff --git a/img/mix_ac97.png b/img/mix_ac97.png new file mode 100644 index 0000000..a17d285 Binary files /dev/null and b/img/mix_ac97.png differ diff --git a/img/mix_audio.png b/img/mix_audio.png new file mode 100644 index 0000000..c6a10d2 Binary files /dev/null and b/img/mix_audio.png differ diff --git a/img/mix_bass.png b/img/mix_bass.png new file mode 100644 index 0000000..acfdee9 Binary files /dev/null and b/img/mix_bass.png differ diff --git a/img/mix_cd.png b/img/mix_cd.png new file mode 100644 index 0000000..7b5ca31 Binary files /dev/null and b/img/mix_cd.png differ diff --git a/img/mix_digital.png b/img/mix_digital.png new file mode 100644 index 0000000..ac8dd54 Binary files /dev/null and b/img/mix_digital.png differ diff --git a/img/mix_ext.png b/img/mix_ext.png new file mode 100644 index 0000000..885307f Binary files /dev/null and b/img/mix_ext.png differ diff --git a/img/mix_headphone.png b/img/mix_headphone.png new file mode 100644 index 0000000..f583cf1 Binary files /dev/null and b/img/mix_headphone.png differ diff --git a/img/mix_microphone.png b/img/mix_microphone.png new file mode 100644 index 0000000..9079b3e Binary files /dev/null and b/img/mix_microphone.png differ diff --git a/img/mix_microphone_recording.png b/img/mix_microphone_recording.png new file mode 100644 index 0000000..78763a3 Binary files /dev/null and b/img/mix_microphone_recording.png differ diff --git a/img/mix_midi.png b/img/mix_midi.png new file mode 100644 index 0000000..acba2cb Binary files /dev/null and b/img/mix_midi.png differ diff --git a/img/mix_record.png b/img/mix_record.png new file mode 100644 index 0000000..e92c3a3 Binary files /dev/null and b/img/mix_record.png differ diff --git a/img/mix_surround.png b/img/mix_surround.png new file mode 100644 index 0000000..8c335e5 Binary files /dev/null and b/img/mix_surround.png differ diff --git a/img/mix_unknown.png b/img/mix_unknown.png new file mode 100644 index 0000000..ee586e3 Binary files /dev/null and b/img/mix_unknown.png differ diff --git a/img/mix_video.png b/img/mix_video.png new file mode 100644 index 0000000..dd5b32e Binary files /dev/null and b/img/mix_video.png differ diff --git a/img/mix_volume.png b/img/mix_volume.png new file mode 100644 index 0000000..8d4b89d Binary files /dev/null and b/img/mix_volume.png differ diff --git a/img/mixer.png b/img/mixer.png new file mode 100644 index 0000000..cf5878d Binary files /dev/null and b/img/mixer.png differ diff --git a/img/tmix-16.png b/img/tmix-16.png new file mode 100644 index 0000000..80ea05a Binary files /dev/null and b/img/tmix-16.png differ diff --git a/img/tmix-32.png b/img/tmix-32.png new file mode 100644 index 0000000..aaaee39 Binary files /dev/null and b/img/tmix-32.png differ diff --git a/img/tmix-48.png b/img/tmix-48.png new file mode 100644 index 0000000..2c6beaa Binary files /dev/null and b/img/tmix-48.png differ diff --git a/img/tmix.png b/img/tmix.png new file mode 100644 index 0000000..48dc497 Binary files /dev/null and b/img/tmix.png differ -- cgit v1.2.3