From 38d36f1921d2433c71a0fe1bca596f9260f36bf7 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 11 Mar 2021 10:22:33 +0100 Subject: [PATCH] media-session: improve saved profile restore We only want to restore the saved profile when it is available, when it is not available and there was no change in best profile, leave the profile as it is. --- src/examples/media-session/default-profile.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/examples/media-session/default-profile.c b/src/examples/media-session/default-profile.c index 659269611..2658f59ed 100644 --- a/src/examples/media-session/default-profile.c +++ b/src/examples/media-session/default-profile.c @@ -307,9 +307,11 @@ static int handle_profile_switch(struct device *dev) res = find_saved_profile(dev, &saved); if (res >= 0) { /* we found a saved profile */ - if (saved.available == SPA_PARAM_AVAILABILITY_no && changed) { + if (saved.available == SPA_PARAM_AVAILABILITY_no) { pw_log_info("device '%s': saved profile '%s' unavailable", dev->name, saved.name); + if (!changed) + best.index = SPA_ID_INVALID; } else { pw_log_info("device '%s': found saved profile '%s'", dev->name, saved.name); @@ -330,9 +332,11 @@ static int handle_profile_switch(struct device *dev) dev->name, best.name, best.index); set_profile(dev, &best); } - } else { + } else if (res < 0) { pw_log_warn("device '%s': can't restore profile: %s", dev->name, spa_strerror(res)); + } else { + pw_log_info("device '%s': no profile switch needed", dev->name); } return 0; }