diff --git a/examples/OpenGLWindow/X11OpenGLWindow.cpp b/examples/OpenGLWindow/X11OpenGLWindow.cpp index 01a07d132..681c3f423 100644 --- a/examples/OpenGLWindow/X11OpenGLWindow.cpp +++ b/examples/OpenGLWindow/X11OpenGLWindow.cpp @@ -172,6 +172,8 @@ struct InternalData2 XEvent m_xev; GLXFBConfig m_bestFbc; int m_modifierFlags; + int m_glWidth; + int m_glHeight; #ifdef DYNAMIC_LOAD_X11_FUNCTIONS //dynamically load stuff @@ -207,6 +209,9 @@ struct InternalData2 InternalData2() :m_dpy(0), m_vi(0), + m_modifierFlags(0), + m_glWidth(-1), + m_glHeight(-1), m_wheelCallback(0), m_mouseMoveCallback(0), m_mouseButtonCallback(0), @@ -929,6 +934,9 @@ void X11OpenGLWindow::pumpMessage() { // printf("@"); // fflush(0); + m_data->m_glWidth = m_data->m_xev.xconfigure.width; + m_data->m_glHeight = m_data->m_xev.xconfigure.height; + if (m_data->m_resizeCallback) { (*m_data->m_resizeCallback)(m_data->m_xev.xconfigure.width,m_data->m_xev.xconfigure.height); @@ -1031,6 +1039,10 @@ void X11OpenGLWindow::setMouseButtonCallback(b3MouseButtonCallback mouseCallback void X11OpenGLWindow::setResizeCallback(b3ResizeCallback resizeCallback) { + if (resizeCallback && m_data->m_glWidth>0 && m_data->m_glHeight > 0) + { + resizeCallback(m_data->m_glWidth, m_data->m_glHeight); + } m_data->m_resizeCallback = resizeCallback; }