summaryrefslogtreecommitdiffstats
path: root/src/plugins/qnx-audio/audio/qnxaudiooutput.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qnx-audio/audio/qnxaudiooutput.h')
-rw-r--r--src/plugins/qnx-audio/audio/qnxaudiooutput.h60
1 files changed, 40 insertions, 20 deletions
diff --git a/src/plugins/qnx-audio/audio/qnxaudiooutput.h b/src/plugins/qnx-audio/audio/qnxaudiooutput.h
index 5ee69b542..7a0979f77 100644
--- a/src/plugins/qnx-audio/audio/qnxaudiooutput.h
+++ b/src/plugins/qnx-audio/audio/qnxaudiooutput.h
@@ -45,8 +45,10 @@
#include <QTime>
#include <QTimer>
#include <QIODevice>
+#include <QSocketNotifier>
#include <sys/asoundlib.h>
+#include <sys/neutrino.h>
QT_BEGIN_NAMESPACE
@@ -60,26 +62,28 @@ public:
QnxAudioOutput();
~QnxAudioOutput();
- void start(QIODevice *source) Q_DECL_OVERRIDE;
- QIODevice *start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesFree() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int) Q_DECL_OVERRIDE {}
- int bufferSize() const Q_DECL_OVERRIDE { return 0; }
- void setNotifyInterval(int ms) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat &format) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
+ void start(QIODevice *source) override;
+ QIODevice *start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesFree() const override;
+ int periodSize() const override;
+ void setBufferSize(int) override {}
+ int bufferSize() const override { return 0; }
+ void setNotifyInterval(int ms) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat &format) override;
+ QAudioFormat format() const override;
+ void setVolume(qreal volume) override;
+ qreal volume() const override;
+ void setCategory(const QString &category) override;
+ QString category() const override;
private slots:
void pullData();
@@ -90,6 +94,14 @@ private:
void setError(QAudio::Error error);
void setState(QAudio::State state);
+ void addPcmEventFilter();
+ void createPcmNotifiers();
+ void destroyPcmNotifiers();
+ void setTypeName(snd_pcm_channel_params_t *params);
+
+ void suspendInternal(QAudio::State suspendState);
+ void resumeInternal();
+
friend class QnxPushIODevice;
qint64 write(const char *data, qint64 len);
@@ -102,6 +114,7 @@ private:
QAudio::State m_state;
QAudioFormat m_format;
qreal m_volume;
+ QString m_category;
int m_periodSize;
snd_pcm_t *m_pcmHandle;
@@ -109,6 +122,13 @@ private:
QTime m_startTimeStamp;
QTime m_intervalTimeStamp;
qint64 m_intervalOffset;
+
+#if _NTO_VERSION >= 700
+ QSocketNotifier *m_pcmNotifier;
+
+private slots:
+ void pcmNotifierActivated(int socket);
+#endif
};
class QnxPushIODevice : public QIODevice