Ignore:
Timestamp:
Nov 8, 2007, 4:47:51 AM (18 years ago)
Author:
Brendan Oakley
Message:

Fix HDA buffering in Uniaud32, from Pavel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk/lib32/sound.c

    r130 r267  
    10721072    int                 ret, align, size1, ret1;
    10731073    LONG                transferred;
    1074     ULONG               position;
     1074    ULONG               position,i;
    10751075    char                *buf;
    10761076    int toret = 0;
     
    11401140        while(TRUE) {
    11411141        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            }
    11421153            ret = pHandle->file.f_op->write(&pHandle->file, (char *)buffer, size, &pHandle->file.f_pos);
    11431154            if(ret < 0) {
     
    11531164                    printk("OSS32_WaveAddBuffer failed on partial transfer %x %i; ret = %i\n", buffer, size, ret);
    11541165                    *pTransferred = transferred;
    1155                     if (toret)
     1166                    if (toret > 4)
    11561167                        return OSSERR_SUCCESS; /* avoid infinite loop */
    1157                     toret = 1;
     1168                    toret++;
    11581169                    goto again;
    11591170                }
Note: See TracChangeset for help on using the changeset viewer.