mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
UI: Fix memory leak with Manage Broadcast dialog
When OBS has been connected to a YouTube account, the Manage Broadcast dialog becomes available. Opening and closing this dialog leaks about 2-3 MB of memory each time. This happens because the dialog is never deleted, and a new object is created every time the dialog opens. If we set Qt::WA_DeleteOnClose on the dialog, then the dialog->exec() call would call delete this. However, if the dialog->Valid() call returned false (this should currently be impossible), then exec is never called, so it would not clean up. To fix this, make the dialog stack-allocated instead of using new and delete. Detected by clang-analyzer.
This commit is contained in:
parent
12d1f1c335
commit
dbdf82da80
|
@ -6668,12 +6668,10 @@ void OBSBasic::SetupBroadcast()
|
|||
#if YOUTUBE_ENABLED
|
||||
Auth *const auth = GetAuth();
|
||||
if (IsYouTubeService(auth->service())) {
|
||||
OBSYoutubeActions *dialog;
|
||||
dialog = new OBSYoutubeActions(this, auth, broadcastReady);
|
||||
connect(dialog, &OBSYoutubeActions::ok, this,
|
||||
OBSYoutubeActions dialog(this, auth, broadcastReady);
|
||||
connect(&dialog, &OBSYoutubeActions::ok, this,
|
||||
&OBSBasic::YouTubeActionDialogOk);
|
||||
int result = dialog->Valid() ? dialog->exec()
|
||||
: QDialog::Rejected;
|
||||
int result = dialog.Valid() ? dialog.exec() : QDialog::Rejected;
|
||||
if (result != QDialog::Accepted) {
|
||||
if (!broadcastReady)
|
||||
ui->broadcastButton->setChecked(false);
|
||||
|
|
Loading…
Reference in a new issue