diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-01-17 16:15:53 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-01-17 16:15:53 +0000 |
| commit | e5620546cb3c889193985761d558f6079819981b (patch) | |
| tree | 0828f16ef313287750f74c00d18a06d2859fef25 /src | |
| parent | 740b179d7565ca0f846817d4abc6fee8fb8ca7cc (diff) | |
| download | qmmp-e5620546cb3c889193985761d558f6079819981b.tar.gz qmmp-e5620546cb3c889193985761d558f6079819981b.tar.bz2 qmmp-e5620546cb3c889193985761d558f6079819981b.zip | |
some improvements inside Visual::takeData
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6987 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/visual.cpp | 21 | ||||
| -rw-r--r-- | src/qmmp/visual.h | 2 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/qmmp/visual.cpp b/src/qmmp/visual.cpp index 20397a366..5a12799c8 100644 --- a/src/qmmp/visual.cpp +++ b/src/qmmp/visual.cpp @@ -27,6 +27,7 @@ #include <QDialog> #include <QDir> #include <QPluginLoader> +#include "statehandler.h" #include "visualfactory.h" #include "output.h" #include "visualbuffer_p.h" @@ -72,8 +73,16 @@ bool Visual::takeData(float *left, float *right) VisualNode *node = m_buffer.take(); if(node) { - memcpy(left, node->data[0], 512 * sizeof(float)); - memcpy(right, node->data[1], 512 * sizeof(float)); + if(left && right) + { + memcpy(left, node->data[0], QMMP_VISUAL_NODE_SIZE * sizeof(float)); + memcpy(right, node->data[1], QMMP_VISUAL_NODE_SIZE * sizeof(float)); + } + else if(left && !right) + { + for(int i = 0; i < QMMP_VISUAL_NODE_SIZE; ++i) + left[i] = qBound(-1.0f, (node->data[0][i] + node->data[1][i]) / 2, 1.0f); + } } m_buffer.mutex()->unlock(); return node != 0; @@ -122,6 +131,9 @@ void Visual::setEnabled(VisualFactory* factory, bool enable) connect(visual, SIGNAL(closedByUser()), m_receiver, m_member); visual->setWindowFlags(Qt::Window); m_vis_map.insert (factory, visual); + Qmmp::State st = StateHandler::instance()->state(); + if(st == Qmmp::Playing || st == Qmmp::Buffering || st == Qmmp::Paused) + visual->start(); m_visuals.append(visual); visual->show(); } @@ -153,7 +165,12 @@ bool Visual::isEnabled(VisualFactory* factory) void Visual::add(Visual *visual) { if (!m_visuals.contains(visual)) + { + Qmmp::State st = StateHandler::instance()->state(); + if(st == Qmmp::Playing || st == Qmmp::Buffering || st == Qmmp::Paused) + visual->start(); m_visuals.append(visual); + } } void Visual::remove(Visual *visual) diff --git a/src/qmmp/visual.h b/src/qmmp/visual.h index 6a5d7ef9c..3295f5f4d 100644 --- a/src/qmmp/visual.h +++ b/src/qmmp/visual.h @@ -122,7 +122,7 @@ protected: */ virtual void closeEvent (QCloseEvent *event); - bool takeData(float *left, float *right); + bool takeData(float *left, float *right = 0); private: Decoder *m_decoder; |
