restore: change 'save' flag behaviour to reflect whether an entry shall and/or is in the on-disk databases

This commit is contained in:
Lennart Poettering 2009-06-22 22:33:09 +02:00
parent 25e5197f6a
commit c4d90ea986
4 changed files with 39 additions and 33 deletions

View file

@ -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);

View file

@ -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);
} }

View file

@ -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)

View file

@ -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);