Allow widget_network() to be destroyed -- avoid allowing widget_network_recv()/send() if it's destroyed
This commit is contained in:
@ -32,12 +32,18 @@ static void widget_network_recv_clear(void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void widget_network_send() {
|
void widget_network_send() {
|
||||||
|
if (!widget_network)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!send_timer)
|
if (!send_timer)
|
||||||
send_timer=mgos_set_timer(100, 0, widget_network_send_clear, NULL);
|
send_timer=mgos_set_timer(100, 0, widget_network_send_clear, NULL);
|
||||||
widget_network_ev(EV_WIDGET_REDRAW, widget_network, NULL);
|
widget_network_ev(EV_WIDGET_REDRAW, widget_network, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void widget_network_recv() {
|
void widget_network_recv() {
|
||||||
|
if (!widget_network)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!recv_timer)
|
if (!recv_timer)
|
||||||
recv_timer=mgos_set_timer(100, 0, widget_network_recv_clear, NULL);
|
recv_timer=mgos_set_timer(100, 0, widget_network_recv_clear, NULL);
|
||||||
widget_network_ev(EV_WIDGET_REDRAW, widget_network, NULL);
|
widget_network_ev(EV_WIDGET_REDRAW, widget_network, NULL);
|
||||||
@ -58,6 +64,10 @@ void widget_network_ev(int ev, struct widget_t *w, void *ev_data) {
|
|||||||
case EV_WIDGET_TOUCH_UP:
|
case EV_WIDGET_TOUCH_UP:
|
||||||
case EV_WIDGET_TOUCH_DOWN:
|
case EV_WIDGET_TOUCH_DOWN:
|
||||||
case EV_WIDGET_DESTROY:
|
case EV_WIDGET_DESTROY:
|
||||||
|
widget_network=NULL;
|
||||||
|
send_timer=0;
|
||||||
|
recv_timer=0;
|
||||||
|
break;
|
||||||
default: // EV_WIDGET_NONE
|
default: // EV_WIDGET_NONE
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user