<div dir="ltr">Hello,<br><br>I've created a bug in Mantis for this<br><a href="http://www.vtk.org/Bug/view.php?id=15840" target="_blank">http://www.vtk.org/Bug/view.php?id=15840</a><br><br>Looking at the code in QVTKWidget.cxx, here is the part that may be causing the problem, because it handles the reparenting part...<br><br><i>/*******************************************************************************/<br></i><div><i>if(e->type() == QEvent::ParentAboutToChange)</i></div><div><i>    {</i></div><div><i>    this->markCachedImageAsDirty();</i></div><div><i>    if (this->mRenWin)</i></div><div><i>      {</i></div><div><i>      // Finalize the window to remove graphics resources associated with</i></div><div><i>      // this window</i></div><div><i>      if(this->mRenWin->GetMapped())</i></div><div><i>        {</i></div><div><i>        this->mRenWin->Finalize();</i></div><div><i>        }</i></div><div><i>      }</i></div><div><i>    }</i></div><div><i>  else if(e->type() == QEvent::ParentChange)</i></div><div><i>    {</i></div><div><i>    if(this->mRenWin)</i></div><div><i>      {</i></div><div><i>      x11_setup_window();</i></div><div><i>      // connect to new window</i></div><div><i>      this->mRenWin->SetWindowId( reinterpret_cast<void*>(this->winId()));</i></div><div><i><br></i></div><div><i>      // start up the window to create graphics resources for this window</i></div><div><i>      if(isVisible())</i></div><div><i>        {</i></div><div><i>        this->mRenWin->Start();</i></div><div><i>        }</i></div><div><i>      }</i></div><div><i>    }</i></div><i>/*******************************************************************************/</i><br><br><div>Were there any significant changes in the methods GetMapped() / Finalize() / Start() of vtkRenderWindow (or children implementation) during the development of the new rendering backend that may lead to such a crash : </div><div><br></div><div><i>/*******************************************************************************/<br></i><div><i>ERROR: In /Users/th-dev/EndoSize_OGL2/cmake-externals/VTK/src/Rendering/OpenGL2/vtkShaderProgram.cxx, line 354</i></div><div><i>vtkShaderProgram (0x6000001809c0): 1: #version 120</i></div><div><i>2: #define highp</i></div><div><i>3: #define mediump</i></div><div><i>4: #define lowp</i></div><div><i>5: </i></div><div><i>6: /*=========================================================================</i></div><div><i>7: </i></div><div><i>8:   Program:   Visualization Toolkit</i></div><div><i>9:   Module:    vtkPolyDataVS.glsl</i></div><div><i>10: </i></div><div><i>11:   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen</i></div><div><i>12:   All rights reserved.</i></div><div><i>13:   See Copyright.txt or <a href="http://www.kitware.com/Copyright.htm" target="_blank">http://www.kitware.com/Copyright.htm</a> for details.</i></div><div><i>14: </i></div><div><i>15:      This software is distributed WITHOUT ANY WARRANTY; without even</i></div><div><i>16:      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR</i></div><div><i>17:      PURPOSE.  See the above copyright notice for more information.</i></div><div><i>18: </i></div><div><i>19: =========================================================================*/</i></div><div><i>20: </i></div><div><i>21: attribute vec4 vertexMC;</i></div><div><i>22: </i></div><div><i>23: // frag position in VC</i></div><div><i>24: varying vec4 vertexVCVSOutput;</i></div><div><i>25: </i></div><div><i>26: // optional normal declaration</i></div><div><i>27: attribute vec3 normalMC;</i></div><div><i>28: uniform mat3 normalMatrix;</i></div><div><i>29: varying vec3 normalVCVSOutput;</i></div><div><i>30: </i></div><div><i>31: // extra lighting parameters</i></div><div><i>32: //VTK::Light::Dec</i></div><div><i>33: </i></div><div><i>34: // Texture coordinates</i></div><div><i>35: //VTK::TCoord::Dec</i></div><div><i>36: </i></div><div><i>37: // material property values</i></div><div><i>38: //VTK::Color::Dec</i></div><div><i>39: </i></div><div><i>40: // clipping plane vars</i></div><div><i>41: //VTK::Clip::Dec</i></div><div><i>42: </i></div><div><i>43: // camera and actor matrix values</i></div><div><i>44: uniform mat4 MCDCMatrix;</i></div><div><i>45: uniform mat4 MCVCMatrix;</i></div><div><i>46: </i></div><div><i>47: // Apple Bug</i></div><div><i>48: //VTK::PrimID::Dec</i></div><div><i>49: </i></div><div><i>50: void main()</i></div><div><i>51: {</i></div><div><i>52:   //VTK::Color::Impl</i></div><div><i>53: </i></div><div><i>54:   normalVCVSOutput = normalMatrix * normalMC;</i></div><div><i>55: </i></div><div><i>56:   //VTK::TCoord::Impl</i></div><div><i>57: </i></div><div><i>58:   //VTK::Clip::Impl</i></div><div><i>59: </i></div><div><i>60:   //VTK::PrimID::Impl</i></div><div><i>61: </i></div><div><i>62:   vertexVCVSOutput = MCVCMatrix * vertexMC;</i></div><div><i>63:   gl_Position = MCDCMatrix * vertexMC;</i></div><div><i>64: </i></div><div><i>65: </i></div><div><i>66:   //VTK::Light::Impl</i></div><div><i>67: }</i></div><div><i>68: </i></div><div><i><br></i></div><div><i><br></i></div><div><i>ERROR: In /Users/th-dev/EndoSize_OGL2/cmake-externals/VTK/src/Rendering/OpenGL2/vtkShaderProgram.cxx, line 355</i></div><div><i>vtkShaderProgram (0x6000001809c0): ERROR: 0:1: '' :  version '120' is not supported</i></div><div><i>ERROR: 0:2: '' :  #version required and missing.</i></div><div><i>ERROR: 0:21: 'attribute' : syntax error: syntax error</i></div><div><i><br></i></div><div><i><br></i></div><div><i>(lldb) bt</i></div><div><i>* thread #1: tid = 0x600e30, 0x0000000100609f1f VtkReparentingProblem`vtkShaderProgram::FindUniform(char const*) + 31, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x60)</i></div><div><i>  * frame #0: 0x0000000100609f1f VtkReparentingProblem`vtkShaderProgram::FindUniform(char const*) + 31</i></div><div><i>    frame #1: 0x00000001006074ab VtkReparentingProblem`vtkShaderProgram::SetUniformi(char const*, int) + 27</i></div><div><i>    frame #2: 0x00000001005b8c28 VtkReparentingProblem`vtkOpenGLPolyDataMapper::SetMapperShaderParameters(vtkOpenGLHelper&, vtkRenderer*, vtkActor*) + 72</i></div><div><i>    frame #3: 0x00000001005b8b1b VtkReparentingProblem`vtkOpenGLPolyDataMapper::UpdateShaders(vtkOpenGLHelper&, vtkRenderer*, vtkActor*) + 1211</i></div><div><i>    frame #4: 0x00000001005bb782 VtkReparentingProblem`vtkOpenGLPolyDataMapper::RenderPieceDraw(vtkRenderer*, vtkActor*) + 818</i></div><div><i>    frame #5: 0x00000001005bbbe3 VtkReparentingProblem`vtkOpenGLPolyDataMapper::RenderPiece(vtkRenderer*, vtkActor*) + 195</i></div><div><i>    frame #6: 0x00000001004ba1fe VtkReparentingProblem`vtkPolyDataMapper::Render(vtkRenderer*, vtkActor*) + 174</i></div><div><i>    frame #7: 0x0000000100561be0 VtkReparentingProblem`vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*) + 144</i></div><div><i>    frame #8: 0x00000001004667c3 VtkReparentingProblem`vtkActor::RenderOpaqueGeometry(vtkViewport*) + 435</i></div><div><i>    frame #9: 0x00000001005caa87 VtkReparentingProblem`vtkOpenGLRenderer::UpdateGeometry() + 263</i></div><div><i>    frame #10: 0x00000001005ca945 VtkReparentingProblem`vtkOpenGLRenderer::DeviceRender() + 181</i></div><div><i>    frame #11: 0x00000001004cb96c VtkReparentingProblem`vtkRenderer::Render() + 604</i></div><div><i>    frame #12: 0x00000001004d08cc VtkReparentingProblem`vtkRendererCollection::Render() + 92</i></div><div><i>    frame #13: 0x00000001004c5d1a VtkReparentingProblem`vtkRenderWindow::DoStereoRender() + 138</i></div><div><i>    frame #14: 0x00000001004c5098 VtkReparentingProblem`vtkRenderWindow::Render() + 328</i></div><div><i>    frame #15: 0x00000001005c7816 VtkReparentingProblem`vtkOpenGLRenderWindow::Render() + 22</i></div><div><i>    frame #16: 0x00000001004c8f17 VtkReparentingProblem`vtkRenderWindowInteractor::Render() + 39</i></div><div><i>    frame #17: 0x00000001006831dd VtkReparentingProblem`QVTKWidget::paintEvent(QPaintEvent*) + 109</i></div><div><i>    frame #18: 0x0000000100bb73d6 QtWidgets`QWidget::event(QEvent*) + 1958</i></div><div><i>    frame #19: 0x0000000100683079 VtkReparentingProblem`QVTKWidget::event(QEvent*) + 281</i></div><div><i>    frame #20: 0x0000000100b7effc QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 300</i></div><div><i>    frame #21: 0x0000000100b81abb QtWidgets`QApplication::notify(QObject*, QEvent*) + 6187</i></div><div><i>    frame #22: 0x0000000101902932 QtCore`QCoreApplication::notifyInternal(QObject*, QEvent*) + 114</i></div><div><i>    frame #23: 0x0000000100bb2035 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 2997</i></div><div><i>    frame #24: 0x0000000100b8aed0 QtWidgets`QWidgetPrivate::repaint_sys(QRegion const&) + 400</i></div><div><i>    frame #25: 0x0000000100bd4987 QtWidgets`QWidgetWindow::event(QEvent*) + 423</i></div><div><i>    frame #26: 0x0000000100b7effc QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 300</i></div><div><i>    frame #27: 0x0000000100b81abb QtWidgets`QApplication::notify(QObject*, QEvent*) + 6187</i></div><div><i>    frame #28: 0x0000000101902932 QtCore`QCoreApplication::notifyInternal(QObject*, QEvent*) + 114</i></div><div><i>    frame #29: 0x00000001011c4d7a QtGui`QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) + 314</i></div><div><i>    frame #30: 0x00000001011c08a7 QtGui`QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) + 951</i></div><div><i>    frame #31: 0x00000001011af1cb QtGui`QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 315</i></div><div><i>    frame #32: 0x0000000104a39f0d libqcocoa.dylib`QCocoaEventDispatcherPrivate::processPostedEvents() + 317</i></div><div><i>    frame #33: 0x0000000104a3a8a8 libqcocoa.dylib`QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 40</i></div><div><i>    frame #34: 0x00007fff8f9e3a01 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17</i></div><div><i>    frame #35: 0x00007fff8f9d5b8d CoreFoundation`__CFRunLoopDoSources0 + 269</i></div><div><i>    frame #36: 0x00007fff8f9d51bf CoreFoundation`__CFRunLoopRun + 927</i></div><div><i>    frame #37: 0x00007fff8f9d4bd8 CoreFoundation`CFRunLoopRunSpecific + 296</i></div><div><i>    frame #38: 0x00007fff8b65f56f HIToolbox`RunCurrentEventLoopInMode + 235</i></div><div><i>    frame #39: 0x00007fff8b65f2ea HIToolbox`ReceiveNextEventCommon + 431</i></div><div><i>    frame #40: 0x00007fff8b65f12b HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71</i></div><div><i>    frame #41: 0x00007fff894cf8ab AppKit`_DPSNextEvent + 978</i></div><div><i>    frame #42: 0x00007fff894cee58 AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346</i></div><div><i>    frame #43: 0x00007fff894c4af3 AppKit`-[NSApplication run] + 594</i></div><div><i>    frame #44: 0x0000000104a395e4 libqcocoa.dylib`QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2420</i></div><div><i>    frame #45: 0x00000001018ff9ad QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 381</i></div><div><i>    frame #46: 0x0000000101902ee7 QtCore`QCoreApplication::exec() + 359</i></div><div><i>    frame #47: 0x0000000100005dab VtkReparentingProblem`main + 59</i></div><div><i>    frame #48: 0x0000000100005d64 VtkReparentingProblem`start + 52</i></div></div><div><i><br></i></div><div><i>/*******************************************************************************/</i><br><br>Any hints ?<br><br>Regards,<br>Simon</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-17 9:27 GMT+01:00 Simon ESNEAULT <span dir="ltr"><<a href="mailto:simon.esneault@gmail.com" target="_blank">simon.esneault@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<br><br>After the switch to the new rendering backend, we have a crash on our program after reparenting a QVTKWidget on OSX. The crash is in the method vtkShaderProgram::FindUniform() but we suspect it is about the OpenGL context not being ready on time for the next paintEvent with the new parent.<br><br>Attached is a program that reproduce the problem, as well as a complete backtrace for this crash. This used to work fine with the previous backend.<br><br>Hope this little test case helps<br><br>Thanks<span class="HOEnZb"><font color="#888888"><br>Simon<br clear="all"><div><br></div>-- <br><div><div dir="ltr"><div>------------------------------------------------------------------<br>Simon Esneault<div>Rennes, France<br>------------------------------------------------------------------</div></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>------------------------------------------------------------------<br>Simon Esneault<div>Rennes, France<br>------------------------------------------------------------------</div></div></div></div>
</div>