diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-31 17:34:10 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-31 17:34:10 +0000 |
| commit | bbc2ba59e6400a87ce9345521b271b7a8331605a (patch) | |
| tree | 37d48cc47822d41b0f1a200dc1bf83df77eef009 /src/plugins/Output/oss/outputoss.cpp | |
| parent | 6a16cb7d86d721986d1bc264b899eaafe53cd92f (diff) | |
| download | qmmp-bbc2ba59e6400a87ce9345521b271b7a8331605a.tar.gz qmmp-bbc2ba59e6400a87ce9345521b271b7a8331605a.tar.bz2 qmmp-bbc2ba59e6400a87ce9345521b271b7a8331605a.zip | |
added freebsd patches, using oss4 by default, disable oss 3.x support by default
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2697 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/oss/outputoss.cpp')
| -rw-r--r-- | src/plugins/Output/oss/outputoss.cpp | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/plugins/Output/oss/outputoss.cpp b/src/plugins/Output/oss/outputoss.cpp index db2165353..f6b5e1e8d 100644 --- a/src/plugins/Output/oss/outputoss.cpp +++ b/src/plugins/Output/oss/outputoss.cpp @@ -48,6 +48,7 @@ OutputOSS::OutputOSS(QObject * parent) : Output(parent), do_select(true), m_audi { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_audio_device = settings.value("OSS/device","/dev/dsp").toString(); + do_select = false; } OutputOSS::~OutputOSS() @@ -72,7 +73,7 @@ void OutputOSS::sync() bool OutputOSS::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) { - m_audio_fd = open(m_audio_device.toAscii(), O_WRONLY, 0); + m_audio_fd = open(m_audio_device.toAscii(), O_WRONLY); if (m_audio_fd < 0) { @@ -80,19 +81,7 @@ bool OutputOSS::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) return false; } - int flags; - if ((flags = fcntl(m_audio_fd, F_GETFL, 0)) > 0) - { - flags &= O_NDELAY; - fcntl(m_audio_fd, F_SETFL, flags); - } - fd_set afd; - FD_ZERO(&afd); - FD_SET(m_audio_fd, &afd); - struct timeval tv; - tv.tv_sec = 0l; - tv.tv_usec = 50000l; - do_select = (select(m_audio_fd + 1, 0, &afd, 0, &tv) > 0); + ioctl(m_audio_fd, SNDCTL_DSP_RESET, 0); int p; switch (format) @@ -112,7 +101,11 @@ bool OutputOSS::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) return false; } - ioctl(m_audio_fd, SNDCTL_DSP_SYNC, 0); + //ioctl(m_audio_fd, SNDCTL_DSP_SYNC, 0); + + if (ioctl(m_audio_fd, SNDCTL_DSP_SETFMT, &p) == -1) + qWarning("OutputOSS: ioctl SNDCTL_DSP_SETFMT failed: %s",strerror(errno)); + if(ioctl(m_audio_fd, SNDCTL_DSP_CHANNELS, &chan) == -1) qWarning("OutputOSS: ioctl SNDCTL_DSP_CHANNELS failed: %s", strerror(errno)); @@ -125,8 +118,6 @@ bool OutputOSS::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) chan = param + 1; } - if (ioctl(m_audio_fd, SNDCTL_DSP_SETFMT, &p) == -1) - qWarning("OutputOSS: ioctl SNDCTL_DSP_SETFMT failed: %s",strerror(errno)); if (ioctl(m_audio_fd, SNDCTL_DSP_SPEED, &freq) < 0) qWarning("OutputOSS: ioctl SNDCTL_DSP_SPEED failed: %s", strerror(errno)); |
