mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
restore: change 'save' flag behaviour to reflect whether an entry shall and/or is in the on-disk databases
This commit is contained in:
parent
25e5197f6a
commit
c4d90ea986
4 changed files with 39 additions and 33 deletions
|
|
@ -199,7 +199,7 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new
|
||||||
if (!new_data->active_profile) {
|
if (!new_data->active_profile) {
|
||||||
pa_log_info("Restoring profile for card %s.", new_data->name);
|
pa_log_info("Restoring profile for card %s.", new_data->name);
|
||||||
pa_card_new_data_set_profile(new_data, e->profile);
|
pa_card_new_data_set_profile(new_data, e->profile);
|
||||||
new_data->save_profile = FALSE;
|
new_data->save_profile = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring profile for card %s, because already set.", new_data->name);
|
pa_log_debug("Not restoring profile for card %s, because already set.", new_data->name);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -296,10 +296,10 @@ static pa_hook_result_t sink_new_hook_callback(pa_core *c, pa_sink_new_data *new
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
if (!u->restore_port)
|
pa_assert(u->restore_port);
|
||||||
return PA_HOOK_OK;
|
|
||||||
|
|
||||||
name = pa_sprintf_malloc("sink:%s", new_data->name);
|
name = pa_sprintf_malloc("sink:%s", new_data->name);
|
||||||
|
|
||||||
|
|
@ -309,7 +309,7 @@ static pa_hook_result_t sink_new_hook_callback(pa_core *c, pa_sink_new_data *new
|
||||||
if (!new_data->active_port) {
|
if (!new_data->active_port) {
|
||||||
pa_log_info("Restoring port for sink %s.", name);
|
pa_log_info("Restoring port for sink %s.", name);
|
||||||
pa_sink_new_data_set_port(new_data, e->port);
|
pa_sink_new_data_set_port(new_data, e->port);
|
||||||
new_data->save_port = FALSE;
|
new_data->save_port = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring port for sink %s, because already set.", name);
|
pa_log_debug("Not restoring port for sink %s, because already set.", name);
|
||||||
}
|
}
|
||||||
|
|
@ -326,7 +326,10 @@ static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data *
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
|
pa_assert(u->restore_volume || u->restore_muted);
|
||||||
|
|
||||||
name = pa_sprintf_malloc("sink:%s", new_data->name);
|
name = pa_sprintf_malloc("sink:%s", new_data->name);
|
||||||
|
|
||||||
|
|
@ -343,7 +346,7 @@ static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data *
|
||||||
pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
|
pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
|
||||||
pa_sink_new_data_set_volume(new_data, &v);
|
pa_sink_new_data_set_volume(new_data, &v);
|
||||||
|
|
||||||
new_data->save_volume = FALSE;
|
new_data->save_volume = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring volume for sink %s, because already set.", new_data->name);
|
pa_log_debug("Not restoring volume for sink %s, because already set.", new_data->name);
|
||||||
}
|
}
|
||||||
|
|
@ -353,7 +356,7 @@ static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data *
|
||||||
if (!new_data->muted_is_set) {
|
if (!new_data->muted_is_set) {
|
||||||
pa_log_info("Restoring mute state for sink %s.", new_data->name);
|
pa_log_info("Restoring mute state for sink %s.", new_data->name);
|
||||||
pa_sink_new_data_set_muted(new_data, e->muted);
|
pa_sink_new_data_set_muted(new_data, e->muted);
|
||||||
new_data->save_muted = FALSE;
|
new_data->save_muted = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring mute state for sink %s, because already set.", new_data->name);
|
pa_log_debug("Not restoring mute state for sink %s, because already set.", new_data->name);
|
||||||
}
|
}
|
||||||
|
|
@ -370,10 +373,10 @@ static pa_hook_result_t source_new_hook_callback(pa_core *c, pa_source_new_data
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
if (!u->restore_port)
|
pa_assert(u->restore_port);
|
||||||
return PA_HOOK_OK;
|
|
||||||
|
|
||||||
name = pa_sprintf_malloc("source:%s", new_data->name);
|
name = pa_sprintf_malloc("source:%s", new_data->name);
|
||||||
|
|
||||||
|
|
@ -383,7 +386,7 @@ static pa_hook_result_t source_new_hook_callback(pa_core *c, pa_source_new_data
|
||||||
if (!new_data->active_port) {
|
if (!new_data->active_port) {
|
||||||
pa_log_info("Restoring port for source %s.", name);
|
pa_log_info("Restoring port for source %s.", name);
|
||||||
pa_source_new_data_set_port(new_data, e->port);
|
pa_source_new_data_set_port(new_data, e->port);
|
||||||
new_data->save_port = FALSE;
|
new_data->save_port = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring port for source %s, because already set.", name);
|
pa_log_debug("Not restoring port for source %s, because already set.", name);
|
||||||
}
|
}
|
||||||
|
|
@ -400,7 +403,10 @@ static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_da
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
|
pa_assert(u->restore_volume || u->restore_muted);
|
||||||
|
|
||||||
name = pa_sprintf_malloc("source:%s", new_data->name);
|
name = pa_sprintf_malloc("source:%s", new_data->name);
|
||||||
|
|
||||||
|
|
@ -417,7 +423,7 @@ static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_da
|
||||||
pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
|
pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
|
||||||
pa_source_new_data_set_volume(new_data, &v);
|
pa_source_new_data_set_volume(new_data, &v);
|
||||||
|
|
||||||
new_data->save_volume = FALSE;
|
new_data->save_volume = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring volume for source %s, because already set.", new_data->name);
|
pa_log_debug("Not restoring volume for source %s, because already set.", new_data->name);
|
||||||
}
|
}
|
||||||
|
|
@ -427,7 +433,7 @@ static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_da
|
||||||
if (!new_data->muted_is_set) {
|
if (!new_data->muted_is_set) {
|
||||||
pa_log_info("Restoring mute state for source %s.", new_data->name);
|
pa_log_info("Restoring mute state for source %s.", new_data->name);
|
||||||
pa_source_new_data_set_muted(new_data, e->muted);
|
pa_source_new_data_set_muted(new_data, e->muted);
|
||||||
new_data->save_muted = FALSE;
|
new_data->save_muted = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring mute state for source %s, because already set.", new_data->name);
|
pa_log_debug("Not restoring mute state for source %s, because already set.", new_data->name);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,14 +65,14 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SINK)) || target == sink) {
|
if (!(target = pa_namereg_get_default_sink(c)) || target == sink) {
|
||||||
|
|
||||||
PA_IDXSET_FOREACH(target, c->sinks, idx)
|
PA_IDXSET_FOREACH(target, c->sinks, idx)
|
||||||
if (target != sink)
|
if (target != sink)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!target) {
|
if (!target) {
|
||||||
pa_log_info("No evacuation sink found.");
|
pa_log_debug("No evacuation sink found.");
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +108,7 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SOURCE)) || target == source) {
|
if (!(target = pa_namereg_get_default_source(c)) || target == source) {
|
||||||
|
|
||||||
PA_IDXSET_FOREACH(target, c->sources, idx)
|
PA_IDXSET_FOREACH(target, c->sources, idx)
|
||||||
if (target != source && !target->monitor_of == !source->monitor_of)
|
if (target != source && !target->monitor_of == !source->monitor_of)
|
||||||
|
|
|
||||||
|
|
@ -353,10 +353,10 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
if (!u->restore_device)
|
pa_assert(u->restore_device);
|
||||||
return PA_HOOK_OK;
|
|
||||||
|
|
||||||
if (!(name = get_name(new_data->proplist, "sink-input")))
|
if (!(name = get_name(new_data->proplist, "sink-input")))
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
|
|
@ -370,9 +370,9 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
|
||||||
if (!new_data->sink) {
|
if (!new_data->sink) {
|
||||||
pa_log_info("Restoring device for stream %s.", name);
|
pa_log_info("Restoring device for stream %s.", name);
|
||||||
new_data->sink = s;
|
new_data->sink = s;
|
||||||
new_data->save_sink = FALSE;
|
new_data->save_sink = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_info("Not restoring device for stream %s, because already set.", name);
|
pa_log_debug("Not restoring device for stream %s, because already set.", name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -388,10 +388,10 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
if (!u->restore_volume && !u->restore_muted)
|
pa_assert(u->restore_volume || u->restore_muted);
|
||||||
return PA_HOOK_OK;
|
|
||||||
|
|
||||||
if (!(name = get_name(new_data->proplist, "sink-input")))
|
if (!(name = get_name(new_data->proplist, "sink-input")))
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
|
|
@ -410,7 +410,7 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
|
||||||
pa_sink_input_new_data_set_volume(new_data, &v);
|
pa_sink_input_new_data_set_volume(new_data, &v);
|
||||||
|
|
||||||
new_data->volume_is_absolute = FALSE;
|
new_data->volume_is_absolute = FALSE;
|
||||||
new_data->save_volume = FALSE;
|
new_data->save_volume = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring volume for sink input %s, because already set.", name);
|
pa_log_debug("Not restoring volume for sink input %s, because already set.", name);
|
||||||
}
|
}
|
||||||
|
|
@ -420,7 +420,7 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
|
||||||
if (!new_data->muted_is_set) {
|
if (!new_data->muted_is_set) {
|
||||||
pa_log_info("Restoring mute state for sink input %s.", name);
|
pa_log_info("Restoring mute state for sink input %s.", name);
|
||||||
pa_sink_input_new_data_set_muted(new_data, e->muted);
|
pa_sink_input_new_data_set_muted(new_data, e->muted);
|
||||||
new_data->save_muted = FALSE;
|
new_data->save_muted = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_debug("Not restoring mute state for sink input %s, because already set.", name);
|
pa_log_debug("Not restoring mute state for sink input %s, because already set.", name);
|
||||||
}
|
}
|
||||||
|
|
@ -437,10 +437,10 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
|
||||||
char *name;
|
char *name;
|
||||||
struct entry *e;
|
struct entry *e;
|
||||||
|
|
||||||
|
pa_assert(c);
|
||||||
pa_assert(new_data);
|
pa_assert(new_data);
|
||||||
|
pa_assert(u);
|
||||||
if (!u->restore_device)
|
pa_assert(u->restore_device);
|
||||||
return PA_HOOK_OK;
|
|
||||||
|
|
||||||
if (new_data->direct_on_input)
|
if (new_data->direct_on_input)
|
||||||
return PA_HOOK_OK;
|
return PA_HOOK_OK;
|
||||||
|
|
@ -456,9 +456,9 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
|
||||||
if (!new_data->source) {
|
if (!new_data->source) {
|
||||||
pa_log_info("Restoring device for stream %s.", name);
|
pa_log_info("Restoring device for stream %s.", name);
|
||||||
new_data->source = s;
|
new_data->source = s;
|
||||||
new_data->save_source = FALSE;
|
new_data->save_source = TRUE;
|
||||||
} else
|
} else
|
||||||
pa_log_info("Not restoring device for stream %s, because already set", name);
|
pa_log_debug("Not restoring device for stream %s, because already set", name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -829,10 +829,10 @@ int pa__init(pa_module*m) {
|
||||||
pa_log_info("Sucessfully opened database file '%s'.", fname);
|
pa_log_info("Sucessfully opened database file '%s'.", fname);
|
||||||
pa_xfree(fname);
|
pa_xfree(fname);
|
||||||
|
|
||||||
for (si = pa_idxset_first(m->core->sink_inputs, &idx); si; si = pa_idxset_next(m->core->sink_inputs, &idx))
|
PA_IDXSET_FOREACH(si, m->core->sink_inputs, idx)
|
||||||
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW, si->index, u);
|
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW, si->index, u);
|
||||||
|
|
||||||
for (so = pa_idxset_first(m->core->source_outputs, &idx); so; so = pa_idxset_next(m->core->source_outputs, &idx))
|
PA_IDXSET_FOREACH(so, m->core->source_outputs, idx)
|
||||||
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_NEW, so->index, u);
|
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_NEW, so->index, u);
|
||||||
|
|
||||||
pa_modargs_free(ma);
|
pa_modargs_free(ma);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue