void sdl_handler::join(context &c) { if (has_joined_global_) { leave_global(); } if(has_joined_) { leave(); // should not be in multiple event contexts } //join self c.add_handler(this); has_joined_ = true; //instruct members to join sdl_handler_vector members = handler_members(); if(!members.empty()) { for(sdl_handler_vector::iterator i = members.begin(); i != members.end(); ++i) { (*i)->join(c); } } }