user-controls: Add a fallback bus connection
This is a hack to allow `MctUserControls` to be used from `GtkBuilder` templates, where it’s not possible to pass construct-only properties in to the `MctUserControls` constructor. It’s not feasible to make `MctUserControls:dbus-connection` not construct-only, because it gets used to construct an `MctManager` which then subscribes to various signals. So for the cases where `MctUserControls` is used from a builder template, the code has to connect to the system bus manually, which is possibly (though unlikely) a blocking operation. This fixes a critical warning when enabling parental controls in gnome-initial-setup. Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
parent
6f09483b4c
commit
28992ac7f3
|
@ -728,6 +728,17 @@ mct_user_controls_constructed (GObject *object)
|
||||||
/* Chain up. */
|
/* Chain up. */
|
||||||
G_OBJECT_CLASS (mct_user_controls_parent_class)->constructed (object);
|
G_OBJECT_CLASS (mct_user_controls_parent_class)->constructed (object);
|
||||||
|
|
||||||
|
/* FIXME: Ideally there wouldn’t be this sync call in a constructor, but there
|
||||||
|
* seems to be no way around it if #MctUserControls is to be used from a
|
||||||
|
* GtkBuilder template: templates are initialised from within the parent
|
||||||
|
* widget’s init() function (not its constructed() function), so none of its
|
||||||
|
* properties will have been set and it won’t reasonably have been able to
|
||||||
|
* make an async call to initialise the bus connection itself. Binding
|
||||||
|
* construct-only properties in GtkBuilder doesn’t work (and wouldn’t help if
|
||||||
|
* it did). */
|
||||||
|
if (self->dbus_connection == NULL)
|
||||||
|
self->dbus_connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
|
||||||
|
|
||||||
g_assert (self->dbus_connection != NULL);
|
g_assert (self->dbus_connection != NULL);
|
||||||
self->manager = mct_manager_new (self->dbus_connection);
|
self->manager = mct_manager_new (self->dbus_connection);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue