From 747f5d4af639efd26b25d3a9eecdfbc4ca7107fe Mon Sep 17 00:00:00 2001 From: santi Date: Thu, 24 Jul 2014 14:29:04 +0200 Subject: [PATCH] Fixed sigsev on exit On AudioMotor destructor --- lms-audio.xlm | 2 +- src/audiomotor.cpp | 6 ++--- src/libremediaserver-audio.cpp | 45 +++++++++++++++++----------------- src/medialibrary.cpp | 6 ++--- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/lms-audio.xlm b/lms-audio.xlm index b07173b..434b588 100644 --- a/lms-audio.xlm +++ b/lms-audio.xlm @@ -1,5 +1,5 @@ - + diff --git a/src/audiomotor.cpp b/src/audiomotor.cpp index 558e6f4..1eb793f 100644 --- a/src/audiomotor.cpp +++ b/src/audiomotor.cpp @@ -98,7 +98,7 @@ void AudioMotor::close() // disconnect(m_pd_audio, SIGNAL(readyReadStandardError()), this, SLOT(stdout())); disconnect(m_pd_audio, SIGNAL(finished(int)), this, SLOT(restartAudio())); - if (!m_pd_audio->waitForFinished(1000)) +// if (!m_pd_audio->waitForFinished(1000)) m_pd_audio->terminate(); @@ -109,14 +109,14 @@ void AudioMotor::close() // delete m_writePD; // m_writePD = NULL; } -/* if (m_readPD != NULL) + if (m_readPD != NULL) { disconnect(m_readPD, SIGNAL(newConnection()),this, SLOT(newPeer())); m_readPD->close(); delete m_readPD; m_readPD = NULL; } - +/* QFile socket(SOCKET); if (socket.exists()) { diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp index 7a0e2fd..9a29b27 100755 --- a/src/libremediaserver-audio.cpp +++ b/src/libremediaserver-audio.cpp @@ -57,22 +57,6 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent) topWidget->setWidget(amw); addDockWidget(Qt::TopDockWidgetArea, topWidget); - // Parse the command line options - if (args.contains("-gui")) - { - qDebug()<< "libremediaserver Constructor option GUI detected"; - AudioMotor::getInstance()->setGui(true); - textEdit->append("Pure Data GUI's will be shown"); - } else { AudioMotor::getInstance()->setGui(false); } - - connect(AudioMotor::getInstance(), SIGNAL(toTerminal(QString)), - this, SLOT(toTerminal(QString))); - - if (args.contains("-log")) - { - textEdit->append("Logging to file"); - } - // Conectamos los menus connect(ui.actionOpen_conf, SIGNAL(triggered()), this, SLOT(openFile())); connect(ui.actionSave_conf, SIGNAL(triggered()), this, SLOT(saveFile())); @@ -96,11 +80,31 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent) ola, SLOT( setDMXConf(dmxSetting) ) ); // Lee la configuración por defecto - while (!set->readDefaultFile()) { + if (!set->readDefaultFile()) { // Dar la oportunidad de cargar otro fichero de configuración // Crear el fichero por defecto. } + + // Parse the command line options + if (args.contains("-gui")) + { + qDebug()<< "libremediaserver Constructor option GUI detected"; + AudioMotor::getInstance()->setGui(true); + textEdit->append("Pure Data GUI's will be shown"); + } else { AudioMotor::getInstance()->setGui(false); } + + connect(AudioMotor::getInstance(), SIGNAL(toTerminal(QString)), + this, SLOT(toTerminal(QString))); + + if (args.contains("-log")) + { + textEdit->append("Logging to file"); + } + // Iniciamos Pure Data + connect(AudioMotor::getInstance(), SIGNAL(loadbang()), + this, SLOT (loadbang())); + AudioMotor::getInstance()->init(); connect(AudioMotor::getInstance(), SIGNAL(mediaLoaded(int, QString, QString)), @@ -109,9 +113,6 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent) connect(AudioMotor::getInstance(), SIGNAL(volChanged(int, int)), aw, SLOT(volChanged(int, int))); - connect(AudioMotor::getInstance(), SIGNAL(loadbang()), - this, SLOT (loadbang())); - connect(ola, SIGNAL( dmxOutput(int, int, int) ), this, SLOT( dmxInput(int, int, int) ) ); @@ -128,13 +129,13 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent) libreMediaServerAudio::~libreMediaServerAudio() { // save_finish(); - delete MediaLibrary::getInstance(); +// delete MediaLibrary::getInstance(); ola->stop(); AudioMotor::getInstance()->close(); // qDebug() << "PD Audio restarts: " << m_startaudio; qDebug() << QDate::currentDate() << QTime::currentTime(); qDebug() << "********************************************************************************"; - return; +// return; } /////////////////////////////////////////////////////////////////// diff --git a/src/medialibrary.cpp b/src/medialibrary.cpp index 02e5a89..2e13651 100644 --- a/src/medialibrary.cpp +++ b/src/medialibrary.cpp @@ -14,10 +14,10 @@ MediaLibrary *MediaLibrary::getInstance() { MediaLibrary::MediaLibrary(QObject *parent) : QObject(parent) - ,m_media(new QList) +// ,m_media(new QList) , m_pathmedia() { - initMediaLibrary(); +// initMediaLibrary(); qDebug("Init MediaLibrary"); } @@ -32,7 +32,7 @@ void MediaLibrary::initMediaLibrary() { qWarning(m_pathmedia.toAscii().constData()); return; } -// m_media = new QList; + m_media = new QList; dir.setFilter(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot); QFileInfoList filelist = dir.entryInfoList(); dir.setFilter(QDir::Files);