It also might be helpful to include a short comment at the start of this function that describes:

1. This function is a GIOFunc and may be called directly or via an IO watch
2. Mention that the return value controls whether the watch stays active ( TRUE ), or is removed ( FALSE )