aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-18 07:14:42 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-18 07:14:42 +0000
commit63223b02008d1979cb8b05ec2c7db903682b576c (patch)
tree087ddcd957232a73cbb8d482f512ca587af9cac0
parentc60c6025069c3f9a4590a1742682564b61c2c1a1 (diff)
downloadqmmp-63223b02008d1979cb8b05ec2c7db903682b576c.tar.gz
qmmp-63223b02008d1979cb8b05ec2c7db903682b576c.tar.bz2
qmmp-63223b02008d1979cb8b05ec2c7db903682b576c.zip
projectm: fixed build
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6992 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Visual/CMakeLists.txt2
-rw-r--r--src/plugins/Visual/Visual.pro2
-rw-r--r--src/plugins/Visual/projectm/projectmplugin.cpp63
-rw-r--r--src/plugins/Visual/projectm/projectmplugin.h14
-rw-r--r--src/plugins/Visual/projectm/projectmwidget.cpp6
-rw-r--r--src/plugins/Visual/projectm/projectmwidget.h3
6 files changed, 54 insertions, 36 deletions
diff --git a/src/plugins/Visual/CMakeLists.txt b/src/plugins/Visual/CMakeLists.txt
index 656000b8d..c6571092a 100644
--- a/src/plugins/Visual/CMakeLists.txt
+++ b/src/plugins/Visual/CMakeLists.txt
@@ -6,5 +6,5 @@ add_subdirectory(analyzer)
ENDIF(USE_ANALYZER)
IF(USE_PROJECTM)
-#add_subdirectory(projectm)
+add_subdirectory(projectm)
ENDIF(USE_PROJECTM)
diff --git a/src/plugins/Visual/Visual.pro b/src/plugins/Visual/Visual.pro
index fad9d2b8d..e3f6d5ecb 100644
--- a/src/plugins/Visual/Visual.pro
+++ b/src/plugins/Visual/Visual.pro
@@ -3,5 +3,5 @@ TEMPLATE = subdirs
SUBDIRS += analyzer
contains(CONFIG, PROJECTM_PLUGIN){
-# SUBDIRS += projectm
+ SUBDIRS += projectm
}
diff --git a/src/plugins/Visual/projectm/projectmplugin.cpp b/src/plugins/Visual/projectm/projectmplugin.cpp
index a3efab8e1..e691dd89f 100644
--- a/src/plugins/Visual/projectm/projectmplugin.cpp
+++ b/src/plugins/Visual/projectm/projectmplugin.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -37,6 +37,7 @@
ProjectMPlugin::ProjectMPlugin (QWidget *parent)
: Visual (parent, Qt::Window | Qt::MSWindowsOwnDC)
{
+ m_running = false;
setlocale(LC_NUMERIC, "C"); //fixes problem with none-english locales
setWindowTitle(tr("ProjectM"));
setWindowIcon(parent->windowIcon());
@@ -62,51 +63,55 @@ ProjectMPlugin::ProjectMPlugin (QWidget *parent)
restoreGeometry(settings.value("ProjectM/geometry").toByteArray());
m_splitter->setSizes(QList<int>() << 300 << 300);
m_splitter->restoreState(settings.value("ProjectM/splitter_sizes").toByteArray());
+
+ m_timer = new QTimer(this);
+ m_timer->setInterval(0);
+ connect(m_timer, SIGNAL(timeout()), SLOT(onTimeout()));
}
ProjectMPlugin::~ProjectMPlugin()
{}
-void ProjectMPlugin::clear()
+void ProjectMPlugin::start()
{
- update();
+ m_running = true;
+ if(isVisible())
+ m_timer->start();
}
-void ProjectMPlugin::setFullScreen(bool yes)
+void ProjectMPlugin::stop()
{
- if(yes)
- setWindowState(windowState() | Qt::WindowFullScreen);
- else
- setWindowState(windowState() & ~Qt::WindowFullScreen);
+ m_timer->stop();
+ m_running = false;
+ update();
}
-void ProjectMPlugin::add (float *data, size_t samples, int chan)
+void ProjectMPlugin::onTimeout()
{
projectM *instance = m_projectMWidget->projectMInstance();
if (!instance)
return;
- size_t frames = qMin(samples / chan, (size_t)512);
-
- if(chan == 1)
+ if(takeData(m_left, m_right))
{
- for(size_t i = 0; i < frames; i++)
+ for(size_t i = 0; i < 512; i++)
{
- m_buf[0][i] = data[i*chan] * 32767.0;
- m_buf[1][i] = data[i*chan] * 32767.0;
+ m_buf[0][i] = m_left[i] * 32767.0;
+ m_buf[1][i] = m_right[i] * 32767.0;
}
- }
- else
- {
- for(size_t i = 0; i < frames; i++)
- {
- m_buf[0][i] = data[i*chan] * 32767.0;
- m_buf[1][i] = data[i*chan+1] * 32767.0;
- }
+ m_projectMWidget->projectMInstance()->pcm()->addPCM16(m_buf);
}
- m_projectMWidget->projectMInstance()->pcm()->addPCM16(m_buf);
+ m_projectMWidget->updateGL();
+}
+
+void ProjectMPlugin::setFullScreen(bool yes)
+{
+ if(yes)
+ setWindowState(windowState() | Qt::WindowFullScreen);
+ else
+ setWindowState(windowState() & ~Qt::WindowFullScreen);
}
void ProjectMPlugin::closeEvent (QCloseEvent *event)
@@ -117,3 +122,13 @@ void ProjectMPlugin::closeEvent (QCloseEvent *event)
settings.setValue("ProjectM/splitter_sizes", m_splitter->saveState());
Visual::closeEvent(event); //removes visualization object
}
+
+void ProjectMPlugin::showEvent(QShowEvent *)
+{
+ m_timer->start();
+}
+
+void ProjectMPlugin::hideEvent(QHideEvent *)
+{
+ m_timer->stop();
+}
diff --git a/src/plugins/Visual/projectm/projectmplugin.h b/src/plugins/Visual/projectm/projectmplugin.h
index 62344d0a6..e61c1dcb0 100644
--- a/src/plugins/Visual/projectm/projectmplugin.h
+++ b/src/plugins/Visual/projectm/projectmplugin.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -21,6 +21,7 @@
#define PROJECTMPLUGIN_H
#include <QWidget>
+#include <QTime>
#include <qmmp/visual.h>
class QTimer;
@@ -35,18 +36,25 @@ public:
ProjectMPlugin(QWidget *parent = 0);
virtual ~ProjectMPlugin();
- void add(float *data, size_t samples, int chan);
- void clear();
+public slots:
+ void start();
+ void stop();
private slots:
+ void onTimeout();
void setFullScreen(bool yes);
private:
void closeEvent(QCloseEvent *event);
+ void showEvent(QShowEvent *);
+ void hideEvent(QHideEvent *);
QTimer *m_timer;
ProjectMWidget *m_projectMWidget;
QSplitter *m_splitter;
short m_buf[2][512];
+ float m_left[QMMP_VISUAL_NODE_SIZE];
+ float m_right[QMMP_VISUAL_NODE_SIZE];
+ bool m_running;
};
diff --git a/src/plugins/Visual/projectm/projectmwidget.cpp b/src/plugins/Visual/projectm/projectmwidget.cpp
index 8f0967b11..a9072db51 100644
--- a/src/plugins/Visual/projectm/projectmwidget.cpp
+++ b/src/plugins/Visual/projectm/projectmwidget.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* Copyright (C) 2007 by projectM team *
@@ -22,7 +22,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include <QTimer>
#include <QDir>
#include <QKeyEvent>
#include <QMenu>
@@ -43,8 +42,6 @@ ProjectMWidget::ProjectMWidget(QListWidget *listWidget, QWidget *parent)
setMouseTracking(true);
m_listWidget = listWidget;
m_projectM = 0;
- m_timer = new QTimer(this);
- connect(m_timer, SIGNAL(timeout()),SLOT(updateGL()));
m_menu = new QMenu(this);
connect(SoundCore::instance(), SIGNAL(metaDataChanged()), SLOT(updateTitle()));
#if QT_VERSION >= 0x040700
@@ -134,7 +131,6 @@ void ProjectMWidget::initializeGL()
connect(m_listWidget, SIGNAL(currentRowChanged(int)), m_projectM, SLOT(selectPreset(int)));
connect(m_projectM, SIGNAL(currentPresetChanged(int)), SLOT(setCurrentRow(int)));
updateTitle();
- m_timer->start(0);
}
}
diff --git a/src/plugins/Visual/projectm/projectmwidget.h b/src/plugins/Visual/projectm/projectmwidget.h
index e6f739646..94d535ed0 100644
--- a/src/plugins/Visual/projectm/projectmwidget.h
+++ b/src/plugins/Visual/projectm/projectmwidget.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2014 by Ilya Kotov *
+ * Copyright (C) 2009-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -66,7 +66,6 @@ private:
void createActions();
ProjectMWrapper *m_projectM;
QMenu *m_menu;
- QTimer *m_timer;
QListWidget *m_listWidget;
};