when to safely use removeFrameListener

Anything and everything that's related to OGRE or the wider graphics field that doesn't fit into the other forums.
Post Reply
[nighthawk]
Gnoblar
Posts: 4
Joined: Tue Oct 10, 2017 2:04 am

when to safely use removeFrameListener

Post by [nighthawk] »

Since all program events are usually handled on FrameStarted, ...ended, etc events, removing frame listener might cause ogre to crash.
I suggest to modify _fireFrameStarted (and similar functions) to take into consideration event removal.
Perhaps this (or something similar) can help:

bool Root::_fireFrameStarted(FrameEvent& evt)
{
OgreProfileBeginGroup("Frame", OGREPROF_GENERAL);
_syncAddedRemovedFrameListeners();

// Tell all listeners
for (set<FrameListener*>::type::iterator i = mFrameListeners.begin(); i != mFrameListeners.end(); ++i)
{
//Add this modification
if(mRemovedFrameListeners.size())
{
set<FrameListener*>::type::iterator it = mRemovedFrameListeners.find(*i);
if(it != mRemovedFrameListeners.end())
continue;
}
//end of added block

if (!(*i)->frameStarted(evt))
return false;
}

return true;
}
paroj
OGRE Team Member
OGRE Team Member
Posts: 1994
Joined: Sun Mar 30, 2014 2:51 pm
x 1074
Contact:

Re: when to safely use removeFrameListener

Post by paroj »

please create an issue or even better a pull-request here:
https://github.com/OGRECave/ogre/issues
[nighthawk]
Gnoblar
Posts: 4
Joined: Tue Oct 10, 2017 2:04 am

Re: when to safely use removeFrameListener

Post by [nighthawk] »

Yes, I did it, but I'm not sure I created pull request correctly. I'm not really familiar with it...
Post Reply