mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-05 20:38:03 +02:00
policy-device-profile: always consider the stored default profile when re-evaluating
Fixes: #179
This commit is contained in:
parent
6954105589
commit
d7f17104bf
1 changed files with 8 additions and 35 deletions
|
|
@ -123,28 +123,6 @@ function findBestProfile (device)
|
|||
return nil
|
||||
end
|
||||
|
||||
function handleActiveProfile (device, dev_id, dev_name)
|
||||
-- Get active profile
|
||||
local profile = nil
|
||||
for p in device:iterate_params("Profile") do
|
||||
profile = parseParam(p, "Profile")
|
||||
end
|
||||
if profile == nil then
|
||||
Log.info ("Cannot find active profile for device " .. dev_name)
|
||||
return false
|
||||
end
|
||||
|
||||
-- Update if it has changed
|
||||
if self.active_profiles[dev_id] == nil or
|
||||
self.active_profiles[dev_id].index ~= profile.index then
|
||||
self.active_profiles[dev_id] = profile
|
||||
Log.info ("Active profile changed to " .. profile.name .. " in " .. dev_name)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function handleBestProfile (device, dev_id, dev_name)
|
||||
-- Find best profile
|
||||
local profile = findBestProfile (device)
|
||||
|
|
@ -168,7 +146,6 @@ function handleProfiles (device, new_device)
|
|||
local dev_id = device["bound-id"]
|
||||
local dev_name = device.properties["device.name"]
|
||||
|
||||
local active_changed = handleActiveProfile (device, dev_id, dev_name)
|
||||
local def_profile = findDefaultProfile (device)
|
||||
|
||||
-- Do not do anything if active profile is both persistent and default
|
||||
|
|
@ -183,20 +160,16 @@ function handleProfiles (device, new_device)
|
|||
return
|
||||
end
|
||||
|
||||
-- Set default device if active profile changed to off
|
||||
if active_changed and self.active_profiles[dev_id] ~= nil and
|
||||
self.active_profiles[dev_id].name == "off" then
|
||||
if def_profile ~= nil then
|
||||
if def_profile.available == "no" then
|
||||
Log.info ("Default profile " .. def_profile.name .. " unavailable for " .. dev_name)
|
||||
else
|
||||
Log.info ("Found default profile " .. def_profile.name .. " for " .. dev_name)
|
||||
setDeviceProfile (device, dev_id, dev_name, def_profile)
|
||||
return
|
||||
end
|
||||
if def_profile ~= nil then
|
||||
if def_profile.available == "no" then
|
||||
Log.info ("Default profile " .. def_profile.name .. " unavailable for " .. dev_name)
|
||||
else
|
||||
Log.info ("Default profile not found for " .. dev_name)
|
||||
Log.info ("Found default profile " .. def_profile.name .. " for " .. dev_name)
|
||||
setDeviceProfile (device, dev_id, dev_name, def_profile)
|
||||
return
|
||||
end
|
||||
else
|
||||
Log.info ("Default profile not found for " .. dev_name)
|
||||
end
|
||||
|
||||
-- Otherwise just set the best profile if changed
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue