Atttempt to fix repeated fireing of first_time_only=yes events
fixup be665e29f1
This isn't the best fix, ideally the code wouldn't use weak_ptr::expired to check whether an event was already handled.
This commit is contained in:
parent
bcc0992daa
commit
c0bd6253c1
3 changed files with 3 additions and 3 deletions
|
@ -129,7 +129,7 @@ public:
|
|||
|
||||
void write_events(config& cfg) const;
|
||||
|
||||
using event_func_t = std::function<void(game_events::manager&, handler_ptr)>;
|
||||
using event_func_t = std::function<void(game_events::manager&, handler_ptr&)>;
|
||||
void execute_on_events(const std::string& event_id, event_func_t func);
|
||||
|
||||
game_events::wml_event_pump& pump();
|
||||
|
|
|
@ -329,7 +329,7 @@ void wml_menu_item::update_command(const config& new_command)
|
|||
if(!command_.empty()) {
|
||||
assert(resources::game_events);
|
||||
|
||||
resources::game_events->execute_on_events(event_name_, [&](game_events::manager& man, handler_ptr ptr) {
|
||||
resources::game_events->execute_on_events(event_name_, [&](game_events::manager& man, handler_ptr& ptr) {
|
||||
if(ptr->is_menu_item()) {
|
||||
LOG_NG << "Removing command for " << event_name_ << ".\n";
|
||||
man.remove_event_handler(command_["id"].str());
|
||||
|
|
|
@ -574,7 +574,7 @@ bool wml_event_pump::operator()()
|
|||
|
||||
if(event_id.empty()) {
|
||||
// Handle events of this name.
|
||||
impl_->my_manager->execute_on_events(event_name, [&](game_events::manager&, handler_ptr ptr) {
|
||||
impl_->my_manager->execute_on_events(event_name, [&](game_events::manager&, handler_ptr& ptr) {
|
||||
DBG_EH << "processing event " << event_name << " with id=" << ptr->get_config()["id"] << "\n";
|
||||
|
||||
// Let this handler process our event.
|
||||
|
|
Loading…
Add table
Reference in a new issue