Просмотр исходного кода

Merge pull request #1292 from pkviet/leaks

Fix several mem leaks
Jim 7 лет назад
Родитель
Сommit
cd70c2e037

+ 1 - 1
UI/slider-absoluteset-style.hpp

@@ -6,7 +6,7 @@ class SliderAbsoluteSetStyle : public QProxyStyle
 {
 public:
 	SliderAbsoluteSetStyle(const QString& baseStyle);
-	SliderAbsoluteSetStyle(QStyle* baseStyle);
+	SliderAbsoluteSetStyle(QStyle* baseStyle = Q_NULLPTR);
 	int styleHint(QStyle::StyleHint hint, const QStyleOption* option,
 		const QWidget* widget, QStyleHintReturn* returnData) const;
 };

+ 13 - 1
UI/volume-control.cpp

@@ -9,6 +9,7 @@
 #include <QSlider>
 #include <QLabel>
 #include <QPainter>
+#include <QStyleFactory>
 
 using namespace std;
 
@@ -246,7 +247,17 @@ VolControl::VolControl(OBSSource source_, bool showConfig, bool vertical)
 	obs_fader_attach_source(obs_fader, source);
 	obs_volmeter_attach_source(obs_volmeter, source);
 
-	slider->setStyle(new SliderAbsoluteSetStyle(slider->style()));
+	QString styleName = slider->style()->objectName();
+	QStyle *style;
+	style = QStyleFactory::create(styleName);
+	if (!style) {
+		style = new SliderAbsoluteSetStyle();
+	} else {
+		style = new SliderAbsoluteSetStyle(style);
+	}
+
+	style->setParent(slider);
+	slider->setStyle(style);
 
 	/* Call volume changed once to init the slider position and label */
 	VolumeChanged();
@@ -531,6 +542,7 @@ VolumeMeter::VolumeMeter(QWidget *parent, obs_volmeter_t *obs_volmeter,
 VolumeMeter::~VolumeMeter()
 {
 	updateTimerRef->RemoveVolControl(this);
+	delete tickPaintCache;
 }
 
 void VolumeMeter::setLevels(const float magnitude[MAX_AUDIO_CHANNELS],

+ 2 - 0
UI/window-basic-main.cpp

@@ -1856,6 +1856,8 @@ OBSBasic::~OBSBasic()
 	if (updateCheckThread && updateCheckThread->isRunning())
 		updateCheckThread->wait();
 
+	delete multiviewProjectorMenu;
+	delete trayMenu;
 	delete programOptions;
 	delete program;
 

+ 1 - 1
UI/window-basic-settings.cpp

@@ -714,7 +714,7 @@ OBSBasicSettings::~OBSBasicSettings()
 {
 	bool disableHotkeysInFocus = config_get_bool(App()->GlobalConfig(),
 			"General", "DisableHotkeysInFocus");
-
+	delete ui->filenameFormatting->completer();
 	main->EnableOutputs(true);
 	App()->EnableInFocusHotkeys(!disableHotkeysInFocus);
 }

+ 6 - 6
plugins/obs-outputs/librtmp/rtmp.c

@@ -4288,14 +4288,14 @@ RTMP_Close(RTMP *r)
     r->m_customSendParam = NULL;
 
 #if defined(CRYPTO) || defined(USE_ONLY_MD5)
-    if (!(r->Link.protocol & RTMP_FEATURE_WRITE) || (r->Link.pFlags & RTMP_PUB_CLEAN))
+    for (int idx = 0; idx < r->Link.nStreams; idx++)
     {
-        for (int idx = 0; idx < r->Link.nStreams; idx++)
-        {
-            free(r->Link.streams[idx].playpath.av_val);
-            r->Link.streams[idx].playpath.av_val = NULL;
-        }
+        free(r->Link.streams[idx].playpath.av_val);
+        r->Link.streams[idx].playpath.av_val = NULL;
+    }
 
+    if (!(r->Link.protocol & RTMP_FEATURE_WRITE) || (r->Link.pFlags & RTMP_PUB_CLEAN))
+    {
         r->Link.curStreamIdx = 0;
         r->Link.nStreams = 0;
     }