diff options
author | Christopher Faylor <me@cgf.cx> | 2001-05-20 21:31:06 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-05-20 21:31:06 +0400 |
commit | 1b72f36e89d5ac63e2cda04420a86861051084bd (patch) | |
tree | 575c952314b979e10dce526ce52e80ef15aa5c93 | |
parent | 1fcc912f135e11aa78a4ed529c70d6887cfcb317 (diff) |
* fhandler_dsp.cc: Reformat to GNU standards.
(s_audio): Change to a pointer throughout.
(fhandler_dev_dsp::open): Initialize s_audio, if required.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_dsp.cc | 569 |
2 files changed, 293 insertions, 282 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index ac15783f9..f37799b45 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +Sun May 20 13:26:25 2001 Christopher Faylor <cgf@cygnus.com> + + * fhandler_dsp.cc: Reformat to GNU standards. + (s_audio): Change to a pointer throughout. + (fhandler_dev_dsp::open): Initialize s_audio, if required. + Sat May 19 23:40:00 2001 Corinna Vinschen <corinna@vinschen.de> * autoload.cc: Add load statements for `LookupAccountNameW', diff --git a/winsup/cygwin/fhandler_dsp.cc b/winsup/cygwin/fhandler_dsp.cc index bdbce7027..c6d96c4e6 100644 --- a/winsup/cygwin/fhandler_dsp.cc +++ b/winsup/cygwin/fhandler_dsp.cc @@ -1,11 +1,11 @@ /* fhandler_dev_dsp: code to emulate OSS sound model /dev/dsp - + Copyright 2001 Red Hat, Inc - + Written by Andy Younger (andy@snoogie.demon.co.uk) - + This file is part of Cygwin. - + This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ @@ -22,17 +22,17 @@ details. */ //------------------------------------------------------------------------ // Simple encapsulation of the win32 audio device. -// -static void CALLBACK wave_callback(HWAVE hWave, UINT msg, DWORD instance, - DWORD param1, DWORD param2); +// +static void CALLBACK wave_callback (HWAVE hWave, UINT msg, DWORD instance, + DWORD param1, DWORD param2); class Audio { public: enum { MAX_BLOCKS = 12, BLOCK_SIZE = 16384 }; - Audio (); - ~Audio (); - + Audio (); + ~Audio (); + bool open (int rate, int bits, int channels, bool bCallback = false); void close (); int getvolume (); @@ -40,14 +40,14 @@ public: bool write (const void *pSampleData, int nBytes); int blocks (); void callback_sampledone (void *pData); - void setformat(int format) { formattype_ = format; } + void setformat (int format) {formattype_ = format;} int numbytesoutput (); - + private: char *initialisebuffer (); void waitforcallback (); bool flush (); - + HWAVEOUT dev_; volatile int nBlocksInQue_; int nBytesWritten_; @@ -60,296 +60,297 @@ private: char bigwavebuffer_[MAX_BLOCKS * BLOCK_SIZE]; }; -Audio::Audio() +Audio::Audio () { - int size = BLOCK_SIZE + sizeof(WAVEHDR); - - InitializeCriticalSection(&lock_); - memset(freeblocks_, 0, sizeof(freeblocks_)); + int size = BLOCK_SIZE + sizeof (WAVEHDR); + + InitializeCriticalSection (&lock_); + memset (freeblocks_, 0, sizeof (freeblocks_)); for (int i = 0; i < MAX_BLOCKS; i++) { - char *pBuffer = &bigwavebuffer_[ i * size ]; - memset(pBuffer, 0, size); + char *pBuffer = &bigwavebuffer_[i * size]; + memset (pBuffer, 0, size); freeblocks_[i] = pBuffer; } } -Audio::~Audio() +Audio::~Audio () { if (dev_) - close(); - DeleteCriticalSection(&lock_); + close (); + DeleteCriticalSection (&lock_); } -bool -Audio::open(int rate, int bits, int channels, bool bCallback = false) +bool +Audio::open (int rate, int bits, int channels, bool bCallback = false) { WAVEFORMATEX format; - int nDevices = waveOutGetNumDevs(); - + int nDevices = waveOutGetNumDevs (); + nBytesWritten_ = 0L; bufferIndex_ = 0; buffer_ = 0L; - debug_printf("number devices %d\n", nDevices); + debug_printf ("number devices %d\n", nDevices); if (nDevices <= 0) return false; - - debug_printf("trying to map device freq %d, bits %d, " - "channels %d, callback %d\n", rate, bits, channels, - bCallback); + + debug_printf ("trying to map device freq %d, bits %d, " + "channels %d, callback %d\n", rate, bits, channels, + bCallback); int bytesperSample = bits / 8; - - memset(&format, 0, sizeof(format)); + + memset (&format, 0, sizeof (format)); format.wFormatTag = WAVE_FORMAT_PCM; format.wBitsPerSample = bits; format.nChannels = channels; format.nSamplesPerSec = rate; - format.nAvgBytesPerSec = format.nSamplesPerSec * format.nChannels * - bytesperSample; - format.nBlockAlign = format.nChannels * bytesperSample; + format.nAvgBytesPerSec = format.nSamplesPerSec * format.nChannels * + bytesperSample; + format.nBlockAlign = format.nChannels * bytesperSample; nBlocksInQue_ = 0; - HRESULT res = waveOutOpen(&dev_, WAVE_MAPPER, &format, (DWORD)wave_callback, - (DWORD)this, bCallback ? CALLBACK_FUNCTION : 0); + HRESULT res = waveOutOpen (&dev_, WAVE_MAPPER, &format, (DWORD) wave_callback, + (DWORD) this, bCallback ? CALLBACK_FUNCTION : 0); if (res == S_OK) { - debug_printf("Sucessfully opened!"); + debug_printf ("Sucessfully opened!"); return true; } else { - debug_printf("failed to open"); + debug_printf ("failed to open"); return false; } } -void -Audio::close() +void +Audio::close () { if (dev_) - { - flush(); // force out last block whatever size.. - - while (blocks()) // block till finished.. - waitforcallback(); - - waveOutReset(dev_); - waveOutClose(dev_); + { + flush (); // force out last block whatever size.. + + while (blocks ()) // block till finished.. + waitforcallback (); + + waveOutReset (dev_); + waveOutClose (dev_); dev_ = 0L; } nBytesWritten_ = 0L; } int -Audio::numbytesoutput() +Audio::numbytesoutput () { return nBytesWritten_; } -int -Audio::getvolume() +int +Audio::getvolume () { DWORD volume; - - waveOutGetVolume(dev_, &volume); - return ((volume >> 16) + (volume & 0xffff)) >> 1; + + waveOutGetVolume (dev_, &volume); + return ((volume >> 16) + (volume & 0xffff)) >> 1; } -void -Audio::setvolume(int newVolume) +void +Audio::setvolume (int newVolume) { - waveOutSetVolume(dev_, (newVolume<<16)|newVolume); + waveOutSetVolume (dev_, (newVolume << 16) | newVolume); } char * -Audio::initialisebuffer() +Audio::initialisebuffer () { - EnterCriticalSection(&lock_); + EnterCriticalSection (&lock_); WAVEHDR *pHeader = 0L; for (int i = 0; i < MAX_BLOCKS; i++) { char *pData = freeblocks_[i]; if (pData) { - pHeader = (WAVEHDR *)pData; + pHeader = (WAVEHDR *) pData; if (pHeader->dwFlags & WHDR_DONE) { - waveOutUnprepareHeader(dev_, pHeader, sizeof(WAVEHDR)); - } + waveOutUnprepareHeader (dev_, pHeader, sizeof (WAVEHDR)); + } freeblocks_[i] = 0L; break; } } - LeaveCriticalSection(&lock_); + LeaveCriticalSection (&lock_); if (pHeader) { - memset(pHeader, 0, sizeof(WAVEHDR)); + memset (pHeader, 0, sizeof (WAVEHDR)); pHeader->dwBufferLength = BLOCK_SIZE; - pHeader->lpData = (LPSTR)(&pHeader[1]); - return (char *)pHeader->lpData; + pHeader->lpData = (LPSTR) (&pHeader[1]); + return (char *) pHeader->lpData; } return 0L; } -bool -Audio::write(const void *pSampleData, int nBytes) +bool +Audio::write (const void *pSampleData, int nBytes) { // split up big blocks into smaller BLOCK_SIZE chunks while (nBytes > BLOCK_SIZE) { - write(pSampleData, BLOCK_SIZE); + write (pSampleData, BLOCK_SIZE); nBytes -= BLOCK_SIZE; - pSampleData = (void *)((char *)pSampleData + BLOCK_SIZE); + pSampleData = (void *) ((char *) pSampleData + BLOCK_SIZE); } // Block till next sound is flushed - if (blocks() == MAX_BLOCKS) - waitforcallback(); + if (blocks () == MAX_BLOCKS) + waitforcallback (); // Allocate new wave buffer if necessary if (buffer_ == 0L) { - buffer_ = initialisebuffer(); + buffer_ = initialisebuffer (); if (buffer_ == 0L) return false; } - + // Handle gathering blocks into larger buffer int sizeleft = BLOCK_SIZE - bufferIndex_; if (nBytes < sizeleft) { - memcpy(&buffer_[bufferIndex_], pSampleData, nBytes); + memcpy (&buffer_[bufferIndex_], pSampleData, nBytes); bufferIndex_ += nBytes; nBytesWritten_ += nBytes; return true; } - - // flushing when we reach our limit of BLOCK_SIZE - memcpy(&buffer_[bufferIndex_], pSampleData, sizeleft); + + // flushing when we reach our limit of BLOCK_SIZE + memcpy (&buffer_[bufferIndex_], pSampleData, sizeleft); bufferIndex_ += sizeleft; - nBytesWritten_ += sizeleft; - flush(); - + nBytesWritten_ += sizeleft; + flush (); + // change pointer to rest of sample, and size accordingly - pSampleData = (void *)((char *)pSampleData + sizeleft); - nBytes -= sizeleft; + pSampleData = (void *) ((char *) pSampleData + sizeleft); + nBytes -= sizeleft; // if we still have some sample left over write it out if (nBytes) - return write(pSampleData, nBytes); - + return write (pSampleData, nBytes); + return true; } // return number of blocks back. -int -Audio::blocks() +int +Audio::blocks () { - EnterCriticalSection(&lock_); + EnterCriticalSection (&lock_); int ret = nBlocksInQue_; - LeaveCriticalSection(&lock_); + LeaveCriticalSection (&lock_); return ret; } -// This is called on an interupt so use locking.. Note nBlocksInQue_ is +// This is called on an interupt so use locking.. Note nBlocksInQue_ is // modified by it so we should wrap all references to it in locks. -void -Audio::callback_sampledone(void *pData) +void +Audio::callback_sampledone (void *pData) { - EnterCriticalSection(&lock_); - - nBlocksInQue_--; + EnterCriticalSection (&lock_); + + nBlocksInQue_--; for (int i = 0; i < MAX_BLOCKS; i++) if (!freeblocks_[i]) { - freeblocks_[i] = (char *)pData; + freeblocks_[i] = (char *) pData; break; } - - LeaveCriticalSection(&lock_); + + LeaveCriticalSection (&lock_); } void -Audio::waitforcallback() +Audio::waitforcallback () { - int n = blocks(); + int n = blocks (); if (!n) - return; + return; do { - Sleep(250); + Sleep (250); } - while (n == blocks()); + while (n == blocks ()); } bool -Audio::flush() +Audio::flush () { if (!buffer_) - return false; - + return false; + // Send internal buffer out to the soundcard - WAVEHDR *pHeader = ((WAVEHDR *)buffer_) - 1; + WAVEHDR *pHeader = ((WAVEHDR *) buffer_) - 1; pHeader->dwBufferLength = bufferIndex_; // Quick bit of sample buffer conversion if (formattype_ == AFMT_S8) { - unsigned char *p = ((unsigned char *)buffer_); + unsigned char *p = ((unsigned char *) buffer_); for (int i = 0; i < bufferIndex_; i++) - { + { p[i] -= 0x7f; - } + } } - - if (waveOutPrepareHeader(dev_, pHeader, sizeof(WAVEHDR)) == S_OK && - waveOutWrite(dev_, pHeader, sizeof (WAVEHDR)) == S_OK) - { - EnterCriticalSection(&lock_); + + if (waveOutPrepareHeader (dev_, pHeader, sizeof (WAVEHDR)) == S_OK && + waveOutWrite (dev_, pHeader, sizeof (WAVEHDR)) == S_OK) + { + EnterCriticalSection (&lock_); nBlocksInQue_++; - LeaveCriticalSection(&lock_); + LeaveCriticalSection (&lock_); bufferIndex_ = 0; buffer_ = 0L; return true; } else { - EnterCriticalSection(&lock_); + EnterCriticalSection (&lock_); for (int i = 0; i < MAX_BLOCKS; i++) if (!freeblocks_[i]) - { - freeblocks_[i] = (char *)pHeader; - break; - } - LeaveCriticalSection(&lock_); + { + freeblocks_[i] = (char *) pHeader; + break; + } + LeaveCriticalSection (&lock_); } return false; } //------------------------------------------------------------------------ // Call back routine -static void CALLBACK -wave_callback(HWAVE hWave, UINT msg, DWORD instance, DWORD param1, DWORD param2) +static void CALLBACK +wave_callback (HWAVE hWave, UINT msg, DWORD instance, DWORD param1, + DWORD param2) { if (msg == WOM_DONE) { - Audio *ptr = (Audio *)instance; - ptr->callback_sampledone((void *)param1); + Audio *ptr = (Audio *) instance; + ptr->callback_sampledone ((void *) param1); } } - + //------------------------------------------------------------------------ // /dev/dsp handler -static Audio s_audio; // static instance of the Audio handler +static Audio *s_audio; // static instance of the Audio handler //------------------------------------------------------------------------ // wav file detection.. #pragma pack(1) struct wavchunk -{ +{ char id[4]; unsigned int len; }; @@ -365,40 +366,40 @@ struct wavformat #pragma pack() bool -fhandler_dev_dsp::setupwav(const char *pData, int nBytes) +fhandler_dev_dsp::setupwav (const char *pData, int nBytes) { int len; const char *end = pData + nBytes; - if (!(pData[0] == 'R' && pData[1] == 'I' && + if (!(pData[0] == 'R' && pData[1] == 'I' && pData[2] == 'F' && pData[3] == 'F')) return false; - if (!(pData[8] == 'W' && pData[9] == 'A' && - pData[10] == 'V' && pData[11] == 'E')) + if (!(pData[8] == 'W' && pData[9] == 'A' && + pData[10] == 'V' && pData[11] == 'E')) return false; - - len = *(int *)&pData[4]; + + len = *(int *) &pData[4]; pData += 12; while (len && pData < end) - { - wavchunk *pChunk = (wavchunk *)pData; - int blklen = pChunk->len; - if (pChunk->id[0] == 'f' && pChunk->id[1] == 'm' && + { + wavchunk * pChunk = (wavchunk *) pData; + int blklen = pChunk-> len; + if (pChunk->id[0] == 'f' && pChunk->id[1] == 'm' && pChunk->id[2] == 't' && pChunk->id[3] == ' ') { - wavformat *format = (wavformat *)(pChunk+1); - if ((char *)(format+1) > end) + wavformat *format = (wavformat *) (pChunk + 1); + if ((char *) (format + 1) > end) return false; - + // Open up audio device with correct frequency for wav file - // + // // FIXME: should through away all the header & not output // it to the soundcard. - s_audio.close(); - if (s_audio.open(format->dwSamplesPerSec, format->wBitsPerSample, - format->wChannels) == false) + s_audio->close (); + if (s_audio->open (format->dwSamplesPerSec, format->wBitsPerSample, + format->wChannels) == false) { - s_audio.open(audiofreq_, audiobits_, audiochannels_); + s_audio->open (audiofreq_, audiobits_, audiochannels_); } else { @@ -409,33 +410,36 @@ fhandler_dev_dsp::setupwav(const char *pData, int nBytes) return true; } - pData += blklen + sizeof(wavchunk); + pData += blklen + sizeof (wavchunk); } return false; } //------------------------------------------------------------------------ -fhandler_dev_dsp::fhandler_dev_dsp (const char *name) - : fhandler_base (FH_OSS_DSP, name) +fhandler_dev_dsp::fhandler_dev_dsp (const char *name): + fhandler_base (FH_OSS_DSP, name) { - set_cb (sizeof *this); + set_cb (sizeof *this); } -fhandler_dev_dsp::~fhandler_dev_dsp() +fhandler_dev_dsp::~fhandler_dev_dsp () { } int fhandler_dev_dsp::open (const char *path, int flags, mode_t mode = 0) { - // currently we only support writing - if ((flags & (O_WRONLY|O_RDONLY|O_RDWR)) != O_WRONLY) + // currently we only support writing + if ((flags & (O_WRONLY | O_RDONLY | O_RDWR)) != O_WRONLY) return 0; - - set_flags(flags); + + set_flags (flags); + + if (!s_audio) + s_audio = new Audio; // Work out initial sample format & frequency - if (strcmp(path, "/dev/dsp") == 0L) + if (strcmp (path, "/dev/dsp") == 0L) { // dev/dsp defaults audioformat_ = AFMT_S8; @@ -444,12 +448,12 @@ fhandler_dev_dsp::open (const char *path, int flags, mode_t mode = 0) audiochannels_ = 1; } - if (!s_audio.open(audiofreq_, audiobits_, audiochannels_)) - debug_printf("/dev/dsp: failed to open\n"); + if (!s_audio->open (audiofreq_, audiobits_, audiochannels_)) + debug_printf ("/dev/dsp: failed to open\n"); else { set_open_status (); - debug_printf("/dev/dsp: successfully opened\n"); + debug_printf ("/dev/dsp: successfully opened\n"); } return 1; } @@ -457,18 +461,18 @@ fhandler_dev_dsp::open (const char *path, int flags, mode_t mode = 0) int fhandler_dev_dsp::write (const void *ptr, size_t len) { - if (s_audio.numbytesoutput() == 0) + if (s_audio->numbytesoutput () == 0) { // check for wave file & setup frequencys properly if possible. - setupwav((const char *)ptr, len); - + setupwav ((const char *) ptr, len); + // Open audio device properly with callbacks. - s_audio.close(); - if (!s_audio.open(audiofreq_, audiobits_, audiochannels_, true)) - return 0; + s_audio->close (); + if (!s_audio->open (audiofreq_, audiobits_, audiochannels_, true)) + return 0; } - - s_audio.write(ptr, len); + + s_audio->write (ptr, len); return len; } @@ -487,16 +491,16 @@ fhandler_dev_dsp::lseek (off_t offset, int whence) int fhandler_dev_dsp::close (void) { - s_audio.close(); + s_audio->close (); return 0; } int fhandler_dev_dsp::dup (fhandler_base * child) { - fhandler_dev_dsp *fhc = (fhandler_dev_dsp *)child; + fhandler_dev_dsp *fhc = (fhandler_dev_dsp *) child; - fhc->set_flags(get_flags()); + fhc->set_flags (get_flags ()); fhc->audiochannels_ = audiochannels_; fhc->audiobits_ = audiobits_; fhc->audiofreq_ = audiofreq_; @@ -504,119 +508,121 @@ fhandler_dev_dsp::dup (fhandler_base * child) return 0; } -int -fhandler_dev_dsp::ioctl(unsigned int cmd, void *ptr) +int +fhandler_dev_dsp::ioctl (unsigned int cmd, void *ptr) { - int *intptr = (int *)ptr; + int *intptr = (int *) ptr; switch (cmd) { - #define CASE(a) case a : debug_printf("/dev/dsp: ioctl %s\n", #a); - - CASE(SNDCTL_DSP_RESET) - audioformat_ = AFMT_S8; - audiofreq_ = 8000; - audiobits_ = 8; - audiochannels_ = 1; - return 1; - - CASE(SNDCTL_DSP_GETBLKSIZE) - *intptr = Audio::BLOCK_SIZE; - break; +#define CASE(a) case a : debug_printf("/dev/dsp: ioctl %s\n", #a); - CASE(SNDCTL_DSP_SETFMT) - { - int nBits = 0; - if (*intptr == AFMT_S16_LE) - nBits = 16; - else if (*intptr == AFMT_U8) - nBits = 8; - else if (*intptr == AFMT_S8) - nBits = 8; - if (nBits) - { - s_audio.setformat(*intptr); - s_audio.close(); - if (s_audio.open(audiofreq_, nBits, audiochannels_) == true) - { - audiobits_ = nBits; - return 1; - } - else - { - s_audio.open(audiofreq_, audiobits_, audiochannels_); - return -1; - } - } - } break; - - CASE(SNDCTL_DSP_SPEED) - s_audio.close(); - if (s_audio.open(*intptr, audiobits_, audiochannels_) == true) - { - audiofreq_ = *intptr; - return 1; - } - else - { - s_audio.open(audiofreq_, audiobits_, audiochannels_); - return -1; - } - break; - - CASE(SNDCTL_DSP_STEREO) - { - int nChannels = *intptr + 1; - - s_audio.close(); - if (s_audio.open(audiofreq_, audiobits_, nChannels) == true) - { - audiochannels_ = nChannels; - return 1; - } - else - { - s_audio.open(audiofreq_, audiobits_, audiochannels_); - return -1; - } - } break; + CASE (SNDCTL_DSP_RESET) + audioformat_ = AFMT_S8; + audiofreq_ = 8000; + audiobits_ = 8; + audiochannels_ = 1; + return 1; - CASE(SNDCTL_DSP_GETOSPACE) - { - audio_buf_info *p = (audio_buf_info *)ptr; - - int nBlocks = s_audio.blocks(); - int leftblocks = ((Audio::MAX_BLOCKS - nBlocks)-1); - if (leftblocks < 0) leftblocks = 0; - if (leftblocks > 1) - leftblocks = 1; - int left = leftblocks * Audio::BLOCK_SIZE; - - p->fragments = leftblocks; - p->fragstotal = Audio::MAX_BLOCKS; - p->fragsize = Audio::BLOCK_SIZE; - p->bytes = left; - - debug_printf("ptr: %p " - "nblocks: %d " - "leftblocks: %d " - "left bytes: %d ", ptr, nBlocks, leftblocks, left); - - - return 1; - } break; - - CASE(SNDCTL_DSP_SETFRAGMENT) - { - // Fake!! esound & mikmod require this on non PowerPC platforms. - // - return 1; - } break; - - default: - debug_printf("/dev/dsp: ioctl not handled yet! FIXME:\n"); + CASE (SNDCTL_DSP_GETBLKSIZE) + *intptr = Audio::BLOCK_SIZE; break; - #undef CASE + CASE (SNDCTL_DSP_SETFMT) + { + int nBits = 0; + if (*intptr == AFMT_S16_LE) + nBits = 16; + else if (*intptr == AFMT_U8) + nBits = 8; + else if (*intptr == AFMT_S8) + nBits = 8; + if (nBits) + { + s_audio->setformat (*intptr); + s_audio->close (); + if (s_audio->open (audiofreq_, nBits, audiochannels_) == true) + { + audiobits_ = nBits; + return 1; + } + else + { + s_audio->open (audiofreq_, audiobits_, audiochannels_); + return -1; + } + } + } + break; + + CASE (SNDCTL_DSP_SPEED) + s_audio->close (); + if (s_audio->open (*intptr, audiobits_, audiochannels_) == true) + { + audiofreq_ = *intptr; + return 1; + } + else + { + s_audio->open (audiofreq_, audiobits_, audiochannels_); + return -1; + } + break; + + CASE (SNDCTL_DSP_STEREO) + { + int nChannels = *intptr + 1; + + s_audio->close (); + if (s_audio->open (audiofreq_, audiobits_, nChannels) == true) + { + audiochannels_ = nChannels; + return 1; + } + else + { + s_audio->open (audiofreq_, audiobits_, audiochannels_); + return -1; + } + } + break; + + CASE (SNDCTL_DSP_GETOSPACE) + { + audio_buf_info *p = (audio_buf_info *) ptr; + + int nBlocks = s_audio->blocks (); + int leftblocks = ((Audio::MAX_BLOCKS - nBlocks) - 1); + if (leftblocks < 0) + leftblocks = 0; + if (leftblocks > 1) + leftblocks = 1; + int left = leftblocks * Audio::BLOCK_SIZE; + + p->fragments = leftblocks; + p->fragstotal = Audio::MAX_BLOCKS; + p->fragsize = Audio::BLOCK_SIZE; + p->bytes = left; + + debug_printf ("ptr %p nblocks %d leftblocks %d left bytes %d ", + ptr, nBlocks, leftblocks, left); + + return 1; + } + break; + + CASE (SNDCTL_DSP_SETFRAGMENT) + { + // Fake!! esound & mikmod require this on non PowerPC platforms. + // + return 1; + } + break; + + default: + debug_printf ("/dev/dsp: ioctl not handled yet! FIXME:\n"); + break; + +#undef CASE }; return -1; } @@ -624,6 +630,5 @@ fhandler_dev_dsp::ioctl(unsigned int cmd, void *ptr) void fhandler_dev_dsp::dump () { - paranoid_printf("here, fhandler_dev_dsp"); + paranoid_printf ("here, fhandler_dev_dsp"); } - |