output/PipeWire: add nullptr check to SetVolume()
If the PipeWire output has not yet been enabled and no thread_loop has been created yet, a nullptr dereference in SetVolume() was possible because nullptr was passed to pw_thread_loop_lock().
This commit is contained in:
parent
ecee6f415b
commit
4d6ae6ffdd
1
NEWS
1
NEWS
|
@ -6,6 +6,7 @@ ver 0.23.8 (not yet released)
|
||||||
* mixer
|
* mixer
|
||||||
- better error messages
|
- better error messages
|
||||||
- alsa: fix setting volume before playback starts
|
- alsa: fix setting volume before playback starts
|
||||||
|
- pipewire: fix crash bug
|
||||||
* support libfmt 9
|
* support libfmt 9
|
||||||
|
|
||||||
ver 0.23.7 (2022/05/09)
|
ver 0.23.7 (2022/05/09)
|
||||||
|
|
|
@ -312,6 +312,14 @@ PipeWireOutput::PipeWireOutput(const ConfigBlock &block)
|
||||||
void
|
void
|
||||||
PipeWireOutput::SetVolume(float _volume)
|
PipeWireOutput::SetVolume(float _volume)
|
||||||
{
|
{
|
||||||
|
if (thread_loop == nullptr) {
|
||||||
|
/* the mixer is open (because it is a "global" mixer),
|
||||||
|
but Enable() on this output has not yet been
|
||||||
|
called */
|
||||||
|
volume = _volume;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const PipeWire::ThreadLoopLock lock(thread_loop);
|
const PipeWire::ThreadLoopLock lock(thread_loop);
|
||||||
|
|
||||||
float newvol = _volume*_volume*_volume;
|
float newvol = _volume*_volume*_volume;
|
||||||
|
|
Loading…
Reference in New Issue