Browse Source

UI: Clear list boxes in ::closeEvent

Ensures that ->deleteLater events are put in to the event queue before
the destructor is called.
jp9000 10 years ago
parent
commit
87965fa9eb
1 changed files with 7 additions and 4 deletions
  1. 7 4
      obs/window-basic-main.cpp

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

@@ -683,10 +683,6 @@ OBSBasic::~OBSBasic()
 	if (advAudioWindow)
 	if (advAudioWindow)
 		delete advAudioWindow;
 		delete advAudioWindow;
 
 
-	ClearVolumeControls();
-	ui->sources->clear();
-	ui->scenes->clear();
-
 	obs_enter_graphics();
 	obs_enter_graphics();
 	gs_vertexbuffer_destroy(box);
 	gs_vertexbuffer_destroy(box);
 	gs_vertexbuffer_destroy(circle);
 	gs_vertexbuffer_destroy(circle);
@@ -1671,6 +1667,13 @@ void OBSBasic::closeEvent(QCloseEvent *event)
 	 * the program data is being freed */
 	 * the program data is being freed */
 	delete saveTimer;
 	delete saveTimer;
 	SaveProject();
 	SaveProject();
+
+	/* Clear the list boxes in ::closeEvent to ensure that we can process
+	 * any ->deleteLater events in this window created by Qt in relation to
+	 * their internal data */
+	ClearVolumeControls();
+	ui->sources->clear();
+	ui->scenes->clear();
 }
 }
 
 
 void OBSBasic::changeEvent(QEvent *event)
 void OBSBasic::changeEvent(QEvent *event)