Fixed: bind to master thread for Player.on_eos()