I believe we should keep the bools so that if you call Source::Remove (directly, or on destruction) during the callback, then the Remove will not destroy the GSource immediately, and will cause the callback to return false to destroy when it's complete.
I believe we should keep the bools so that if you call Source::Remove (directly, or on destruction) during the callback, then the Remove will not destroy the GSource immediately, and will cause the callback to return false to destroy when it's complete.