I find a error in System class about event. in the System::constructor_impl:
Code: Select all
d_renderer->subscribeEvent(Renderer::EventDisplaySizeChanged, Event::Subscriber(&CEGUI::System::handleDisplaySizeChange, this));
when i do the code below:
Code: Select all
Renderer* myRenderer = new OpenGLRenderer;
new System(myRenderer,...,"login.config")
// ...
delete System::getSingetonPtr();
new System(myRenderer,...,"actorSelect.config");
so, Renderer has connected two subscriber, one subscriber come from the System class that had been deleted. anothor come from the last System class. When window size changed, a exception will raise!
so, in the System::~System(), should cancel the subscriber, it is a pity that EventSet does not support unsubscribe method. Event support unsubscibe method, but EventSet doesn't support getEvent(String) method (suggest that add getEvent method).
now, i only can do it by
Code: Select all
Renderer* myRenderer = new OpenGLRenderer;
new System(myRenderer,...,"login.config")
// ...
delete System::getSingetonPtr();
myRenderer->removeEvent(Renderer::EventDisplaySizeChanged);
myRenderer->addEvent(Renderer::EventDisplaySizeChanged);
new System(myRenderer,...,"actorSelect.config");
