pipewire/0001-alsa-monitor-avoid-crash-in-release.patch
Troy Dawson 1f145d25d6 RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/pipewire#7a754f81002c002b9c5402b6788d8b0b30cda5b4
2020-10-14 16:02:38 -07:00

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