Page 1 of 1

crash in void OgreRenderer::beginRendering()

Posted: Fri Feb 24, 2012 14:09
by heeroz
cegui 0.7.6
ogre v1.7.2

d_pimpl->d_previousVP = d_pimpl->d_renderSystem->_getViewport();

This line will return a deleted viewport* pointer when destroy cegui window befor OgreRenderer::beginRendering().

The order is:
1. destory a cegui window

2. Window::onChildRemoved()
getTargetRenderingSurface().invalidate();

3. RenderingWindow::invalidate()
d_textarget.clear();

4. OgreTextureTarget::clear()
d_renderSystem._setViewport(d_viewport);

5. OgreRenderTarget::~OgreRenderTarget()
delete d_viewport;

6. OgreRenderer::beginRendering()
d_pimpl->d_previousVP = d_pimpl->d_renderSystem->_getViewport(); <-----return a deleted viewport in order 5.
d_pimpl->d_previousVP->getCamera()->getProjectionMatrixRS(); <------------crash

Re: crash in void OgreRenderer::beginRendering()

Posted: Sat Feb 25, 2012 08:37
by CrazyEddie
Hi,

Thanks for the detailed report. I will add a ticket for this.

CE.