Changeset 86 for GPL/trunk/lib32


Ignore:
Timestamp:
Jan 23, 2007, 10:34:32 PM (19 years ago)
Author:
vladest
Message:

Added missed files
Applied latest modifications of ALSA
Reworked sharing strategy between MMOS2 and UNIAUD API

Location:
GPL/trunk/lib32
Files:
3 edited

Legend:

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

    r77 r86  
    118118        if (j++ > timeout)
    119119        {
    120             printk("j with tout =%i\n",j);
     120            printk("j with tout =%i. handle: %x\n",j, pHandle);
    121121            return -ETIME;
    122122        }
  • GPL/trunk/lib32/ossidc.cpp

    r84 r86  
    154154    dprintf(("force card: %d",ForceCard));
    155155    //Check for SoundBlaster Live!
     156    if((ForceCard == CARD_NONE || ForceCard == CARD_ICH) &&
     157       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_intel8x0_init) == 0)
     158    {
     159        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_intel8x0_exit);
     160    }
     161    if((ForceCard == CARD_NONE || ForceCard == CARD_VIA82XX) &&
     162       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_via82xx_init) == 0)
     163    {
     164        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_via82xx_exit);
     165    }
    156166    if((ForceCard == CARD_NONE || ForceCard == CARD_SBLIVE) &&
    157167       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_emu10k1_init) == 0)
     
    159169        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_emu10k1_exit);
    160170    }
    161 //    else //Check for C-Media 8738 Audio
    162171    if((ForceCard == CARD_NONE || ForceCard == CARD_CMEDIA) &&
    163172       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_cmipci_init) == 0)
     
    165174        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_cmipci_exit);
    166175    }
    167 //    else //Check for Avance Logic ALS4000 Audio
    168176    if((ForceCard == CARD_NONE || ForceCard == CARD_ALS4000) &&
    169177       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_als4000_init) == 0)
     
    171179        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_als4000_exit);
    172180    }
    173 //    else //Check for Crystal Semi 4281 Audio
    174181    if((ForceCard == CARD_NONE || ForceCard == CARD_CS4281) &&
    175182       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_cs4281_init) == 0)
     
    177184        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_cs4281_exit);
    178185    }
    179 //    else //check for Crystal CS46XX
    180     //Check for Intel ICH Audio
    181     if((ForceCard == CARD_NONE || ForceCard == CARD_ICH) &&
    182        nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_intel8x0_init) == 0)
    183     {
    184         fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_intel8x0_exit);
    185     }
    186 //    else
    187186    if((ForceCard == CARD_NONE || ForceCard == CARD_CS46XX) &&
    188187       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_cs46xx_init) == 0)
     
    190189        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_cs46xx_exit);
    191190    }
    192 //    else //check for ESS 1938
    193191    if((ForceCard == CARD_NONE || ForceCard == CARD_ESS1938) &&
    194192       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_es1938_init) == 0)
     
    196194        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_es1938_exit);
    197195    }
    198 //    else //check for ENSONIQ
    199196    if((ForceCard == CARD_NONE || ForceCard == CARD_ENSONIQ) &&
    200197       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_ens137x_init) == 0)
     
    202199        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_ens137x_exit);
    203200    }
    204 //    else //check for VIA 82XX
    205     if((ForceCard == CARD_NONE || ForceCard == CARD_VIA82XX) &&
    206        nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_via82xx_init) == 0)
    207     {
    208         fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_via82xx_exit);
    209     }
    210 //    else //check for YAMAHA
    211201    if((ForceCard == CARD_NONE || ForceCard == CARD_YAMAHA) &&
    212202       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_ymfpci_init) == 0)
     
    214204        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_ymfpci_exit);
    215205    }
    216 //    else //check for MAESTRO
    217206    if((ForceCard == CARD_NONE || ForceCard == CARD_MAESTRO) &&
    218207       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_es1968_init) == 0)
     
    220209        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_es1968_exit);
    221210    }
    222 //    else //check for MAESTRO3
    223211    if((ForceCard == CARD_NONE || ForceCard == CARD_MAESTRO3) &&
    224212       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_m3_init) == 0)
     
    226214        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_m3_exit);
    227215    }
    228 //    else //check for ALI5451
    229216    if((ForceCard == CARD_NONE || ForceCard == CARD_ALI5451) &&
    230217       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_ali_init) == 0)
     
    232219        fnCardExitCall[nrCardsDetected] = name_module_exit(alsa_card_ali_exit);
    233220    }
    234 //    else
    235221    if((ForceCard == CARD_NONE || ForceCard == CARD_TRIDENT) &&
    236222       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_trident_init) == 0)
     
    240226
    241227#ifdef VORTEX
    242 //    else //check for Aureal VORTEX
    243228    if((ForceCard == CARD_NONE || ForceCard == CARD_VORTEX) &&
    244229       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_vortex_init) == 0)
     
    247232   }
    248233#endif
    249 //    else //check for NeoMagik
    250234    if((ForceCard == CARD_NONE || ForceCard == CARD_NEOMAGIC) &&
    251235       nrCardsDetected < (OSS32_MAX_AUDIOCARDS-1) && call_module_init(alsa_card_nm256_init) == 0)
  • GPL/trunk/lib32/sound.c

    r85 r86  
    541541            if (opened_handles[i].handle != 0)
    542542            {
     543                ret = 0;
    543544                if (pStreamId)
    544545                    *pStreamId = (ULONG)opened_handles[i].handle;
    545                 opened_handles[i].reuse = 0; /* prevent from reusing */
     546                opened_handles[i].reuse = 1; /* try to reuse */
    546547                if (OSS32_WaveClose((OSSSTREAMID)opened_handles[i].handle) == 0)
    547548                {
    548                     OSS32_CloseUNI16(); /* say to UNIAUD16 that we closing now */
    549                     opened_handles[i].handle = 0;
    550                     ret = alsa_fops->open(&pHandle->inode, &pHandle->file);
    551                     printk("OSS32_WaveOpen. Reopen ret: %i\n", ret);
     549                    if (!opened_handles[i].reuse)
     550                    {
     551                        //opened_handles[i].handle = 0;
     552                        kfree(opened_handles[i].handle);   //free handle data
     553                        ret = alsa_fops->open(&pHandle->inode, &pHandle->file);
     554                        printk("OSS32_WaveOpen. Reopen ret: %i\n", ret);
     555                    }
     556                    else
     557                    {
     558                        kfree(pHandle);
     559                        pHandle = opened_handles[i].handle;
     560                    }
    552561                    break;
    553562                }
     563            }
     564        }
     565    }
     566    else if (ret == 0)
     567    {
     568        for (i=0; i < 8*256; i++)
     569        {
     570            if (opened_handles[i].handle == 0)
     571            {
     572                opened_handles[i].handle = pHandle;
     573                opened_handles[i].FileId = fileid;
     574                break;
    554575            }
    555576        }
     
    566587        *pStreamId = (ULONG)pHandle;
    567588    // filling opened handles table
    568     for (i=0; i < 8*256; i++)
    569     {
    570         if (opened_handles[i].handle == 0)
    571         {
    572             opened_handles[i].handle = pHandle;
    573             opened_handles[i].FileId = fileid;
    574             break;
    575         }
    576     }
    577589    printk("OSS32_WaveOpen. streamid %X\n",(ULONG)pHandle);
    578590    return OSSERR_SUCCESS;
     
    604616                opened_handles[i].handle = 0;
    605617                kfree(pHandle);   //free handle data
     618                OSS32_CloseUNI16(); /* say to UNIAUD16 that we closing now */
    606619            } else
    607620            {
    608621                /* prepare for reuse */
     622                pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_RESET, 0);
    609623                pHandle->file.f_op->ioctl(&pHandle->inode, &pHandle->file, SNDRV_PCM_IOCTL_PREPARE, 0);
    610624            }
     
    762776#endif
    763777    if(pHandle == NULL || pHandle->magic != MAGIC_WAVE_ALSA32) {
    764         printk("OSS32_WaveSetHwParams error. Invalid handle\n");
     778        printk("OSS32_WaveSetHwParams error. Invalid handle: %x\n", pHandle);
    765779        DebugInt3();
    766780        return OSSERR_INVALID_STREAMID;
     
    10891103    size = min(size, samples_to_bytes(status.avail));
    10901104    if (size1 != size)
    1091         printk("requested size [%i] less then available [%s]\n", size1, size);
     1105        printk("requested size [%i] less then available [%i]\n", size1, size);
    10921106#if 0
    10931107    if (size < per_bytes)
Note: See TracChangeset for help on using the changeset viewer.