daemon/sysroot: Emit UPDATED signal for configs
Let's also make sure we refresh `RPMOSTreeOS` objects when configs changed. Specifically, what they export to their D-Bus interfaces may be dependent on daemon settings, as is the case with auto-updates. We might want to decouple this into two separate signals in the future (one for sysroot changes, and one for config changes), though given that only `RPMOSTreeOS` listens for `UPDATED` right now, we can just get away with a single one for the time being. Closes: #1261 Approved by: cgwalters
This commit is contained in:
parent
df80e15002
commit
55040a56ad
@ -409,6 +409,7 @@ handle_unregister_client (RPMOSTreeSysroot *object,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* remap relevant daemon configs to D-Bus properties */
|
||||
static gboolean
|
||||
reset_config_properties (RpmostreedSysroot *self,
|
||||
GError **error)
|
||||
@ -438,9 +439,15 @@ handle_reload_config (RPMOSTreeSysroot *object,
|
||||
if (changed && !reset_config_properties (self, error))
|
||||
goto out;
|
||||
|
||||
if (!rpmostreed_sysroot_reload (self, error))
|
||||
gboolean sysroot_changed;
|
||||
if (!rpmostreed_sysroot_reload (self, &sysroot_changed, error))
|
||||
goto out;
|
||||
|
||||
/* also send an UPDATED signal if configs changed to cause OS interfaces to reload; we do
|
||||
* it here if not done already in `rpmostreed_sysroot_reload` */
|
||||
if (changed && !sysroot_changed)
|
||||
g_signal_emit (self, signals[UPDATED], 0);
|
||||
|
||||
rpmostree_sysroot_complete_reload_config (object, invocation);
|
||||
out:
|
||||
if (local_error)
|
||||
@ -683,6 +690,7 @@ rpmostreed_sysroot_class_init (RpmostreedSysrootClass *klass)
|
||||
|
||||
gboolean
|
||||
rpmostreed_sysroot_reload (RpmostreedSysroot *self,
|
||||
gboolean *out_changed,
|
||||
GError **error)
|
||||
{
|
||||
gboolean ret = FALSE;
|
||||
@ -695,6 +703,8 @@ rpmostreed_sysroot_reload (RpmostreedSysroot *self,
|
||||
goto out;
|
||||
|
||||
ret = TRUE;
|
||||
if (out_changed)
|
||||
*out_changed = did_change;
|
||||
out:
|
||||
if (ret && did_change)
|
||||
g_signal_emit (self, signals[UPDATED], 0);
|
||||
@ -713,7 +723,7 @@ on_deploy_changed (GFileMonitor *monitor,
|
||||
|
||||
if (event_type == G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED)
|
||||
{
|
||||
if (!rpmostreed_sysroot_reload (self, &error))
|
||||
if (!rpmostreed_sysroot_reload (self, NULL, &error))
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ gboolean rpmostreed_sysroot_populate (RpmostreedSysroot *self
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
gboolean rpmostreed_sysroot_reload (RpmostreedSysroot *self,
|
||||
gboolean *out_changed,
|
||||
GError **error);
|
||||
|
||||
OstreeSysroot * rpmostreed_sysroot_get_root (RpmostreedSysroot *self);
|
||||
|
@ -326,7 +326,7 @@ transaction_execute_done_cb (GObject *source_object,
|
||||
success = g_task_propagate_boolean (G_TASK (result), &local_error);
|
||||
if (success)
|
||||
{
|
||||
if (!rpmostreed_sysroot_reload (rpmostreed_sysroot_get (), &local_error))
|
||||
if (!rpmostreed_sysroot_reload (rpmostreed_sysroot_get (), NULL, &local_error))
|
||||
success = FALSE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user