aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-17 16:15:53 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-17 16:15:53 +0000
commite5620546cb3c889193985761d558f6079819981b (patch)
tree0828f16ef313287750f74c00d18a06d2859fef25 /src
parent740b179d7565ca0f846817d4abc6fee8fb8ca7cc (diff)
downloadqmmp-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.cpp21
-rw-r--r--src/qmmp/visual.h2
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;