Changeset 84 for GPL/trunk/lib32/sound.c
- Timestamp:
- Oct 23, 2006, 11:07:11 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk/lib32/sound.c
r82 r84 754 754 soundhandle *pHandle = (soundhandle *)streamid; 755 755 snd_pcm_hw_params_t params; 756 snd_pcm_status_t status; 756 757 snd_pcm_sw_params_t swparams; 757 758 int ret, ret1, nrperiods, minnrperiods, maxnrperiods, samplesize, i; … … 889 890 } 890 891 } 892 891 893 // ret1 = pHandle->file.f_op->release(&pHandle->inode, &pHandle->file); 892 894 DebugInt3(); … … 1040 1042 total = 0; 1041 1043 per_bytes = periodbytes; 1044 ret = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_STATUS, (ULONG)__Stack32ToFlat(&status)); 1045 if ( ((status.state != SNDRV_PCM_STATE_PREPARED) && 1046 (status.state != SNDRV_PCM_STATE_RUNNING) && 1047 (status.state != SNDRV_PCM_STATE_DRAINING))) { 1048 printk("Device is not in proper state: %i. Calling prepare\n", status.state); 1049 ret = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_PREPARE, 0); 1050 } 1042 1051 printk("OSS32_WaveSetHwParams return %d after SNDRV_PCM_IOCTL_SW_PARAMS ioctl, streamid %X", ret,(ULONG)pHandle); 1043 1052 return UNIXToOSSError(ret); … … 1133 1142 printk("OSS32_WaveAddBuffer failed on partial transfer %x %i; ret = %i\n", buffer, size, ret); 1134 1143 *pTransferred = transferred; 1135 return OSSERR_SUCCESS; 1144 if (toret) 1145 return OSSERR_SUCCESS; /* avoid infinite loop */ 1146 toret = 1; 1147 goto again; 1136 1148 } 1137 1149 … … 1143 1155 ret1 = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_PREPARE, 0); 1144 1156 printk("OSS32_WaveAddBuffer buffer overrun: size %i, ret %i, trans %i, prev sz %i per sz %i total %i\n", size, ret, transferred, prev_size, per_bytes, total); 1145 ret = size; 1146 transferred = size; 1147 break; /* UGLY hack*/ 1148 //goto again; 1157 //ret = size; 1158 //transferred = size; 1159 if (toret) break; /* avoid infinite loop */ 1160 toret = 1; 1161 goto again; 1149 1162 } 1150 1163 else { … … 1162 1175 break; 1163 1176 } 1177 toret = 0; 1164 1178 transferred += ret; 1165 1179 // printk("written: now: %i, buffer: %i, total: %i\n", ret, transferred, total);
Note:
See TracChangeset
for help on using the changeset viewer.