wmwifi: Display interface/essid in 2-second intervals
Base the decision to display either the interface name or essid on a time interval rather than how many times the update() function is called. The time interval is chosen to be 2 seconds. The old logic would swap the display after update() was called 50 times. If 'interval' between updates is a sane value around 1 second, it would take 50 seconds to swap the name on display.
This commit is contained in:
parent
1e34ea7f98
commit
dd5d59b8f9
|
@ -66,6 +66,8 @@ struct theme tcur;
|
||||||
struct theme blgt;
|
struct theme blgt;
|
||||||
struct wifi lwfi;
|
struct wifi lwfi;
|
||||||
time_t last_update = 0;
|
time_t last_update = 0;
|
||||||
|
time_t last_swap = 0;
|
||||||
|
time_t now = 0;
|
||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static void update(struct wifi *wfi);
|
static void update(struct wifi *wfi);
|
||||||
|
@ -201,6 +203,8 @@ static void update(struct wifi *wfi)
|
||||||
//char *str = calloc(1, sizeof(wfi->ifname) + sizeof(wfi->essid) + 3);
|
//char *str = calloc(1, sizeof(wfi->ifname) + sizeof(wfi->essid) + 3);
|
||||||
char str[512];
|
char str[512];
|
||||||
|
|
||||||
|
now = time(NULL);
|
||||||
|
|
||||||
/* get current link level from /proc/net/wireless */
|
/* get current link level from /proc/net/wireless */
|
||||||
copy_wifi(&lwfi, wfi);
|
copy_wifi(&lwfi, wfi);
|
||||||
get_wifi_info(wfi);
|
get_wifi_info(wfi);
|
||||||
|
@ -260,12 +264,15 @@ static void update(struct wifi *wfi)
|
||||||
if (count > (strlen(str) * 3))
|
if (count > (strlen(str) * 3))
|
||||||
count = 1;
|
count = 1;
|
||||||
} else {
|
} else {
|
||||||
if (count < 50)
|
int diff = now - last_swap;
|
||||||
sw = 1;
|
/* swap between ifname and essid every 2 seconds */
|
||||||
if (count >= 50)
|
if (diff <= 2)
|
||||||
sw = 2;
|
sw = 1;
|
||||||
if (count == 100)
|
else if ((diff > 2) && (diff <= 4))
|
||||||
count = -1;
|
sw = 2;
|
||||||
|
else
|
||||||
|
last_swap = now;
|
||||||
|
|
||||||
switch (sw) {
|
switch (sw) {
|
||||||
case 1:
|
case 1:
|
||||||
dockapp_copyarea(display_link, pixmap, 0, 0, 58, 12, 0, 0);
|
dockapp_copyarea(display_link, pixmap, 0, 0, 58, 12, 0, 0);
|
||||||
|
|
Loading…
Reference in a new issue