Figure when interfaces disappear
This commit is contained in:
parent
965249b8af
commit
135c118683
|
@ -43,6 +43,7 @@ typedef struct _NetworkInterface
|
||||||
unsigned long ibytes;
|
unsigned long ibytes;
|
||||||
unsigned long obytes;
|
unsigned long obytes;
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
|
gboolean updated;
|
||||||
} NetworkInterface;
|
} NetworkInterface;
|
||||||
|
|
||||||
typedef struct _PanelApplet
|
typedef struct _PanelApplet
|
||||||
|
@ -134,6 +135,8 @@ static int _refresh_interface_add(Network * network, char const * name,
|
||||||
static void _refresh_interface_delete(Network * network, size_t i);
|
static void _refresh_interface_delete(Network * network, size_t i);
|
||||||
static void _refresh_interface_flags(Network * network, NetworkInterface * ni,
|
static void _refresh_interface_flags(Network * network, NetworkInterface * ni,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
static void _refresh_purge(Network * network);
|
||||||
|
static void _refresh_reset(Network * network);
|
||||||
|
|
||||||
static void _network_refresh(Network * network)
|
static void _network_refresh(Network * network)
|
||||||
{
|
{
|
||||||
|
@ -156,6 +159,7 @@ static void _network_refresh(Network * network)
|
||||||
#ifdef __NetBSD__
|
#ifdef __NetBSD__
|
||||||
if(getifaddrs(&ifa) != 0)
|
if(getifaddrs(&ifa) != 0)
|
||||||
return;
|
return;
|
||||||
|
_refresh_reset(network);
|
||||||
for(; ifa != NULL; ifa = ifa->ifa_next)
|
for(; ifa != NULL; ifa = ifa->ifa_next)
|
||||||
{
|
{
|
||||||
_refresh_interface(network, ifa->ifa_name, ifa->ifa_flags);
|
_refresh_interface(network, ifa->ifa_name, ifa->ifa_flags);
|
||||||
|
@ -166,6 +170,7 @@ static void _network_refresh(Network * network)
|
||||||
}
|
}
|
||||||
/* FIXME also remove/disable the interfaces not listed */
|
/* FIXME also remove/disable the interfaces not listed */
|
||||||
freeifaddrs(ifa);
|
freeifaddrs(ifa);
|
||||||
|
_refresh_purge(network);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,6 +215,7 @@ static int _refresh_interface_add(Network * network, char const * name,
|
||||||
#if GTK_CHECK_VERSION(2, 12, 0)
|
#if GTK_CHECK_VERSION(2, 12, 0)
|
||||||
gtk_widget_set_tooltip_text(p->widget, name);
|
gtk_widget_set_tooltip_text(p->widget, name);
|
||||||
#endif
|
#endif
|
||||||
|
p->updated = FALSE;
|
||||||
_refresh_interface_flags(network, p, flags);
|
_refresh_interface_flags(network, p, flags);
|
||||||
gtk_box_pack_start(GTK_BOX(network->widget), p->widget, FALSE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(network->widget), p->widget, FALSE, TRUE, 0);
|
||||||
gtk_widget_show(p->widget);
|
gtk_widget_show(p->widget);
|
||||||
|
@ -285,6 +291,25 @@ static void _refresh_interface_flags(Network * network, NetworkInterface * ni,
|
||||||
gtk_image_set_from_icon_name(GTK_IMAGE(ni->widget), icon,
|
gtk_image_set_from_icon_name(GTK_IMAGE(ni->widget), icon,
|
||||||
network->helper->icon_size);
|
network->helper->icon_size);
|
||||||
ni->flags = flags;
|
ni->flags = flags;
|
||||||
|
ni->updated = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _refresh_purge(Network * network)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for(i = 0; i < network->interfaces_cnt; i++)
|
||||||
|
if(network->interfaces[i].updated == FALSE)
|
||||||
|
/* FIXME do not increment i once really implemented */
|
||||||
|
_refresh_interface_delete(network, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _refresh_reset(Network * network)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for(i = 0; i < network->interfaces_cnt; i++)
|
||||||
|
network->interfaces[i].updated = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user