Use requestUpdate instead of timer in a few GL examples
Change-Id: I235ad367fe693c86ef5a0844fde0573371b284db Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
parent
e823c351c6
commit
a20c52dffc
@ -181,6 +181,13 @@ void RenderWindow::setupVertexAttribs()
|
||||
m_vbo.release();
|
||||
}
|
||||
|
||||
bool RenderWindow::event(QEvent *ev)
|
||||
{
|
||||
if (ev->type() == QEvent::UpdateRequest)
|
||||
render();
|
||||
return QWindow::event(ev);
|
||||
}
|
||||
|
||||
void RenderWindow::render()
|
||||
{
|
||||
if (!m_context->makeCurrent(this)) {
|
||||
@ -227,9 +234,5 @@ void RenderWindow::render()
|
||||
|
||||
m_angle += 1.0f;
|
||||
|
||||
// Instead of 0 wait a few more milliseconds before rendering again. This is
|
||||
// only here to make the UI widgets more responsive on slower machines. We
|
||||
// can afford it since our rendering is so lightweight.
|
||||
const int interval = 5;
|
||||
QTimer::singleShot(interval, this, &RenderWindow::render);
|
||||
requestUpdate();
|
||||
}
|
||||
|
@ -72,6 +72,9 @@ signals:
|
||||
void ready();
|
||||
void error(const QString &msg);
|
||||
|
||||
protected:
|
||||
bool event(QEvent *ev) override;
|
||||
|
||||
private slots:
|
||||
void render();
|
||||
|
||||
|
@ -98,6 +98,15 @@ void HelloWindow::exposeEvent(QExposeEvent *)
|
||||
m_renderer->render();
|
||||
}
|
||||
|
||||
bool HelloWindow::event(QEvent *ev)
|
||||
{
|
||||
if (ev->type() == QEvent::UpdateRequest) {
|
||||
m_renderer->render();
|
||||
requestUpdate();
|
||||
}
|
||||
return QWindow::event(ev);
|
||||
}
|
||||
|
||||
void HelloWindow::mousePressEvent(QMouseEvent *)
|
||||
{
|
||||
updateColor();
|
||||
@ -132,7 +141,7 @@ void Renderer::setAnimating(HelloWindow *window, bool animating)
|
||||
if (animating) {
|
||||
m_windows << window;
|
||||
if (m_windows.size() == 1)
|
||||
QTimer::singleShot(0, this, &Renderer::render);
|
||||
window->requestUpdate();
|
||||
} else {
|
||||
m_currentWindow = 0;
|
||||
m_windows.removeOne(window);
|
||||
@ -196,8 +205,6 @@ void Renderer::render()
|
||||
m_context->swapBuffers(surface);
|
||||
|
||||
m_fAngle += 1.0f;
|
||||
|
||||
QTimer::singleShot(0, this, &Renderer::render);
|
||||
}
|
||||
|
||||
Q_GLOBAL_STATIC(QMutex, initMutex)
|
||||
|
@ -112,11 +112,12 @@ public:
|
||||
QColor color() const;
|
||||
void updateColor();
|
||||
|
||||
protected:
|
||||
bool event(QEvent *ev) override;
|
||||
void exposeEvent(QExposeEvent *event) override;
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent *) override;
|
||||
|
||||
private:
|
||||
int m_colorIndex;
|
||||
QColor m_color;
|
||||
const QSharedPointer<Renderer> m_renderer;
|
||||
|
Loading…
x
Reference in New Issue
Block a user