Network: refresh ui in an idle

This seems a lot safer than doing it directly from all kinds
of callbacks.
This commit is contained in:
Matthias Clasen 2011-05-25 08:54:35 -04:00
parent c390d4f36d
commit d4b88f12a6

View file

@ -62,6 +62,7 @@ struct _CcNetworkPanelPrivate
NMClient *client; NMClient *client;
NMRemoteSettings *remote_settings; NMRemoteSettings *remote_settings;
gboolean updating_device; gboolean updating_device;
guint refresh_idle;
}; };
enum { enum {
@ -1697,9 +1698,10 @@ nm_device_refresh_vpn_ui (CcNetworkPanel *panel, NetVpn *vpn)
net_vpn_get_password (vpn)); net_vpn_get_password (vpn));
} }
static void static gboolean
refresh_ui (CcNetworkPanel *panel) refresh_ui_idle (gpointer data)
{ {
CcNetworkPanel *panel = data;
GtkTreeSelection *selection; GtkTreeSelection *selection;
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model; GtkTreeModel *model;
@ -1776,7 +1778,18 @@ refresh_ui (CcNetworkPanel *panel)
nm_device_refresh_device_ui (panel, NET_DEVICE (object)); nm_device_refresh_device_ui (panel, NET_DEVICE (object));
} }
out: out:
priv->refresh_idle = 0;
return FALSE;
}
static void
refresh_ui (CcNetworkPanel *panel)
{
if (panel->priv->refresh_idle != 0)
return; return;
panel->priv->refresh_idle = g_idle_add (refresh_ui_idle, panel);
} }
static void static void