diff --git a/ui/renderthread.h b/ui/renderthread.h index e3c95105b..cd4f1aec3 100644 --- a/ui/renderthread.h +++ b/ui/renderthread.h @@ -25,13 +25,16 @@ public: void start_render(QOpenGLContext* share, Sequence* s, const QString &save = nullptr, GLvoid *pixels = nullptr, int idivider = 0); bool did_texture_fail(); void cancel(); + +public slots: + // cleanup functions + void delete_ctx(); signals: void ready(); private: // cleanup functions void delete_texture(); void delete_fbo(); - void delete_ctx(); QWaitCondition waitCond; QOffscreenSurface surface; diff --git a/ui/viewerwidget.cpp b/ui/viewerwidget.cpp index a57208283..7791d28d4 100644 --- a/ui/viewerwidget.cpp +++ b/ui/viewerwidget.cpp @@ -253,9 +253,16 @@ void ViewerWidget::seek_from_click(int x) { } void ViewerWidget::context_destroy() { + makeCurrent(); + if (viewer->seq != nullptr) { + closeActiveClips(viewer->seq); + } if (window != nullptr) { delete window; } + //QMetaObject::invokeMethod(renderer, "delete_ctx", Qt::QueuedConnection); + renderer->delete_ctx(); + doneCurrent(); } EffectGizmo* ViewerWidget::get_gizmo_from_mouse(int x, int y) { @@ -367,7 +374,6 @@ void ViewerWidget::mouseMoveEvent(QMouseEvent* event) { void ViewerWidget::mouseReleaseEvent(QMouseEvent *event) { if (dragging && gizmos != nullptr && !(event->button() == Qt::MiddleButton || panel_timeline->tool == TIMELINE_TOOL_HAND)) { - qDebug() << "gizmos"; move_gizmos(event, true); } dragging = false;