|
|
|
#ifndef MIXER_ALSA_H
|
|
|
|
#define MIXER_ALSA_H
|
|
|
|
|
|
|
|
// QT includes
|
|
|
|
#include <tqvaluelist.h>
|
|
|
|
|
|
|
|
// Forward QT includes
|
|
|
|
class TQString;
|
|
|
|
class TQSocketNotifier;
|
|
|
|
|
|
|
|
#include "mixer_backend.h"
|
|
|
|
|
|
|
|
class Mixer_ALSA : public Mixer_Backend
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Mixer_ALSA( int device = -1 );
|
|
|
|
~Mixer_ALSA();
|
|
|
|
|
|
|
|
virtual int readVolumeFromHW( int devnum, Volume &vol );
|
|
|
|
virtual int writeVolumeToHW( int devnum, Volume &vol );
|
|
|
|
virtual bool setRecsrcHW( int devnum, bool on);
|
|
|
|
virtual bool isRecsrcHW( int devnum );
|
|
|
|
virtual void setEnumIdHW(int mixerIdx, unsigned int);
|
|
|
|
virtual unsigned int enumIdHW(int mixerIdx);
|
|
|
|
virtual bool prepareUpdateFromHW();
|
|
|
|
virtual bool needsPolling() { return false; }
|
|
|
|
virtual void prepareSignalling( Mixer *mixer );
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual int open();
|
|
|
|
virtual int close();
|
|
|
|
|
|
|
|
private:
|
|
|
|
int identify( snd_mixer_selem_id_t *sid );
|
|
|
|
snd_mixer_elem_t* getMixerElem(int devnum);
|
|
|
|
void removeSignalling();
|
|
|
|
|
|
|
|
virtual TQString errorText(int mixer_error);
|
|
|
|
typedef TQValueList<snd_mixer_selem_id_t *>AlsaMixerSidList;
|
|
|
|
AlsaMixerSidList mixer_sid_list;
|
|
|
|
typedef TQValueList<snd_mixer_elem_t *> AlsaMixerElemList; // !! remove
|
|
|
|
AlsaMixerElemList mixer_elem_list; // !! remove
|
|
|
|
|
|
|
|
bool _initialUpdate;
|
|
|
|
snd_mixer_t *_handle;
|
|
|
|
TQString devName;
|
|
|
|
struct pollfd *m_fds;
|
|
|
|
TQSocketNotifier **m_sns;
|
|
|
|
int m_count;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
class ALSA_DevIterator : public DevIterator
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ALSA_DevIterator();
|
|
|
|
virtual void next();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|