FreeCAD Qt5 plan for deprecated WebKit?

Here's the place for discussion related to coding in FreeCAD, C++ or Python. Design, interfaces and structures.
blacey
Posts: 337
Joined: Tue Dec 08, 2015 11:28 pm

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby blacey » Thu Mar 09, 2017 2:49 pm

wmayer wrote:And can you confirm that it finally fixes issue #1401?


Yes, with these changes, issue #1401 is finally resolved. That bug always manifest itself when showing the dependency graph on macOS - you would end up with a small, unmovable 3d-view of the object that overlaid the graph and couldn't be moved. All clean now. Yay!!!! :)

Given that we must activated the QTOpenGL using a cmake define, do you think we can merge this to master? It would be great to at least enable this for the macOS Qt 5 builds as soon as possible.

Finally, did you try to test your system using the exact same versions of shiboken, pyside, coin and Qt that I referenced? Also, which version of Qt are you using?

Issue1401.gif
Issue1401.gif (573.36 KiB) Viewed 196 times
triplus
Posts: 4857
Joined: Mon Dec 12, 2011 4:45 pm

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby triplus » Thu Mar 09, 2017 2:55 pm

Some more reference on what is possible with QOpenGLWidget and wasn't possible with QGLWidget:

Sample.png
Sample.png (18 KiB) Viewed 194 times


P.S. This is a raw prototype and to achieve such things different approach will likely end up being used at some point in the future. But nonetheless it clearly shows the progress was made!
blacey
Posts: 337
Joined: Tue Dec 08, 2015 11:28 pm

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby blacey » Thu Mar 09, 2017 3:06 pm

triplus wrote:Some more reference on what is possible with QOpenGLWidget and wasn't possible with QGLWidget:

P.S. This is a raw prototype and to achieve such things different approach will likely end up being used at some point in the future. But nonetheless it clearly shows the progress was made!


Awesome! This is also reminiscent of @ickby's UI revamp circa Feb 2015 that Kurt shared recently - https://youtu.be/wrOP7sLqwiM

Moving the UI in this new direction would really raise the bar for FreeCAD relative to other solutions in the market.
wmayer
Site Admin
Posts: 11234
Joined: Thu Feb 19, 2009 10:32 am

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby wmayer » Thu Mar 09, 2017 4:38 pm

Yes, with these changes, issue #1401 is finally resolved. That bug always manifest itself when showing the dependency graph on macOS - you would end up with a small, unmovable 3d-view of the object that overlaid the graph and couldn't be moved. All clean now. Yay!!!!

OK, thanks for the confirmation.

Given that we must activated the QTOpenGL using a cmake define, do you think we can merge this to master?

Theoretically yes. It doesn't break anything since all modified code is protected with #ifdef's. However, I first wanted to make a few more things working in case they are not too hard to solve.

Finally, did you try to test your system using the exact same versions of shiboken, pyside, coin and Qt that I referenced? Also, which version of Qt are you using?

My setup is:
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.10456 +4 (Git)
Build type: Debug
Branch: qtopengl
Hash: af120636c7d386193fa226a875334369c7f7e506
Python version: 2.7.8
Qt version: 5.6.0
Coin version: 4.0.0a
OCC version: 7.0.0

The sources for PySide2 and shiboken2 I have grabbed maybe in December or so. I am quite sure that it different to your version but I can't imagine that it has any influence on the OpenGL stuff. Coin is the same version but probably also a different hash value. However, for six years there are no substantial changes in the source code there.
blacey
Posts: 337
Joined: Tue Dec 08, 2015 11:28 pm

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby blacey » Thu Mar 09, 2017 4:44 pm

wmayer wrote:I first wanted to make a few more things working in case they are not too hard to solve.


Sounds great! If you want, I'de be happy to submit a PR to your branch that will activate QTOpenGL for the macOS builds so once you commit/merge, the macOS builds will take advantage of it... Another, perhaps better, option would be to configure the CMakeLists.txt to default to FREECAD_USE_QTOPENGL_WIDGET option to ON, at least for macOS.
ian.rees
Posts: 529
Joined: Sun Jun 15, 2014 3:28 am
Contact:

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby ian.rees » Thu Mar 09, 2017 5:20 pm

I think once we're ready to merge this in, that the FREECAD_USE_QTOPENGL_WIDGET should probably just change in to the "Using qt5" define. -Ian-
wmayer
Site Admin
Posts: 11234
Joined: Thu Feb 19, 2009 10:32 am

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby wmayer » Thu Mar 09, 2017 6:20 pm

After a bit more testing I found a few more major problems:
  • Box zoom/selection/cutting: as soon as starting this mode the content of the 3d view disappears. When leaving this mode everything is fine again. (done but the selection in sketch mode shows some phantom stuff from the previous selection)
  • The class Flag is ported to QOpenGLWidget now but somehow the lines are not updated when moving the widgets. For testing create a mesh and in the mesh workbench go to Meshes > Analyze > Face info. Click on a mesh somewhere. Now move the white widgets and observe the line. As soon as hovering the mesh the line is repainted.
  • Undock the 3d view, dock it: => the 3d canvas is totally misplaced. However, highlighting and selection still works like the canvas is correctly placed
  • The worst problem appears when trying to save a picture. Therefore use either directly the save function, the print preview function or the create PDF function. Afterwards the 3d view doesn't react on user input and the whole GUI behaves weirdly. When closing the 3d view and opening a new one it shows the content of the old viewer without having created a new object.
User avatar
nemesis
Posts: 177
Joined: Tue Mar 25, 2014 11:24 pm
Location: France, Lyon

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby nemesis » Thu Mar 09, 2017 7:49 pm

blacey wrote:Yes, with these changes, issue #1401 is finally resolved.

:D
Image
blacey
Posts: 337
Joined: Tue Dec 08, 2015 11:28 pm

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby blacey » Thu Mar 09, 2017 8:02 pm

wmayer wrote:After a bit more testing I found a few more major problems:
  • Box zoom/selection/cutting: as soon as starting this mode the content of the 3d view disappears. When leaving this mode everything is fine again.
  • The class Flag is ported to QOpenGLWidget now but somehow the lines are not updated when moving the widgets. For testing create a mesh and in the mesh workbench go to Meshes > Analyze > Face info. Click on a mesh somewhere. Now move the white widgets and observe the line. As soon as hovering the mesh the line is repainted.
  • Undock the 3d view, dock it: => the 3d canvas is totally misplaced. However, highlighting and selection still works like the canvas is correctly placed
  • The worst problem appears when trying to save a picture. Therefore use either directly the save function, the print preview function or the create PDF function. Afterwards the 3d view doesn't react on user input and the whole GUI behaves weirdly. When closing the 3d view and opening a new one it shows the content of the old viewer without having created a new object.


#1 confirmed on macOS
#2 not yet tested
#3 Confirmed on macOS but perhaps worse. Raises an EXC_BAD_ACCESS exception. Traceback below:
#4 not yet tested

Code: Select all

(lldb) bt
* thread #1: tid = 0x281a43, 0x000000010ec48921 GLEngine`gleRunVertexSubmitImmediate + 977, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000010ec48921 GLEngine`gleRunVertexSubmitImmediate + 977
    frame #1: 0x000000010eb23108 GLEngine`glDrawElements_Exec + 700
    frame #2: 0x000000012f52efe0 PartGui.so`PartGui::SoBrepFaceSet::VBO::render(this=0x00000001058702c0, action=0x0000000124647dd0, vertexlist=0x000000011a06c640, vertexindices=0x0000000106585c00, num_indices=11840, partindices=0x0000000118c6eed0, num_partindices=29, normals=0x0000000106580200, normalindices=0x0000000106585c00, materials=0x00007fff5fbf6540, matindices=0x0000000106585c00, texcoords=0x00007fff5fbf64e8, texindices=0x0000000000000000, nbind=6, mbind=0, texture=0) + 5456 at SoBrepFaceSet.cpp:1290
    frame #3: 0x000000012f52accf PartGui.so`PartGui::SoBrepFaceSet::renderShape(this=0x000000010581efa0, action=0x0000000124647dd0, hasVBO=1, vertexlist=0x000000011a06c640, vertexindices=0x0000000106585c00, num_indices=11840, partindices=0x0000000118c6eed0, num_partindices=29, normals=0x0000000106580200, normalindices=0x0000000106585c00, materials=0x00007fff5fbf6540, matindices=0x0000000106585c00, texcoords=0x00007fff5fbf64e8, texindices=0x0000000000000000, nbind=6, mbind=0, texture=0) + 527 at SoBrepFaceSet.cpp:1325
    frame #4: 0x000000012f529e0e PartGui.so`PartGui::SoBrepFaceSet::GLRender(this=0x000000010581efa0, action=0x0000000124647dd0) + 1006 at SoBrepFaceSet.cpp:508
    frame #5: 0x000000012f52b7d8 PartGui.so`PartGui::SoBrepFaceSet::GLRenderBelowPath(this=0x000000010581efa0, action=0x0000000124647dd0) + 40 at SoBrepFaceSet.cpp:529
    frame #6: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #7: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #8: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #9: 0x00000001024b4b63 libCoin.dylib`SoChildList::traverse(SoAction*, int, int) + 123
    frame #10: 0x000000010251149f libCoin.dylib`SoSwitch::doAction(SoAction*) + 385
    frame #11: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #12: 0x00000001024f7ab3 libCoin.dylib`SoGroup::GLRender(SoGLRenderAction*) + 347
    frame #13: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #14: 0x00000001024b4b63 libCoin.dylib`SoChildList::traverse(SoAction*, int, int) + 123
    frame #15: 0x000000010251149f libCoin.dylib`SoSwitch::doAction(SoAction*) + 385
    frame #16: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #17: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #18: 0x0000000100448727 libFreeCADGui.dylib`Gui::SoFCUnifiedSelection::GLRenderBelowPath(this=0x0000000125a9c580, action=0x0000000124647dd0) + 39 at SoFCUnifiedSelection.cpp:538
    frame #19: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #20: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #21: 0x000000010233b032 libCoin.dylib`SoGLRenderAction::beginTraversal(SoNode*) + 596
    frame #22: 0x000000010233c6d2 libCoin.dylib`SoGLRenderActionP::renderSingle(SoNode*) + 308
    frame #23: 0x000000010233b20b libCoin.dylib`SoGLRenderActionP::render(SoNode*) + 345
    frame #24: 0x000000010233b065 libCoin.dylib`SoGLRenderAction::beginTraversal(SoNode*) + 647
    frame #25: 0x00000001023372f6 libCoin.dylib`SoAction::apply(SoNode*) + 344
    frame #26: 0x0000000100454eed libFreeCADGui.dylib`Gui::SoBoxSelectionRenderAction::apply(this=0x0000000124647dd0, node=0x00000001246d8e90) + 45 at SoFCSelectionAction.cpp:1089
    frame #27: 0x000000010259fca2 libCoin.dylib`SoRenderManager::renderScene(SoGLRenderAction*, SoNode*, unsigned int) + 206
    frame #28: 0x000000010259fb4b libCoin.dylib`SoRenderManager::actuallyRender(SoGLRenderAction*, int, int, int) + 139
    frame #29: 0x000000010259f818 libCoin.dylib`SoRenderManager::renderSingle(SoGLRenderAction*, int, int, int) + 850
    frame #30: 0x000000010259f452 libCoin.dylib`SoRenderManager::render(SoGLRenderAction*, int, int, int) + 192
    frame #31: 0x00000001005016d4 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::actualRedraw(this=0x0000000106465400) + 68 at QuarterWidget.cpp:921
    frame #32: 0x0000000100555540 libFreeCADGui.dylib`Gui::View3DInventorViewer::renderScene(this=0x0000000106465400) + 672 at View3DInventorViewer.cpp:1503
    frame #33: 0x000000010055527a libFreeCADGui.dylib`Gui::View3DInventorViewer::actualRedraw(this=0x0000000106465400) + 90 at View3DInventorViewer.cpp:1378
    frame #34: 0x00000001005013b2 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::paintEvent(this=0x0000000106465400, event=0x00007fff5fbf8800) + 498 at QuarterWidget.cpp:813
    frame #35: 0x0000000102f226c8 QtWidgets`QWidget::event(QEvent*) + 1144
    frame #36: 0x000000010301813d QtWidgets`QFrame::event(QEvent*) + 45
    frame #37: 0x00000001030aa327 QtWidgets`QAbstractScrollArea::viewportEvent(QEvent*) + 135
    frame #38: 0x0000000103247fe1 QtWidgets`QGraphicsView::viewportEvent(QEvent*) + 1505
    frame #39: 0x0000000100501640 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::viewportEvent(this=0x0000000106465400, event=0x00007fff5fbf8800) + 304 at QuarterWidget.cpp:889
    frame #40: 0x00000001030aaec4 QtWidgets`___lldb_unnamed_symbol2811$$QtWidgets + 36
    frame #41: 0x0000000103cbcb4b QtCore`QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 203
    frame #42: 0x0000000102ee1101 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 273
    frame #43: 0x0000000102ee2649 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
    frame #44: 0x0000000100171ff6 libFreeCADGui.dylib`Gui::GUIApplication::notify(this=0x00007fff5fbfca38, receiver=0x0000000124675aa0, event=0x00007fff5fbf8800) + 934 at GuiApplication.cpp:91
    frame #45: 0x0000000103cbc8b4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #46: 0x0000000102f1c404 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3316
    frame #47: 0x0000000102f1cc00 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1248
    frame #48: 0x0000000102f1c69d QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3981
    frame #49: 0x0000000102f1cc00 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1248
    frame #50: 0x0000000102f1c69d QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3981
    frame #51: 0x0000000102f1cc00 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1248
    frame #52: 0x0000000102f1c69d QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3981
    frame #53: 0x0000000102eef5a5 QtWidgets`___lldb_unnamed_symbol105$$QtWidgets + 5269
    frame #54: 0x0000000102f22927 QtWidgets`QWidget::event(QEvent*) + 1751
    frame #55: 0x000000010302fc55 QtWidgets`QMainWindow::event(QEvent*) + 1733
    frame #56: 0x0000000102ee1116 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #57: 0x0000000102ee2649 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
    frame #58: 0x0000000100171ff6 libFreeCADGui.dylib`Gui::GUIApplication::notify(this=0x00007fff5fbfca38, receiver=0x0000000125a4ba00, event=0x0000000124527e10) + 934 at GuiApplication.cpp:91
    frame #59: 0x0000000103cbc8b4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #60: 0x0000000103cbd90b QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 875
    frame #61: 0x000000010a184eee libqcocoa.dylib`___lldb_unnamed_symbol459$$libqcocoa.dylib + 190
    frame #62: 0x000000010a1857c1 libqcocoa.dylib`___lldb_unnamed_symbol471$$libqcocoa.dylib + 33
    frame #63: 0x00007fff9da663c1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #64: 0x00007fff9da472cd CoreFoundation`__CFRunLoopDoSources0 + 557
    frame #65: 0x00007fff9da467c6 CoreFoundation`__CFRunLoopRun + 934
    frame #66: 0x00007fff9da461c4 CoreFoundation`CFRunLoopRunSpecific + 420
    frame #67: 0x00007fff9cfa7ebc HIToolbox`RunCurrentEventLoopInMode + 240
    frame #68: 0x00007fff9cfa7bf9 HIToolbox`ReceiveNextEventCommon + 184
    frame #69: 0x00007fff9cfa7b26 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71
    frame #70: 0x00007fff9b542e24 AppKit`_DPSNextEvent + 1120
    frame #71: 0x00007fff9bcbe85e AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
    frame #72: 0x00007fff9b5377ab AppKit`-[NSApplication run] + 926
    frame #73: 0x000000010a184525 libqcocoa.dylib`___lldb_unnamed_symbol452$$libqcocoa.dylib + 2389
    frame #74: 0x0000000103cb8b91 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 417
    frame #75: 0x0000000103cbcf27 QtCore`QCoreApplication::exec() + 343
    frame #76: 0x00000001000c7784 libFreeCADGui.dylib`Gui::Application::runApplication() + 22308 at Application.cpp:1750
    frame #77: 0x000000010000b833 FreeCAD`main(argc=1, argv=0x00007fff5fbffa00) + 12995 at MainGui.cpp:238
    frame #78: 0x00007fffb31b3235 libdyld.dylib`start + 1


Hmmm, I should probably retest with experimental VBO off...

Exception with VBO off

Code: Select all

Process 71426 stopped
* thread #1: tid = 0x285aeb, 0x000000010e520903 GLEngine`gleRunVertexSubmitImmediate + 947, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x000000010e520903 GLEngine`gleRunVertexSubmitImmediate + 947
GLEngine`gleRunVertexSubmitImmediate:
->  0x10e520903 <+947>: movzwl (%rdx,%rcx,2), %ecx
    0x10e520907 <+951>: addl   -0x80(%rbp), %ecx
    0x10e52090a <+954>: movq   %rcx, -0x90(%rbp)
    0x10e520911 <+961>: jmp    0x10e520940               ; <+1008>
(lldb) bt
* thread #1: tid = 0x285aeb, 0x000000010e520903 GLEngine`gleRunVertexSubmitImmediate + 947, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000010e520903 GLEngine`gleRunVertexSubmitImmediate + 947
    frame #1: 0x000000010e3fb108 GLEngine`glDrawElements_Exec + 700
    frame #2: 0x00000001025a4ef3 libCoin.dylib`SoVertexArrayIndexer::render(cc_glglue const*, int, unsigned int) + 467
    frame #3: 0x00000001025ef6e4 libCoin.dylib`SoIndexedLineSet::GLRender(SoGLRenderAction*) + 1746
    frame #4: 0x000000012db76575 PartGui.so`PartGui::SoBrepEdgeSet::GLRender(this=0x0000000125b5a800, action=0x000000012500bb00) + 117 at SoBrepEdgeSet.cpp:88
    frame #5: 0x000000012db76b58 PartGui.so`PartGui::SoBrepEdgeSet::GLRenderBelowPath(this=0x0000000125b5a800, action=0x000000012500bb00) + 40 at SoBrepEdgeSet.cpp:101
    frame #6: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #7: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #8: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #9: 0x00000001024b4b63 libCoin.dylib`SoChildList::traverse(SoAction*, int, int) + 123
    frame #10: 0x000000010251149f libCoin.dylib`SoSwitch::doAction(SoAction*) + 385
    frame #11: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #12: 0x00000001024f7ab3 libCoin.dylib`SoGroup::GLRender(SoGLRenderAction*) + 347
    frame #13: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #14: 0x00000001024b4b63 libCoin.dylib`SoChildList::traverse(SoAction*, int, int) + 123
    frame #15: 0x000000010251149f libCoin.dylib`SoSwitch::doAction(SoAction*) + 385
    frame #16: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #17: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #18: 0x0000000100448727 libFreeCADGui.dylib`Gui::SoFCUnifiedSelection::GLRenderBelowPath(this=0x0000000118cd5b40, action=0x000000012500bb00) + 39 at SoFCUnifiedSelection.cpp:538
    frame #19: 0x000000010250e0e1 libCoin.dylib`SoSeparator::GLRenderBelowPath(SoGLRenderAction*) + 551
    frame #20: 0x0000000102337531 libCoin.dylib`SoAction::traverse(SoNode*) + 91
    frame #21: 0x000000010233b032 libCoin.dylib`SoGLRenderAction::beginTraversal(SoNode*) + 596
    frame #22: 0x000000010233c6d2 libCoin.dylib`SoGLRenderActionP::renderSingle(SoNode*) + 308
    frame #23: 0x000000010233b20b libCoin.dylib`SoGLRenderActionP::render(SoNode*) + 345
    frame #24: 0x000000010233b065 libCoin.dylib`SoGLRenderAction::beginTraversal(SoNode*) + 647
    frame #25: 0x00000001023372f6 libCoin.dylib`SoAction::apply(SoNode*) + 344
    frame #26: 0x0000000100454eed libFreeCADGui.dylib`Gui::SoBoxSelectionRenderAction::apply(this=0x000000012500bb00, node=0x000000012508eed0) + 45 at SoFCSelectionAction.cpp:1089
    frame #27: 0x000000010259fca2 libCoin.dylib`SoRenderManager::renderScene(SoGLRenderAction*, SoNode*, unsigned int) + 206
    frame #28: 0x000000010259fb4b libCoin.dylib`SoRenderManager::actuallyRender(SoGLRenderAction*, int, int, int) + 139
    frame #29: 0x000000010259f818 libCoin.dylib`SoRenderManager::renderSingle(SoGLRenderAction*, int, int, int) + 850
    frame #30: 0x000000010259f452 libCoin.dylib`SoRenderManager::render(SoGLRenderAction*, int, int, int) + 192
    frame #31: 0x00000001005016d4 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::actualRedraw(this=0x0000000104c2ba00) + 68 at QuarterWidget.cpp:921
    frame #32: 0x0000000100555540 libFreeCADGui.dylib`Gui::View3DInventorViewer::renderScene(this=0x0000000104c2ba00) + 672 at View3DInventorViewer.cpp:1503
    frame #33: 0x000000010055527a libFreeCADGui.dylib`Gui::View3DInventorViewer::actualRedraw(this=0x0000000104c2ba00) + 90 at View3DInventorViewer.cpp:1378
    frame #34: 0x00000001005013b2 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::paintEvent(this=0x0000000104c2ba00, event=0x00007fff5fbf85e0) + 498 at QuarterWidget.cpp:813
    frame #35: 0x0000000102f226c8 QtWidgets`QWidget::event(QEvent*) + 1144
    frame #36: 0x000000010301813d QtWidgets`QFrame::event(QEvent*) + 45
    frame #37: 0x00000001030aa327 QtWidgets`QAbstractScrollArea::viewportEvent(QEvent*) + 135
    frame #38: 0x0000000103247fe1 QtWidgets`QGraphicsView::viewportEvent(QEvent*) + 1505
    frame #39: 0x0000000100501640 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::viewportEvent(this=0x0000000104c2ba00, event=0x00007fff5fbf85e0) + 304 at QuarterWidget.cpp:889
    frame #40: 0x00000001030aaec4 QtWidgets`___lldb_unnamed_symbol2811$$QtWidgets + 36
    frame #41: 0x0000000103cbcb4b QtCore`QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 203
    frame #42: 0x0000000102ee1101 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 273
    frame #43: 0x0000000102ee2649 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
    frame #44: 0x0000000100171ff6 libFreeCADGui.dylib`Gui::GUIApplication::notify(this=0x00007fff5fbfca38, receiver=0x0000000118cd3d00, event=0x00007fff5fbf85e0) + 934 at GuiApplication.cpp:91
    frame #45: 0x0000000103cbc8b4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #46: 0x0000000102f1c6ef QtWidgets`QWidgetPrivate::sendPaintEvent(QRegion const&) + 47
    frame #47: 0x0000000102eeee04 QtWidgets`___lldb_unnamed_symbol105$$QtWidgets + 3316
    frame #48: 0x0000000102f22927 QtWidgets`QWidget::event(QEvent*) + 1751
    frame #49: 0x000000010302fc55 QtWidgets`QMainWindow::event(QEvent*) + 1733
    frame #50: 0x0000000102ee1116 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #51: 0x0000000102ee2649 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
    frame #52: 0x0000000100171ff6 libFreeCADGui.dylib`Gui::GUIApplication::notify(this=0x00007fff5fbfca38, receiver=0x00000001250114d0, event=0x00007fff5fbf93f8) + 934 at GuiApplication.cpp:91
    frame #53: 0x0000000103cbc8b4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #54: 0x0000000102eeae60 QtWidgets`___lldb_unnamed_symbol82$$QtWidgets + 320
    frame #55: 0x0000000102f268c3 QtWidgets`QWidget::repaint(QRect const&) + 211
    frame #56: 0x0000000102f267e4 QtWidgets`QWidget::repaint() + 52
    frame #57: 0x0000000100501685 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidget::redraw(this=0x0000000104c2ba00) + 37 at QuarterWidget.cpp:911
    frame #58: 0x0000000100503f53 libFreeCADGui.dylib`SIM::Coin3D::Quarter::QuarterWidgetP::rendercb(userdata=0x0000000104c2ba00, (null)=0x0000000118ccb0c0) + 51 at QuarterWidgetP.cpp:191
    frame #59: 0x00000001025c8502 libCoin.dylib`SoSensorManager::processDelayQueue(int) + 248
    frame #60: 0x0000000100507e73 libFreeCADGui.dylib`SIM::Coin3D::Quarter::SensorManager::idleTimeout(this=0x00000001103a1b10) + 51 at SensorManager.cpp:150
    frame #61: 0x000000010050b9af libFreeCADGui.dylib`SIM::Coin3D::Quarter::SensorManager::qt_static_metacall(_o=0x00000001103a1b10, _c=InvokeMetaMethod, _id=0, _a=0x00007fff5fbf9638) + 95 at moc_SensorManager.cpp:85
    frame #62: 0x0000000103cf0e20 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2992
    frame #63: 0x0000000103ce8a8d QtCore`QObject::event(QEvent*) + 77
    frame #64: 0x0000000102ee1116 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #65: 0x0000000102ee2649 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
    frame #66: 0x0000000100171ff6 libFreeCADGui.dylib`Gui::GUIApplication::notify(this=0x00007fff5fbfca38, receiver=0x00000001103a1d80, event=0x00007fff5fbfa0e8) + 934 at GuiApplication.cpp:91
    frame #67: 0x0000000103cbc8b4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #68: 0x0000000103d14e11 QtCore`QTimerInfoList::activateTimers() + 1025
    frame #69: 0x00000001098da852 libqcocoa.dylib`___lldb_unnamed_symbol442$$libqcocoa.dylib + 18
    frame #70: 0x00007fff9da663c1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #71: 0x00007fff9da472cd CoreFoundation`__CFRunLoopDoSources0 + 557
    frame #72: 0x00007fff9da467c6 CoreFoundation`__CFRunLoopRun + 934
    frame #73: 0x00007fff9da461c4 CoreFoundation`CFRunLoopRunSpecific + 420
    frame #74: 0x00007fff9cfa7ebc HIToolbox`RunCurrentEventLoopInMode + 240
    frame #75: 0x00007fff9cfa7cf1 HIToolbox`ReceiveNextEventCommon + 432
    frame #76: 0x00007fff9cfa7b26 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71
    frame #77: 0x00007fff9b542e24 AppKit`_DPSNextEvent + 1120
    frame #78: 0x00007fff9bcbe85e AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
    frame #79: 0x00007fff9b5377ab AppKit`-[NSApplication run] + 926
    frame #80: 0x00000001098db525 libqcocoa.dylib`___lldb_unnamed_symbol452$$libqcocoa.dylib + 2389
    frame #81: 0x0000000103cb8b91 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 417
    frame #82: 0x0000000103cbcf27 QtCore`QCoreApplication::exec() + 343
    frame #83: 0x00000001000c7784 libFreeCADGui.dylib`Gui::Application::runApplication() + 22308 at Application.cpp:1750
    frame #84: 0x000000010000b833 FreeCAD`main(argc=1, argv=0x00007fff5fbffa00) + 12995 at MainGui.cpp:238
    frame #85: 0x00007fffb31b3235 libdyld.dylib`start + 1
User avatar
f3nix
Posts: 213
Joined: Sat May 30, 2015 11:58 am

Re: FreeCAD Qt5 plan for deprecated WebKit?

Postby f3nix » Thu Mar 09, 2017 9:25 pm

Hi wmayer!
wmayer wrote:[*]When resizing the 3d viewer it flickers heavily
[*]In debug mode it creates a lot of error messages: Coin error in SoNode::GLRenderS(): GL error: 'GL_INVALID_OPERATION', nodetype: Separator (set envvar COIN_GLERROR_DEBUGGING=1 and re-run to get more information)[/list]


I do get them too here:
OS: Debian GNU/Linux 9.0 (stretch)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.10461 (Git)
Build type: Debug
Branch: qtopengl
Hash: ad5b7763c74eceafbd2f1db2d6f267f4ecfbc295
Python version: 2.7.13
Qt version: 5.7.1
Coin version: 4.0.0a
OCC version: 7.1.0

Was not able to find the root cause.

wmayer wrote:* Box zoom/selection/cutting: as soon as starting this mode the content of the 3d view disappears. When leaving this mode everything is fine again.


It looks like it has something to do with AA. When I switch it off everything works as expected.

wmayer wrote:Undock the 3d view, dock it: => the 3d canvas is totally misplaced. However, highlighting and selection still works like the canvas is correctly placed


Same here but I have to maximize the 3d viewer to see this issue.

Cheers,
Mateusz