region-panel: do not show Login button if localed is not available

Missing org.freedesktop.locale1 means priv->permission will not be set
and will trigger a segfault when used by set_login_button_visibility().
Unconditionally not display the Login button if localed is not available
since it will be useless anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=723550
This commit is contained in:
Antoine Jacoutot 2014-02-04 15:09:48 +01:00 committed by Rui Matos
parent 45893b62d8
commit c5268f8a4b

View file

@ -174,8 +174,9 @@ cc_region_panel_constructed (GObject *object)
G_OBJECT_CLASS (cc_region_panel_parent_class)->constructed (object);
cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (object)),
priv->login_button);
if (priv->permission)
cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (object)),
priv->login_button);
}
static const char *
@ -1746,8 +1747,16 @@ setup_login_button (CcRegionPanel *self)
CcRegionPanelPrivate *priv = self->priv;
GDBusConnection *bus;
gboolean loaded;
GError *error = NULL;
priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, &error);
if (priv->permission == NULL) {
g_warning ("Could not get 'org.freedesktop.locale1.set-locale' permission: %s",
error->message);
g_error_free (error);
return;
}
priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL);
bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
g_dbus_proxy_new (bus,
G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,