1
0
mirror of https://github.com/thp/pyotherside.git synced 2025-02-05 08:08:23 +08:00

Recreate renderer when callbacks have been redefined.

This commit is contained in:
Dennis Tomas 2014-09-04 21:28:27 +02:00
parent 13d22c6e0f
commit 3e4ea6ee5f

View File

@ -43,10 +43,9 @@ void PyGLArea::setInitGL(QString initGL)
{
if (initGL == m_initGL)
return;
m_renderer->setInitGL(initGL);
m_initGL = initGL;
if (window())
window()->update();
delete m_renderer;
m_renderer = 0;
}
void PyGLArea::setPaintGL(QString paintGL)
@ -54,9 +53,8 @@ void PyGLArea::setPaintGL(QString paintGL)
if (paintGL == m_paintGL)
return;
m_paintGL = paintGL;
m_renderer->setPaintGL(paintGL);
if (window())
window()->update();
delete m_renderer;
m_renderer = 0;
}
void PyGLArea::setCleanupGL(QString cleanupGL)
@ -64,9 +62,8 @@ void PyGLArea::setCleanupGL(QString cleanupGL)
if (cleanupGL == m_cleanupGL)
return;
m_cleanupGL = cleanupGL;
m_renderer->setCleanupGL(cleanupGL);
if (window())
window()->update();
delete m_renderer;
m_renderer = 0;
}
void PyGLArea::setBefore(bool before)
@ -74,6 +71,8 @@ void PyGLArea::setBefore(bool before)
if (before == m_before)
return;
m_before = before;
delete m_renderer;
m_renderer = 0;
}
void PyGLArea::setT(qreal t)
@ -82,8 +81,6 @@ void PyGLArea::setT(qreal t)
return;
m_t = t;
emit tChanged();
if (window())
window()->update();
}
void PyGLArea::handleWindowChanged(QQuickWindow *win)
@ -98,13 +95,19 @@ void PyGLArea::handleWindowChanged(QQuickWindow *win)
}
void PyGLArea::update() {
if (window())
window()->update();
}
void PyGLArea::sync()
{
if (!m_renderer) {
disconnect(window(), SIGNAL(beforeRendering()), this, SLOT(paint()));
disconnect(window(), SIGNAL(afterRendering()), this, SLOT(paint()));
m_renderer = new PyGLRenderer();
m_renderer->setInitGL(m_initGL);
m_renderer->setPaintGL(m_paintGL);
m_renderer->setCleanupGL(m_cleanupGL);
if (m_before)
connect(window(), SIGNAL(beforeRendering()), this, SLOT(paint()), Qt::DirectConnection);
else