diff --git a/src/daemon/media-session.d/alsa-monitor.conf b/src/daemon/media-session.d/alsa-monitor.conf index cb260a70e..a6090c9b2 100644 --- a/src/daemon/media-session.d/alsa-monitor.conf +++ b/src/daemon/media-session.d/alsa-monitor.conf @@ -6,6 +6,9 @@ properties = { # not used by the session manager, in order to be able to # connect to the real JACK server. #alsa.jack-device = false + + # Reserve devices. + #alsa.reserve = true } rules = [ diff --git a/src/examples/media-session/alsa-monitor.c b/src/examples/media-session/alsa-monitor.c index 24e39f885..d40e3a4bc 100644 --- a/src/examples/media-session/alsa-monitor.c +++ b/src/examples/media-session/alsa-monitor.c @@ -1026,12 +1026,15 @@ int sm_alsa_monitor_start(struct sm_media_session *session) if ((str = pw_properties_get(impl->conf, "properties")) != NULL) pw_properties_update_string(impl->props, str, strlen(str)); - if (session->dbus_connection) - impl->conn = spa_dbus_connection_get(session->dbus_connection); - if (impl->conn == NULL) - pw_log_warn("no dbus connection, device reservation disabled"); - else - pw_log_debug("got dbus connection %p", impl->conn); + if ((str = pw_properties_get(impl->props, "alsa.reserve")) == NULL || + pw_properties_parse_bool(str)) { + if (session->dbus_connection) + impl->conn = spa_dbus_connection_get(session->dbus_connection); + if (impl->conn == NULL) + pw_log_warn("no dbus connection, device reservation disabled"); + else + pw_log_debug("got dbus connection %p", impl->conn); + } impl->handle = pw_context_load_spa_handle(context, SPA_NAME_API_ALSA_ENUM_UDEV, NULL); if (impl->handle == NULL) {