From cebedf146069e4d4c5b9cb6e3ce163d46a564e53 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 29 Aug 2015 03:09:44 +0200 Subject: [PATCH] Deep redesign: corrections after Valgrind memcheck --- .gitignore | 2 ++ plugins/samplesource/bladerf/bladerfgui.cpp | 1 + .../samplesource/bladerf/bladerfplugin.cpp | 21 +++++++++++++++---- sdrbase/dsp/threadedsamplesink.cpp | 1 + sdrbase/plugin/pluginmanager.cpp | 3 ++- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index f13285b5f..2f0398bd8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ CMakeLists.txt.user* build/* +qtbuild/* LOCAL/* +sdrangelove.supp .cproject .project .settings/ diff --git a/plugins/samplesource/bladerf/bladerfgui.cpp b/plugins/samplesource/bladerf/bladerfgui.cpp index 803aad8d0..095890223 100644 --- a/plugins/samplesource/bladerf/bladerfgui.cpp +++ b/plugins/samplesource/bladerf/bladerfgui.cpp @@ -42,6 +42,7 @@ BladerfGui::BladerfGui(PluginAPI* pluginAPI, QWidget* parent) : BladerfGui::~BladerfGui() { + delete m_sampleSource; // Valgrind memcheck delete ui; } diff --git a/plugins/samplesource/bladerf/bladerfplugin.cpp b/plugins/samplesource/bladerf/bladerfplugin.cpp index 07faa42f4..66c4756ad 100644 --- a/plugins/samplesource/bladerf/bladerfplugin.cpp +++ b/plugins/samplesource/bladerf/bladerfplugin.cpp @@ -32,7 +32,8 @@ const PluginDescriptor BlderfPlugin::m_pluginDescriptor = { }; BlderfPlugin::BlderfPlugin(QObject* parent) : - QObject(parent) + QObject(parent), + m_pluginAPI(0) { } @@ -51,6 +52,7 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources() { SampleSourceDevices result; struct bladerf_devinfo *devinfo; + int count = bladerf_get_device_list(&devinfo); for(int i = 0; i < count; i++) @@ -61,16 +63,27 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources() s.writeString(2, devinfo[i].serial); result.append(SampleSourceDevice(displayedName, "org.osmocom.sdr.samplesource.bladerf", s.final())); } + + bladerf_free_device_list(devinfo); // Valgrind memcheck + return result; } PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceName, const QByteArray& address) { - if(sourceName == "org.osmocom.sdr.samplesource.bladerf") { + if (!m_pluginAPI) + { + return 0; + } + + if(sourceName == "org.osmocom.sdr.samplesource.bladerf") + { BladerfGui* gui = new BladerfGui(m_pluginAPI); m_pluginAPI->setInputGUI(gui); return gui; - } else { - return NULL; + } + else + { + return 0; } } diff --git a/sdrbase/dsp/threadedsamplesink.cpp b/sdrbase/dsp/threadedsamplesink.cpp index 4dd86200b..6781ffa0a 100644 --- a/sdrbase/dsp/threadedsamplesink.cpp +++ b/sdrbase/dsp/threadedsamplesink.cpp @@ -43,6 +43,7 @@ ThreadedSampleSink::ThreadedSampleSink(SampleSink* sampleSink, QObject *parent) ThreadedSampleSink::~ThreadedSampleSink() { + delete m_threadedSampleFifo; // Valgrind memcheck delete m_thread; } diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index d295a8bf6..08caf8bb1 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -347,8 +347,9 @@ void PluginManager::loadPlugins(const QDir& dir) else { loader->unload(); - delete loader; } + + delete loader; // Valgrind memcheck } }