diff --git a/examples/opengl/hellowindow/hellowindow.cpp b/examples/opengl/hellowindow/hellowindow.cpp index b5ffbd6..ad4ea1b 100644 --- a/examples/opengl/hellowindow/hellowindow.cpp +++ b/examples/opengl/hellowindow/hellowindow.cpp @@ -42,6 +42,9 @@ #include #include +#include +#include + Renderer::Renderer(const QSurfaceFormat &format, Renderer *share, QScreen *screen) : m_initialized(false) @@ -58,7 +61,7 @@ Renderer::Renderer(const QSurfaceFormat &format, Renderer *share, QScreen *scree } HelloWindow::HelloWindow(const QSharedPointer &renderer) - : m_colorIndex(0), m_renderer(renderer) + : m_colorIndex(0), m_renderer(renderer), m_exposeAfterResize(false) { setSurfaceType(QWindow::OpenGLSurface); setFlags(Qt::Window | Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint); @@ -72,11 +75,24 @@ HelloWindow::HelloWindow(const QSharedPointer &renderer) updateColor(); } -void HelloWindow::exposeEvent(QExposeEvent *) +void HelloWindow::exposeEvent(QExposeEvent *e) { + if (m_exposeAfterResize) { + qDebug() << __FUNCTION__ << "AFTER RESIZE" << e->region().boundingRect() ; + m_exposeAfterResize = false; + } else { + qDebug() << __FUNCTION__ << e->region().boundingRect() ; + } m_renderer->setAnimating(this, isExposed()); } +void HelloWindow::resizeEvent(QResizeEvent *e) +{ + m_exposeAfterResize = true; + qDebug() << __FUNCTION__ << e->size(); + QWindow::resizeEvent(e); +} + void HelloWindow::mousePressEvent(QMouseEvent *) { updateColor(); diff --git a/examples/opengl/hellowindow/hellowindow.h b/examples/opengl/hellowindow/hellowindow.h index 6d66f02..b6aba06 100644 --- a/examples/opengl/hellowindow/hellowindow.h +++ b/examples/opengl/hellowindow/hellowindow.h @@ -99,6 +99,7 @@ public: void updateColor(); void exposeEvent(QExposeEvent *event); + void resizeEvent(QResizeEvent *); private: void mousePressEvent(QMouseEvent *); @@ -107,4 +108,5 @@ private: QColor m_color; const QSharedPointer m_renderer; mutable QMutex m_colorLock; + bool m_exposeAfterResize; }; diff --git a/examples/opengl/hellowindow/hellowindow.pro b/examples/opengl/hellowindow/hellowindow.pro index cc220fd..d6ad838 100644 --- a/examples/opengl/hellowindow/hellowindow.pro +++ b/examples/opengl/hellowindow/hellowindow.pro @@ -1,5 +1,5 @@ QT += gui-private core-private - +CONFIG+=console HEADERS += hellowindow.h SOURCES += hellowindow.cpp main.cpp diff --git a/examples/qpa/windows/window.cpp b/examples/qpa/windows/window.cpp index 793257f..084fc07 100644 --- a/examples/qpa/windows/window.cpp +++ b/examples/qpa/windows/window.cpp @@ -44,6 +44,8 @@ #include #include +#include +#include static int colorIndexId = 0; @@ -70,6 +72,7 @@ Window::Window(QWindow *parent) void Window::initialize() { + m_exposeAfterResize = false; if (parent()) setGeometry(QRect(160, 120, 320, 240)); else { @@ -123,13 +126,21 @@ void Window::mouseReleaseEvent(QMouseEvent *event) } } -void Window::exposeEvent(QExposeEvent *) +void Window::exposeEvent(QExposeEvent *e) { + if (m_exposeAfterResize) { + qDebug() << __FUNCTION__ << "AFTER RESIZE" << e->region().boundingRect() ; + m_exposeAfterResize = false; + } else { + qDebug() << __FUNCTION__ << e->region().boundingRect() ; + } scheduleRender(); } -void Window::resizeEvent(QResizeEvent *) +void Window::resizeEvent(QResizeEvent *e) { + m_exposeAfterResize = true; + qDebug() << __FUNCTION__ << e->size(); QImage old = m_image; int width = qMax(geometry().width(), old.width()); diff --git a/examples/qpa/windows/window.h b/examples/qpa/windows/window.h index 88cf6db..cb7a88a 100644 --- a/examples/qpa/windows/window.h +++ b/examples/qpa/windows/window.h @@ -70,4 +70,5 @@ private: int m_backgroundColorIndex; QBackingStore *m_backingStore; int m_renderTimer; + bool m_exposeAfterResize; };