forked from organicmaps/organicmaps
Free opengl resources before allocating new ones, this fixes crashes with low video memory
This commit is contained in:
parent
159621adf4
commit
3b1610da64
3 changed files with 10 additions and 0 deletions
|
@ -105,6 +105,7 @@ RenderPolicyST::RenderPolicyST(VideoTimer * videoTimer,
|
|||
|
||||
rmp.fitIntoLimits();
|
||||
|
||||
m_resourceManager.reset();
|
||||
m_resourceManager.reset(new yg::ResourceManager(rmp));
|
||||
|
||||
Platform::FilesList fonts;
|
||||
|
@ -123,8 +124,10 @@ RenderPolicyST::RenderPolicyST(VideoTimer * videoTimer,
|
|||
p.m_isSynchronized = false;
|
||||
p.m_useGuiResources = true;
|
||||
|
||||
m_drawer.reset();
|
||||
m_drawer.reset(new DrawerYG(p));
|
||||
|
||||
m_windowHandle.reset();
|
||||
m_windowHandle.reset(new WindowHandle());
|
||||
|
||||
m_windowHandle->setUpdatesEnabled(false);
|
||||
|
@ -132,6 +135,7 @@ RenderPolicyST::RenderPolicyST(VideoTimer * videoTimer,
|
|||
m_windowHandle->setVideoTimer(videoTimer);
|
||||
m_windowHandle->setRenderContext(primaryRC);
|
||||
|
||||
m_renderQueue.reset();
|
||||
m_renderQueue.reset(new RenderQueue(GetPlatform().SkinName(),
|
||||
false,
|
||||
false,
|
||||
|
|
|
@ -75,6 +75,7 @@ void RenderQueueRoutine::onSize(int w, int h)
|
|||
size_t texW = m_renderState->m_textureWidth;
|
||||
size_t texH = m_renderState->m_textureHeight;
|
||||
|
||||
m_newDepthBuffer.reset();
|
||||
m_newDepthBuffer.reset(new yg::gl::RenderBuffer(texW, texH, true));
|
||||
m_newActualTarget = m_resourceManager->createRenderTarget(texW, texH);
|
||||
m_newBackBuffer = m_resourceManager->createRenderTarget(texW, texH);
|
||||
|
@ -563,7 +564,9 @@ void RenderQueueRoutine::addCommand(render_fn_t const & fn, ScreenBase const & f
|
|||
void RenderQueueRoutine::initializeGL(shared_ptr<yg::gl::RenderContext> const & renderContext,
|
||||
shared_ptr<yg::ResourceManager> const & resourceManager)
|
||||
{
|
||||
m_frameBuffer.reset();
|
||||
m_frameBuffer.reset(new yg::gl::FrameBuffer());
|
||||
m_auxFrameBuffer.reset();
|
||||
m_auxFrameBuffer.reset(new yg::gl::FrameBuffer());
|
||||
m_renderContext = renderContext;
|
||||
m_resourceManager = resourceManager;
|
||||
|
|
|
@ -28,7 +28,10 @@ namespace yg
|
|||
m_updateInterval(params.m_updateInterval)
|
||||
{
|
||||
if ((m_doPeriodicalUpdate) && (!m_auxFrameBuffer))
|
||||
{
|
||||
m_auxFrameBuffer.reset();
|
||||
m_auxFrameBuffer.reset(new FrameBuffer());
|
||||
}
|
||||
}
|
||||
|
||||
shared_ptr<RenderState> const & RenderStateUpdater::renderState() const
|
||||
|
|
Loading…
Add table
Reference in a new issue