1f145d25d6
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/pipewire#7a754f81002c002b9c5402b6788d8b0b30cda5b4
54 lines
1.5 KiB
Diff
54 lines
1.5 KiB
Diff
From 81ca70af9bb6c60e2998b4aaf939b82eba257472 Mon Sep 17 00:00:00 2001
|
|
From: Wim Taymans <wtaymans@redhat.com>
|
|
Date: Mon, 28 Sep 2020 18:23:23 +0200
|
|
Subject: [PATCH] alsa-monitor: avoid crash in release
|
|
|
|
Only try to release the device when we have a proxy.
|
|
|
|
Fixes #310
|
|
---
|
|
src/examples/media-session/alsa-monitor.c | 13 +++++++++++--
|
|
1 file changed, 11 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/examples/media-session/alsa-monitor.c b/src/examples/media-session/alsa-monitor.c
|
|
index a27370b8..6154d4ca 100644
|
|
--- a/src/examples/media-session/alsa-monitor.c
|
|
+++ b/src/examples/media-session/alsa-monitor.c
|
|
@@ -594,6 +594,12 @@ static void reserve_acquired(void *data, struct rd_device *d)
|
|
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)
|
|
{
|
|
struct device *device = data;
|
|
@@ -605,8 +611,7 @@ static void sync_complete_done(void *data, int seq)
|
|
spa_hook_remove(&device->sync_listener);
|
|
device->seq = 0;
|
|
|
|
- if (device->reserve)
|
|
- rd_device_complete_release(device->reserve, true);
|
|
+ complete_release(device);
|
|
}
|
|
|
|
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;
|
|
|
|
pw_log_info("%p: reserve release", device);
|
|
+ if (device->sdevice == NULL || device->sdevice->obj.proxy == NULL) {
|
|
+ complete_release(device);
|
|
+ return;
|
|
+ }
|
|
|
|
set_profile(device, 0);
|
|
|
|
--
|
|
2.26.2
|
|
|