mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
alsa-monitor: avoid crash in release
Only try to release the device when we have a proxy. Fixes #310
This commit is contained in:
parent
d7714f734d
commit
81ca70af9b
1 changed files with 11 additions and 2 deletions
|
|
@ -594,6 +594,12 @@ static void reserve_acquired(void *data, struct rd_device *d)
|
||||||
rd_device_release(device->reserve);
|
rd_device_release(device->reserve);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void complete_release(struct device *device)
|
||||||
|
{
|
||||||
|
if (device->reserve)
|
||||||
|
rd_device_complete_release(device->reserve, true);
|
||||||
|
}
|
||||||
|
|
||||||
static void sync_complete_done(void *data, int seq)
|
static void sync_complete_done(void *data, int seq)
|
||||||
{
|
{
|
||||||
struct device *device = data;
|
struct device *device = data;
|
||||||
|
|
@ -605,8 +611,7 @@ static void sync_complete_done(void *data, int seq)
|
||||||
spa_hook_remove(&device->sync_listener);
|
spa_hook_remove(&device->sync_listener);
|
||||||
device->seq = 0;
|
device->seq = 0;
|
||||||
|
|
||||||
if (device->reserve)
|
complete_release(device);
|
||||||
rd_device_complete_release(device->reserve, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sync_destroy(void *data)
|
static void sync_destroy(void *data)
|
||||||
|
|
@ -627,6 +632,10 @@ static void reserve_release(void *data, struct rd_device *d, int forced)
|
||||||
struct device *device = data;
|
struct device *device = data;
|
||||||
|
|
||||||
pw_log_info("%p: reserve release", device);
|
pw_log_info("%p: reserve release", device);
|
||||||
|
if (device->sdevice == NULL || device->sdevice->obj.proxy == NULL) {
|
||||||
|
complete_release(device);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
set_profile(device, 0);
|
set_profile(device, 0);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue