From e2ee27efd4939db90383b2889d57a5b00a88d022 Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Thu, 29 Jul 2010 01:46:44 +0000 Subject: [PATCH] playlist file / directory error handling fixes, resize playlist refresh fix git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1342 6778bc44-b910-0410-a7a0-be141de4315d --- .../MilkdropPresetFactory.cpp | 6 +++--- src/libprojectM/PresetFactoryManager.cpp | 13 +++++++++++-- src/libprojectM/PresetFactoryManager.hpp | 4 ++-- src/libprojectM/projectM.cpp | 1 - src/projectM-pulseaudio/QPulseAudioThread.cpp | 15 +++++++-------- src/projectM-qt/qplaylisttableview.hpp | 4 ++-- src/projectM-qt/qprojectm_mainwindow.cpp | 13 ++++++++----- src/projectM-qt/qprojectmwidget.hpp | 9 ++++++--- 8 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp b/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp index 67af5349f..0418a7c3e 100644 --- a/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp +++ b/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp @@ -26,7 +26,7 @@ MilkdropPresetFactory::MilkdropPresetFactory(int gx, int gy): _usePresetOutputs( Eval::init_infix_ops(); _presetOutputs = createPresetOutputs(gx,gy); - _presetOutputs2 = createPresetOutputs(gx, gy); + _presetOutputs2 = createPresetOutputs(gx, gy); } MilkdropPresetFactory::~MilkdropPresetFactory() { @@ -37,13 +37,13 @@ MilkdropPresetFactory::~MilkdropPresetFactory() { BuiltinFuncs::destroy_builtin_func_db(); std::cerr << "[~MilkdropPresetFactory] delete preset out puts" << std::endl; delete(_presetOutputs); - delete(_presetOutputs2); + delete(_presetOutputs2); std::cerr << "[~MilkdropPresetFactory] done" << std::endl; } /* Reinitializes the engine variables to a default (conservative and sane) value */ -void resetPresetOutputs(PresetOutputs *presetOutputs) +void resetPresetOutputs(PresetOutputs * presetOutputs) { presetOutputs->zoom=1.0; diff --git a/src/libprojectM/PresetFactoryManager.cpp b/src/libprojectM/PresetFactoryManager.cpp index 75f4e66f7..7dea038a9 100644 --- a/src/libprojectM/PresetFactoryManager.cpp +++ b/src/libprojectM/PresetFactoryManager.cpp @@ -20,7 +20,7 @@ #endif #include -PresetFactoryManager::PresetFactoryManager() : _gx(0), _gy(0) {} +PresetFactoryManager::PresetFactoryManager() : _gx(0), _gy(0), initialized(false) {} PresetFactoryManager::~PresetFactoryManager() { for (std::vector::iterator pos = _factoryList.begin(); @@ -29,11 +29,20 @@ PresetFactoryManager::~PresetFactoryManager() { delete(*pos); } - + initialized = false; } + void PresetFactoryManager::initialize(int gx, int gy) { _gx = gx; _gy = gy; + + if (!initialized) { + initialized = true; + } else { + std::cout << "already initialized " << std::endl; + return; + } + PresetFactory * factory; #ifndef DISABLE_MILKDROP_PRESETS diff --git a/src/libprojectM/PresetFactoryManager.hpp b/src/libprojectM/PresetFactoryManager.hpp index 4d204e009..2dfa0a042 100644 --- a/src/libprojectM/PresetFactoryManager.hpp +++ b/src/libprojectM/PresetFactoryManager.hpp @@ -21,7 +21,7 @@ class PresetFactoryException : public std::exception virtual ~PresetFactoryException() throw() {} const std::string & message() const { return _message; } - private: + private: std::string _message; }; @@ -54,6 +54,6 @@ class PresetFactoryManager { mutable std::map _factoryMap; mutable std::vector _factoryList; void registerFactory(const std::string & extension, PresetFactory * factory); - + volatile bool initialized; }; #endif diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp index 209a028f2..6ec4bb167 100755 --- a/src/libprojectM/projectM.cpp +++ b/src/libprojectM/projectM.cpp @@ -223,7 +223,6 @@ void projectM::readConfig (const std::string & configFile ) projectM_init ( _settings.meshX, _settings.meshY, _settings.fps, _settings.textureSize, _settings.windowWidth,_settings.windowHeight); - _settings.beatSensitivity = beatDetect->beat_sensitivity = config.read ( "Hard Cut Sensitivity", 10.0 ); diff --git a/src/projectM-pulseaudio/QPulseAudioThread.cpp b/src/projectM-pulseaudio/QPulseAudioThread.cpp index 14573fad3..b69a93ebb 100644 --- a/src/projectM-pulseaudio/QPulseAudioThread.cpp +++ b/src/projectM-pulseaudio/QPulseAudioThread.cpp @@ -296,9 +296,7 @@ void QPulseAudioThread::pulseQuit ( int ret ) { assert ( mainloop_api ); mainloop_api->quit ( mainloop_api, ret ); - if (*s_qprojectM_MainWindowPtr) - delete(*s_qprojectM_MainWindowPtr); - *s_qprojectM_MainWindowPtr = 0; + } @@ -315,7 +313,8 @@ void QPulseAudioThread::stream_read_callback ( pa_stream *s, size_t length, void { fprintf ( stderr, "pa_stream_peek() failed: %s\n", pa_strerror ( pa_context_errno ( context ) ) ); pulseQuit ( 1 ); - return; + return +; } if ((!s_qprojectM_MainWindowPtr) || (!*s_qprojectM_MainWindowPtr)) @@ -352,16 +351,16 @@ void QPulseAudioThread::stream_state_callback ( pa_stream *s, void *userdata ) switch ( pa_stream_get_state ( s ) ) { case PA_STREAM_UNCONNECTED: -// qDebug() << "UNCONNECTED"; + qDebug() << "UNCONNECTED"; break; case PA_STREAM_CREATING: -// qDebug() << "CREATED"; + qDebug() << "CREATED"; break; case PA_STREAM_TERMINATED: -// qDebug() << "TERMINATED"; + qDebug() << "TERMINATED"; break; case PA_STREAM_READY: -// qDebug() << "READY"; + qDebug() << "READY"; if ( verbose ) { const pa_buffer_attr *a; diff --git a/src/projectM-qt/qplaylisttableview.hpp b/src/projectM-qt/qplaylisttableview.hpp index 7d55680cd..474f90abf 100644 --- a/src/projectM-qt/qplaylisttableview.hpp +++ b/src/projectM-qt/qplaylisttableview.hpp @@ -99,14 +99,14 @@ class QPlaylistTableView : public QTableView } inline void resizeEvent(QResizeEvent * event) { - + QTableView::resizeEvent(event); emit(resized(event)); } inline void mousePressEvent(QMouseEvent * event) { QAbstractItemView::mousePressEvent(event); if (event->button() == Qt::RightButton) { - emit(mousePressed(event, selectedIndexes())); + emit(mousePressed(event, selectedIndexes())); } else ; diff --git a/src/projectM-qt/qprojectm_mainwindow.cpp b/src/projectM-qt/qprojectm_mainwindow.cpp index 19e5aab89..35d992ae0 100644 --- a/src/projectM-qt/qprojectm_mainwindow.cpp +++ b/src/projectM-qt/qprojectm_mainwindow.cpp @@ -98,7 +98,8 @@ activePresetIndex(new Nullable), playlistItemCounter(0), m_QPresetEditorDi connect(ui->tableView, SIGNAL(resized(QResizeEvent *)), this, SLOT(refreshHeaders(QResizeEvent*))); - connect(ui->tableView, SIGNAL(mousePressed(QMouseEvent*, const QModelIndexList &)), this, SLOT(popupPlaylistContextMenu(QMouseEvent*, const QModelIndexList &))); + connect(ui->tableView, SIGNAL(mousePressed(QMouseEvent*, const QModelIndexList &)), this, + SLOT(popupPlaylistContextMenu(QMouseEvent*, const QModelIndexList &))); connect ( m_QProjectMWidget, SIGNAL ( projectM_Initialized(QProjectM*) ), this, SLOT ( postProjectM_Initialize() ) ); @@ -662,7 +663,7 @@ void QProjectM_MainWindow::refreshHeaders(QResizeEvent * event) { // Add 1 to skip the Name column hHeader->setResizeMode (i+1, QHeaderView::ResizeToContents); sizeTotal += hHeader->sectionSize(i+1); - } + } hHeader->resizeSection(0, ui->tableView->size().width()-20-sizeTotal); @@ -883,11 +884,13 @@ void QProjectM_MainWindow::openPlaylistDialog() QString url = m_QPlaylistFileDialog->selectedFiles() [0]; - if ( !playlistModel->readPlaylist ( url ) ) { + const bool loadedOk = playlistModel->readPlaylist ( url ); + + if (!loadedOk) { qDebug() << "could not open playlist"; url = QString(); - - } + } + qDebug() << "url: " << url; updatePlaylistUrl(url); diff --git a/src/projectM-qt/qprojectmwidget.hpp b/src/projectM-qt/qprojectmwidget.hpp index 586c5e884..3756af67e 100644 --- a/src/projectM-qt/qprojectmwidget.hpp +++ b/src/projectM-qt/qprojectmwidget.hpp @@ -22,6 +22,7 @@ #ifndef QPROJECTM_WIDGET_HPP #define QPROJECTM_WIDGET_HPP +#include #include "qprojectm.hpp" #include #include @@ -111,7 +112,7 @@ class QProjectMWidget : public QGLWidget void resetProjectM() { - + std::cout << "reseting" << std::endl; qDebug() << "reset start"; emit ( projectM_BeforeDestroy() ); @@ -246,8 +247,10 @@ class QProjectMWidget : public QGLWidget void initializeGL() { - this->m_projectM = new QProjectM ( m_config_file ); - projectM_Initialized ( m_projectM ); + if (m_projectM == 0) { + this->m_projectM = new QProjectM ( m_config_file ); + projectM_Initialized ( m_projectM ); + } } inline void paintGL()