Fixes a race condition during shutdown where the dialogs aren't deleted before another render attempt occurs, by which time the sources are already freed, resulting in a crash.
@@ -394,6 +394,9 @@ void OBSBasicFilters::closeEvent(QCloseEvent *event)
if (!event->isAccepted())
return;
+ obs_display_remove_draw_callback (ui->preview->GetDisplay(),
+ OBSBasicFilters::DrawPreview, this);
+
main->SaveProject();
}
@@ -168,6 +168,9 @@ void OBSBasicInteraction::closeEvent(QCloseEvent *event)
width());
config_set_int(App()->GlobalConfig(), "InteractionWindow", "cy",
height());
+ obs_display_remove_draw_callback(ui->preview->GetDisplay(),
+ OBSBasicInteraction::DrawPreview, this);
static int TranslateQtKeyboardEventModifiers(QInputEvent *event, bool mouseEvent) {
@@ -205,6 +205,9 @@ void OBSBasicProperties::Cleanup()
config_set_int(App()->GlobalConfig(), "PropertiesWindow", "cy",
+ obs_display_remove_draw_callback(preview->GetDisplay(),
+ OBSBasicProperties::DrawPreview, this);
void OBSBasicProperties::reject()