Skip to content

Comments

Fix recursive paint on Experimental timeline by adding repaint_after_…#5937

Open
jonoomph wants to merge 3 commits intodevelopfrom
fix-recursive-paint
Open

Fix recursive paint on Experimental timeline by adding repaint_after_…#5937
jonoomph wants to merge 3 commits intodevelopfrom
fix-recursive-paint

Conversation

@jonoomph
Copy link
Member

Fix recursive paint on Experimental timeline by adding repaint_after_paint.

Crash this fixes:

DEBUG preview_thread: Max timeline length/frames detected: 8227
DEBUG preview_thread: refreshFrame
DEBUG preview_thread: refreshFrame
[swscaler @ 00000229579c6bc0] Warning: data is not aligned! This can lead to a speed loss
QPaintDevice: Cannot destroy paint device that is being painted
QWidget::repaint: Recursive repaint detected
Caught signal 11 (SIGSEGV)
---- Unhandled Exception: Stack Trace ----
[3] _C_specific_handler, address 0x131FBD10
[4] _chkstk, address 0x13F260F0
[5] RtlLocateExtendedFeature, address 0x13DD1D90
[6] KiUserExceptionDispatcher, address 0x13F25AA0
[7] ZN8QPainter3endEv, address 0x45A418C0
[8] PyInit_QtGui, address 0xF010ADE0
[9] PyLong_FromUnsignedLong, address 0xD4B3F890
[10] PyObject_MakeTpCall, address 0xD4B2B9E0
[11] PyEval_EvalFrameDefault, address 0xD4B20A00
[12] PyEval_EvalCodeWithName, address 0xD4B1CBD0
[13] PyFunction_Vectorcall, address 0xD4B30770
[14] PyMethod_New, address 0xD4B3C0C0
[15] PyVectorcall_Call, address 0xD4B3C590
[16] ???
[17] ???
[18] ???
[19] PyInit_QtWidgets, address 0xF03CECA0
[20] ZN7QWidget5eventEP6QEvent, address 0xF5AC7200
[21] PyInit_QtWidgets, address 0xF03CECA0
[22] ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent, address 0xF5A87F50
[23] PyInit_QtWidgets, address 0xF03CECA0
[24] ZN16QCoreApplication20sendSpontaneousEventEP7QObjectP6QEvent, address 0xF6235200
[25] ZN14QWidgetPrivate14sendPaintEventERK7QRegion, address 0xF5ABFED0
[26] ZN14QWidgetPrivate10drawWidgetEP12QPaintDeviceRK7QRegionRK6QPoint6QFlagsINS_14DrawWidgetFlagEEP8QPainterP21QWidgetRepaintManager, address 0xF5ABFF40
[27] ZNK14QWidgetPrivate24shouldDiscardSyncRequestEv, address 0xF5A93C90
[28] ZN7QWidget5eventEP6QEvent, address 0xF5AC7200
[29] PyInit_QtWidgets, address 0xF03CECA0
[30] ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent, address 0xF5A87F50
[31] PyInit_QtWidgets, address 0xF03CECA0
[32] ZN16QCoreApplication9sendEventEP7QObjectP6QEvent, address 0xF6235010
[33] ZNK14QWidgetPrivate24shouldDiscardSyncRequestEv, address 0xF5A93C90
[34] ZN12QPixmapStyle11qt_metacallEN11QMetaObject4CallEiPPv, address 0xF5DFAB20
[35] ZThn16_NK7QWidget13sharedPainterEv, address 0xF5AAC2A0
[36] ZN7QWidget7repaintEv, address 0xF5AB23B0
[37] PyInit_QtWidgets, address 0xF03CECA0
[38] PyLong_FromUnsignedLong, address 0xD4B3F890
[39] PyObject_MakeTpCall, address 0xD4B2B9E0
[40] PyEval_EvalFrameDefault, address 0xD4B20A00
[41] PyCell_New, address 0xD4B30990
[42] PyMethod_New, address 0xD4B3C0C0
[43] PyVectorcall_Call, address 0xD4B3C590
[44] PyInit_QtCore, address 0xF09EA730
[45] PyInit_QtCore, address 0xF09EA730
[46] PyInit_QtCore, address 0xF09EA730
[47] PyInit_QtCore, address 0xF09EA730
[48] PyInit_QtCore, address 0xF09EA730
[49] ZN7QObject5eventEP6QEvent, address 0xF6262330
[50] ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent, address 0xF5A87F50
[51] PyInit_QtWidgets, address 0xF03CECA0
[52] ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent, address 0xF6234910
[53] ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData, address 0xF623AF90
[54] qt_plugin_instance, address 0xEFF3EEF0
[55] ZN21QEventDispatcherWin3213processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE, address 0xF6290990
[56] qt_plugin_instance, address 0xEFF3EEF0
[57] ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE, address 0xF6233350
[58] ZN16QCoreApplication4execEv, address 0xF623C0B0
[59] PyInit_QtWidgets, address 0xF03CECA0
[60] PyLong_FromUnsignedLong, address 0xD4B3F890
[61] PyObject_MakeTpCall, address 0xD4B2B9E0
[62] PyEval_EvalFrameDefault, address 0xD4B20A00
---- End of Stack Trace ----

C:\Program Files\OpenShot Video Editor>

@jonoomph
Copy link
Member Author

… call find_missing_files() flow - to prompt the user, or remove the effect if asset can not be found. Also it logs when assets/effects are removed.
…QWidget.repaint() calls during active paint/update cycles.

  - Replaced repaint() with update() in playback/zoom-heavy paths:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant