|
|
|
@ -372,6 +372,12 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
|
if (res == TF_RENEW) { |
|
|
|
|
renew_id_listener(ilst); |
|
|
|
|
} |
|
|
|
|
else if (res == TF_CLOSE) { |
|
|
|
|
// Set userdata to NULL to avoid calling user for cleanup
|
|
|
|
|
ilst->userdata = NULL; |
|
|
|
|
ilst->userdata2 = NULL; |
|
|
|
|
cleanup_id_listener(tf, i, ilst); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -389,8 +395,12 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
|
res = tlst->fn(tf, &msg); |
|
|
|
|
|
|
|
|
|
if (res != TF_NEXT) { |
|
|
|
|
// if it's TF_CLOSE, we assume user already cleaned up userdata
|
|
|
|
|
// TF_RENEW doesn't make sense here because type listeners don't expire
|
|
|
|
|
// type listeners don't have userdata.
|
|
|
|
|
// TF_RENEW doesn't make sense here because type listeners don't expire = same as TF_STAY
|
|
|
|
|
|
|
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
cleanup_type_listener(tf, i, tlst); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -404,8 +414,16 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
|
res = glst->fn(tf, &msg); |
|
|
|
|
|
|
|
|
|
if (res != TF_NEXT) { |
|
|
|
|
// if it's TF_CLOSE, we assume user already cleaned up userdata
|
|
|
|
|
// TF_RENEW doesn't make sense here because generic listeners don't expire
|
|
|
|
|
// generic listeners don't have userdata.
|
|
|
|
|
// TF_RENEW doesn't make sense here because generic listeners don't expire = same as TF_STAY
|
|
|
|
|
|
|
|
|
|
// note: It's not expected that user will have multiple generic listeners, or
|
|
|
|
|
// ever actually remove them. They're most useful as default callbacks if no other listener
|
|
|
|
|
// handled the message.
|
|
|
|
|
|
|
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
cleanup_generic_listener(tf, i, glst); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|