Ignore:
Timestamp:
Nov 9, 2009, 2:36:35 AM (16 years ago)
Author:
pasha
Message:

Fix buffers overflow problem, check Flash10, fix some strange code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OCO/trunk/drv16/waveplay.cpp

    r468 r473  
    6161    ULONG ret;
    6262#ifdef DEBUG
    63     dprintf(("WAVEPLAY::Open %lx",StreamId));
     63//    dprintf(("WAVEPLAY::Open %lx",StreamId));
    6464#endif
    6565    if (fAPMSuspend)
    6666    {
    6767#ifdef DEBUG
    68         dprintf(("WAVEPLAY::Open. Suspend state"));
     68//        dprintf(("WAVEPLAY::Open. Suspend state"));
    6969#endif
    7070        apm_resume();
     
    107107{
    108108#ifdef DEBUG
    109     dprintf(("WAVEPLAY::Close stream: %lx, %lx, os: %lx", StreamId, waveOpened,open_strategy));
     109//    dprintf(("WAVEPLAY::Close stream: %lx, %lx, os: %lx", StreamId, waveOpened,open_strategy));
    110110#endif
    111111#if 0 // fixme to be gone?
     
    119119        force_closed = 0;
    120120#ifdef DEBUG
    121         dprintf(("WAVEPLAY::Closed stream: %lx, %lx, os: %lx", StreamId, waveOpened,open_strategy));
     121//        dprintf(("WAVEPLAY::Closed stream: %lx, %lx, os: %lx", StreamId, waveOpened,open_strategy));
    122122#endif
    123123        return TRUE;
     
    140140                open_strategy = 0UL;
    141141#ifdef DEBUG
    142                 dprintf(("OSS16_WAVECLOSE: Success"));
     142//                dprintf(("OSS16_WAVECLOSE: Success"));
    143143#endif /* DEBUG */
    144144                return TRUE;
     
    171171    {
    172172#ifdef DEBUG
    173         dprintf(("WAVEPLAY::ConfigDev. Suspend state"));
     173//        dprintf(("WAVEPLAY::ConfigDev. Suspend state"));
    174174#endif
    175175        apm_resume();
     
    189189    }
    190190#ifdef DEBUG
    191     dprintf(("WAVEPLAY::ConfigDev1 SampleRate %ld", pConfigInfo->ulHwSampleRate));
    192     dprintf(("WAVEPLAY::ConfigDev1 ulFirstBufSize %ld", ulFirstBufSize));
    193     dprintf(("WAVEPLAY::ConfigDev1 ulFragsize %ld", pConfigInfo->ulFragsize));
     191    dprintf(("WAVEPLAY::ConfigDev1\nSampleRate %ld", pConfigInfo->ulHwSampleRate));
     192    dprintf(("ulFirstBufSize %ld", ulFirstBufSize));
     193    dprintf(("ulFragsize %ld", pConfigInfo->ulFragsize));
    194194#endif
    195195
     
    211211        ulFirstBufSize = ConvertLength(ulFirstBufSize, pConfigInfo);
    212212#ifdef DEBUG
    213         dprintf(("WAVEPLAY::ConfigDev2 ulFirstBufSize %ld", ulFirstBufSize));
     213        dprintf(("ulFirstBufSize %ld", ulFirstBufSize));
    214214#endif /* DEBUG */
    215215    }
     
    223223    ulPCMConsumeRate = ConvertLength(pConfigInfo->ulPCMConsumeRate, pConfigInfo);
    224224#ifdef DEBUG
    225     dprintf(("WAVEPLAY::ConfigDev: cons rate %ld buf size %ld init rate %ld", ulPCMConsumeRate, ulFirstBufSize, pConfigInfo->ulHwSampleRate));
     225    dprintf(("cons rate %ld buf size %ld init rate %ld", ulPCMConsumeRate, ulFirstBufSize, pConfigInfo->ulHwSampleRate));
    226226#endif /* DEBUG */
    227227
     
    252252
    253253#ifdef DEBUG
    254     dprintf(("WAVEPLAY::ConfigDev2 fragsize %ld", fragsize));
     254    dprintf(("fragsize %ld", fragsize));
    255255#endif
    256256    hwparam.ulSampleRate    = pConfigInfo->ulHwSampleRate;
     
    261261#ifdef DEBUG
    262262        dprintf(("WAVEPLAY:ConfigDev:OSS16_WaveSetFormat . rc = %d",rc));
    263         dprintf(("WAVEPLAY:ConfigDev:samp rate %ld",hwparam.ulSampleRate));
    264         dprintf(("WAVEPLAY:ConfigDev:bits per sample %ld",hwparam.ulBitsPerSample));
    265         dprintf(("WAVEPLAY:ConfigDev:channels %ld",hwparam.ulNumChannels));
    266         dprintf(("WAVEPLAY:ConfigDev:data type %ld",hwparam.ulDataType));
     263        dprintf(("samp rate %ld",hwparam.ulSampleRate));
     264        dprintf(("bits per sample %ld",hwparam.ulBitsPerSample));
     265        dprintf(("channels %ld",hwparam.ulNumChannels));
     266        dprintf(("data type %ld",hwparam.ulDataType));
    267267
    268268#endif
     
    294294    {
    295295#ifdef DEBUG
    296         dprintf(("WAVEPLAY::Transfer. Suspend state"));
     296//        dprintf(("WAVEPLAY::Transfer. Suspend state"));
    297297#endif
    298298        apm_resume();
     
    415415            dprintf(("WPLAY::AddBuffer need %ld space:%ld", ulCvtBufferSize, Space));
    416416#endif
    417             while (!Space)
    418                for (i=0; i < 0xffffff; i++)
    419                {
    420                     OSS16_WaveGetSpace(StreamId, &Space);
    421                     if (Space & ~(pConfigInfo->ulHwSampleSize - 1)) break;
    422                }
    423 #ifdef DEBUG
    424             dprintf(("OUT %lx need %ld space:%ld ",i, ulCvtBufferSize, Space));
    425 #endif
     417            if (Space < pConfigInfo->ulBytesPerIRQ)
     418            {
     419               return TRUE;
     420            }
     421
    426422            if (ulCvtBufferSize > Space)
    427423                ulCvtBufferSize = Space & ~(pConfigInfo->ulHwSampleSize - 1);
     
    433429            {
    434430                 GetSpace(StreamId, pConfigInfo, &Space);
    435                  dprintf(("WPLAY::AddBuffer; OSS16_WaveAddBuffer %ld %x failed due to full buffer free space:%ld", ulCvtBufferSize, (USHORT)rc,Space));
     431                 dprintf(("WPLAY::AddBuffer; %ld %x failed due to full buffer free space:%ld", ulCvtBufferSize, (USHORT)rc,Space));
    436432            }
    437433#ifdef DEBUG
    438434            else
    439                 dprintf(("WPLAY::AddBuffer; OSS16_WaveAddBuffer %ld rc=%x failed", ulCvtBufferSize, (USHORT)rc));
     435                dprintf(("WPLAY::AddBuffer; %ld rc=%x failed", ulCvtBufferSize, (USHORT)rc));
    440436#endif
    441437            *pulBytesTransferred = 0;
     
    492488        *pulStreamPosition = 0;
    493489#ifdef DEBUG
    494         dprintf(("OSS16_WAVEPLAY::GetPosition: Failed"));
     490        dprintf(("WAVEPLAY::GetPosition: Failed"));
    495491#endif /* DEBUG */
    496492        return FALSE;
     
    515511        *pulStreamSpace = 0;
    516512#ifdef DEBUG
    517         dprintf(("OSS16_WAVEPLAY::GetSpace: Failed"));
     513        dprintf(("WAVEPLAY::GetSpace: Failed"));
    518514#endif /* DEBUG */
    519515        return FALSE;
     
    537533        *pulHwPtr = 0;
    538534        #ifdef DEBUG
    539         dprintf(("OSS16_WAVEPLAY::WaveGetHwPtr: Failed"));
     535        dprintf(("WAVEPLAY::WaveGetHwPtr: Failed"));
    540536        #endif /* DEBUG */
    541537        return FALSE;
Note: See TracChangeset for help on using the changeset viewer.