Changeset 3853:b0150a5af2c7 in roaraudio
- Timestamp:
- 05/16/10 22:40:21 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroareio/driver_oss.c
r3811 r3853 37 37 38 38 #ifdef SNDCTL_DSP_SETFRAGMENT 39 static void roar_cdriver_oss_try_buf_setups(int fh) { 39 static void roar_cdriver_oss_try_buf_setups(struct roar_vio_calls * calls) { 40 struct roar_vio_sysio_ioctl ctl; 40 41 int blocksizes[] = {11, 12, 13}; 41 42 int blocks[] = {4, 5, 6, 3, 7, 2, 8}; … … 43 44 int tmp; 44 45 46 ctl.cmd = SNDCTL_DSP_SETFRAGMENT; 47 ctl.argp = &tmp; 48 45 49 for (bs = 0; bs < sizeof(blocksizes)/sizeof(int); bs++) { 46 50 for (b = 0; b < sizeof(blocks) /sizeof(int); b++ ) { 47 51 tmp = blocksizes[bs] | (blocks[b] << 16); 48 if ( ioctl(fh, SNDCTL_DSP_SETFRAGMENT, &tmp) == 0 )52 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == 0 ) 49 53 return; 50 54 } … … 56 60 57 61 int roar_cdriver_oss(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir) { 58 int fh;62 struct roar_vio_sysio_ioctl ctl; 59 63 int tmp, ctmp; 64 65 // preinit ctl struct, we always pass ints in tmp. 66 ctl.argp = &tmp; 60 67 61 68 ROAR_DBG("roar_cdriver_oss(*) = ?"); … … 92 99 return -1; 93 100 94 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_GET_FH, &fh) == -1 ) {95 _err();96 }97 98 101 // channels: 99 102 #ifdef SNDCTL_DSP_CHANNELS 100 103 tmp = info->channels; 101 104 102 if ( ioctl(fh, SNDCTL_DSP_CHANNELS, &tmp) == -1 ) { 105 ctl.cmd = SNDCTL_DSP_CHANNELS; 106 107 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == -1 ) { 103 108 _err(); 104 109 } … … 114 119 } 115 120 116 if ( ioctl(fh, SNDCTL_DSP_STEREO, &tmp) == -1 ) { 121 ctl.cmd = SNDCTL_DSP_STEREO; 122 123 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == -1 ) { 117 124 _err(); 118 125 } … … 150 157 ctmp = tmp; 151 158 #ifdef SNDCTL_DSP_SETFMT 152 if ( ioctl(fh, SNDCTL_DSP_SETFMT, &tmp) == -1 ) {159 ctl.cmd = SNDCTL_DSP_SETFMT; 153 160 #else 154 if ( ioctl(fh, SNDCTL_DSP_SAMPLESIZE, &tmp) == -1 ) {161 ctl.cmd = SNDCTL_DSP_SAMPLESIZE; 155 162 #endif 163 164 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == -1 ) { 156 165 _err(); 157 166 } … … 164 173 tmp = info->rate; 165 174 166 if ( ioctl(fh, SNDCTL_DSP_SPEED, &tmp) == -1 ) { 175 ctl.cmd = SNDCTL_DSP_SPEED; 176 if ( roar_vio_ctl(calls, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == -1 ) { 167 177 _err(); 168 178 } … … 173 183 174 184 #ifdef SNDCTL_DSP_SETFRAGMENT 175 roar_cdriver_oss_try_buf_setups( fh);185 roar_cdriver_oss_try_buf_setups(calls); 176 186 #endif 177 187
Note: See TracChangeset
for help on using the changeset viewer.