aboutsummaryrefslogtreecommitdiff
path: root/lib/output.cpp
diff options
context:
space:
mode:
authorvovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-07 13:36:34 +0000
committervovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-07 13:36:34 +0000
commit06d1877811fa6aa97dddc0e03bcde4e766928c87 (patch)
treec25462d0e58c3d58c728664440412bf4f16a49ec /lib/output.cpp
parent3f6b60f23c44a8ba8dd97ca6f41a16e2af7ef2f7 (diff)
downloadqmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.gz
qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.bz2
qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.zip
new directory structure
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@232 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'lib/output.cpp')
-rw-r--r--lib/output.cpp250
1 files changed, 0 insertions, 250 deletions
diff --git a/lib/output.cpp b/lib/output.cpp
deleted file mode 100644
index 94b68aa36..000000000
--- a/lib/output.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
-//
-// Use, modification and distribution is allowed without limitation,
-// warranty, or liability of any kind.
-//
-
-#include <QtGui>
-#include <QObject>
-#include <QStringList>
-#include <QApplication>
-#include <QTimer>
-
-#include "constants.h"
-#include "output.h"
-
-#include <stdio.h>
-
-// static methods
-
-static QList<OutputFactory*> *factories = 0;
-static QStringList files;
-static QTimer *timer = 0;
-
-static void checkFactories()
-{
- if ( ! factories )
- {
- files.clear();
- factories = new QList<OutputFactory *>;
-
- QDir pluginsDir ( qApp->applicationDirPath() );
- pluginsDir.cdUp();
- pluginsDir.cd ( "./"LIB_DIR"/qmmp/Output" );
- foreach ( QString fileName, pluginsDir.entryList ( QDir::Files ) )
- {
- QPluginLoader loader ( pluginsDir.absoluteFilePath ( fileName ) );
- QObject *plugin = loader.instance();
- if ( loader.isLoaded() )
- {
- qDebug ( "Output: plugin loaded - %s", qPrintable ( fileName ) );
- }
- OutputFactory *factory = 0;
- if ( plugin )
- factory = qobject_cast<OutputFactory *> ( plugin );
-
- if ( factory )
- {
- Output::registerFactory ( factory );
- files << pluginsDir.absoluteFilePath(fileName);
- }
- }
- }
-}
-
-void Output::registerFactory ( OutputFactory *fact )
-{
- factories->append ( fact );
-}
-
-Output *Output::create ( QObject *parent )
-{
- Output *output = 0;
-
- checkFactories();
- if (factories->isEmpty ())
- {
- qDebug("Output: unable to find output plugins");
- return output;
- }
- QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat );
- QString pluginFileName =
- settings.value("Output/plugin_file","libalsa.so").toString();
- int j = 0;
- for (int i = 0; i < factories->size(); ++i)
- {
- if (files.at(i).section('/',-1) == pluginFileName)
- j = i;
- }
- OutputFactory *fact = factories->at (j);
- if ( fact )
- {
- output = fact->create (parent);
- }
- switch ((int) output->volumeControl())
- {
- case Output::Standard:
- {
- break;
- }
- case Output::Custom:
- {
- timer = new QTimer(output);
- connect(timer, SIGNAL(timeout()), output, SLOT(checkVolume()));
- timer->start(125);
- break;
- }
- case Output::Disabled:
- {
- break;
- }
- }
- return output;
-}
-
-QList<OutputFactory*> *Output::outputFactories()
-{
- checkFactories();
- return factories;
-}
-
-QStringList Output::outputFiles()
-{
- checkFactories();
- return files;
-}
-
-Output::Output ( QObject* parent, VolumeType vt) : QThread (parent), r (stackSize())
-{
- qRegisterMetaType<OutputState>("OutputState");
- m_vol = vt;
-}
-
-
-Output::~Output()
-{
- qDebug("Output::~Output()");
- Visual *visual = 0;
- foreach(visual, m_vis_map.values ())
- {
- visual->close();
- }
- //m_vis_map.clear();
-}
-
-void Output::error ( const QString &e )
-{
- emit stateChanged ( OutputState ( e ) );
-}
-
-
-void Output::addVisual ( Visual *v )
-{
- if (visuals.indexOf (v) == -1)
- {
- visuals.append (v);
- v->setOutput(this);
- qDebug("Output: added external visualization");
- }
-}
-
-
-void Output::removeVisual (Visual *v)
-{
- visuals.removeAll (v);
- if (m_vis_map.key(v))
- {
- VisualFactory *factory = m_vis_map.key(v);
- m_vis_map.remove(factory);
- //Visual::setEnabled(factory, FALSE);
- }
-}
-
-void Output::addVisual(VisualFactory *factory, QWidget *parent)
-{
- if (m_vis_map.value(factory))
- return;
- Visual::setEnabled(factory, TRUE);
- Visual* visual = factory->create(parent);
- visual->setWindowFlags(Qt::Window);
- if (visual)
- {
- visual->setOutput(this);
- qDebug("Output: added visual factory: %s",
- qPrintable(factory->properties().name));
- m_vis_map.insert (factory, visual);
- visual->show();
- }
-}
-
-void Output::removeVisual(VisualFactory *factory)
-{
- if (m_vis_map.value(factory))
- {
- m_vis_map.value(factory)->close();
- m_vis_map.remove (factory);
- }
- Visual::setEnabled(factory, FALSE);
-}
-
-void Output::dispatchVisual ( Buffer *buffer, unsigned long written,
- int chan, int prec )
-{
- if ( ! buffer || !visuals.size())
- return;
- Visual* visual = 0;
- foreach (visual , visuals) //external
- {
- visual->mutex()->lock ();
- visual->add ( buffer, written, chan, prec );
- visual->mutex()->unlock();
- }
- foreach (visual , m_vis_map.values ()) //internal
- {
- visual->mutex()->lock ();
- visual->add ( buffer, written, chan, prec );
- visual->mutex()->unlock();
- }
-}
-
-
-void Output::clearVisuals()
-{
- Visual *visual = 0;
- foreach (visual, visuals )
- {
- visual->mutex()->lock ();
- visual->clear();
- visual->mutex()->unlock();
- }
- foreach(visual, m_vis_map.values ())
- {
- visual->mutex()->lock ();
- visual->clear();
- visual->mutex()->unlock();
- }
-}
-
-void Output::dispatch(OutputState::Type st)
-{
- if (st == OutputState::Stopped)
- clearVisuals();
- emit stateChanged ( OutputState(st) );
-}
-
-void Output::dispatch(long s, unsigned long w, int b, int f, int p, int c)
-{
- emit stateChanged ( OutputState(s, w, b, f, p, c) );
-}
-
-void Output::dispatch ( const OutputState &st )
-{
- if (st.type() == OutputState::Stopped)
- clearVisuals();
- emit stateChanged ( st );
-}
-
-void Output::dispatchVolume(int L, int R)
-{
- emit stateChanged ( OutputState(L, R) );
-}