Changeset 267 for GPL/trunk/lib32/sound.c
- Timestamp:
- Nov 8, 2007, 4:47:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk/lib32/sound.c
r130 r267 1072 1072 int ret, align, size1, ret1; 1073 1073 LONG transferred; 1074 ULONG position ;1074 ULONG position,i; 1075 1075 char *buf; 1076 1076 int toret = 0; … … 1140 1140 while(TRUE) { 1141 1141 again: 1142 for ( i=0; i < 10000; i++) 1143 { 1144 ret1 = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_STATUS, (ULONG)__Stack32ToFlat(&status)); 1145 if ( status.state != SNDRV_PCM_STATE_XRUN ) break; 1146 } 1147 if ( i > 9998 ) 1148 { 1149 printk("timeout stat %x avail:%i:%i \n",status.state,samples_to_bytes(status.avail),status.avail); 1150 ret1 = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_PREPARE, 0); 1151 ret1 = pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_STATUS, (ULONG)__Stack32ToFlat(&status)); 1152 } 1142 1153 ret = pHandle->file.f_op->write(&pHandle->file, (char *)buffer, size, &pHandle->file.f_pos); 1143 1154 if(ret < 0) { … … 1153 1164 printk("OSS32_WaveAddBuffer failed on partial transfer %x %i; ret = %i\n", buffer, size, ret); 1154 1165 *pTransferred = transferred; 1155 if (toret )1166 if (toret > 4) 1156 1167 return OSSERR_SUCCESS; /* avoid infinite loop */ 1157 toret = 1;1168 toret++; 1158 1169 goto again; 1159 1170 }
Note:
See TracChangeset
for help on using the changeset viewer.