浏览代码

UI: Fix memory leak with missing files dialog

VodBox 4 年之前
父节点
当前提交
eb98505a2c
共有 3 个文件被更改,包括 10 次插入5 次删除
  1. 7 4
      UI/window-basic-main.cpp
  2. 3 0
      UI/window-basic-main.hpp
  3. 0 1
      UI/window-missing-files.cpp

+ 7 - 4
UI/window-basic-main.cpp

@@ -51,7 +51,6 @@
 #include "window-log-reply.hpp"
 #include "window-projector.hpp"
 #include "window-remux.hpp"
-#include "window-missing-files.hpp"
 #include "qt-wrappers.hpp"
 #include "context-bar-controls.hpp"
 #include "obs-proxy-style.hpp"
@@ -1142,9 +1141,13 @@ retryScene:
 	LogScenes();
 
 	if (obs_missing_files_count(files) > 0) {
-		OBSMissingFiles *miss = new OBSMissingFiles(files, this);
-		miss->show();
-		miss->raise();
+		missDialog = new OBSMissingFiles(files, this);
+		missDialog->show();
+		missDialog->raise();
+
+		auto close = [=]() { delete missDialog; };
+
+		connect(missDialog, &OBSMissingFiles::finished, close);
 	} else {
 		obs_missing_files_destroy(files);
 	}

+ 3 - 0
UI/window-basic-main.hpp

@@ -31,6 +31,7 @@
 #include "window-basic-transform.hpp"
 #include "window-basic-adv-audio.hpp"
 #include "window-basic-filters.hpp"
+#include "window-missing-files.hpp"
 #include "window-projector.hpp"
 #include "window-basic-about.hpp"
 #include "auth-base.hpp"
@@ -479,6 +480,8 @@ private:
 	QList<QDialog *> modalDialogs;
 	QList<QMessageBox *> visMsgBoxes;
 
+	OBSMissingFiles *missDialog;
+
 	QList<QPoint> visDlgPositions;
 
 	QByteArray startingDockLayout;

+ 0 - 1
UI/window-missing-files.cpp

@@ -557,7 +557,6 @@ void OBSMissingFiles::saveFiles()
 	}
 
 	QDialog::accept();
-	destroy();
 }
 
 void OBSMissingFiles::browseFolders()