Ignore:
Timestamp:
04/17/02 02:27:05 (8 years ago)
Author:
rossb
Message:

changed Pa_QueryDevices to Pa_InitializeNumDevices and added separate function Pa_AllocateDevicePtrs
changed Pa_AllocateDevicePtrs to never allocate 0 bytes
removed Pa_MabeQueryDevices
added explicit initialization of sDevicePtrs[n] to NULL
changed default input and output devices to paNoDevice when no device was available
changed Pa_GetDefaultInput/OutputDeviceID to have the same behavior as when there was no environment variable when the environment variables value was out of range
added #if around declaration of sNumAllocations
removed unused locals bytesEmpty, bytesFilled, buffersEmpty from Pa_TimeSlice()
renamed all result variables of type MMRESULT to mmresult

File:
1 edited

Legend:

Unmodified
Added
Removed
  • portaudio/trunk/pa_win_wmme/pa_win_wmme.c

    r150 r151  
    4646 PLB20010422 - apply Mike Berry's changes for CodeWarrior on PC 
    4747               including condition including of memory.h, 
    48       and explicit typecasting on memory allocation 
     48               and explicit typecasting on memory allocation 
    4949 PLB20010802 - use GlobalAlloc for sDevicesPtr instead of PaHost_AllocFastMemory 
    5050 PLB20010816 - pass process instead of thread to SetPriorityClass() 
     
    5454 RDB20020411 - various renaming cleanups, factored streamData alloc and cpu usage init 
    5555 RDB20020417 - stopped counting WAVE_MAPPER when there were no real devices 
     56               refactoring, renaming and fixed a few edge case bugs 
    5657*/ 
    5758 
     
    171172static const char sMapperSuffixInput[] = " - Input"; 
    172173static const char sMapperSuffixOutput[] = " - Output"; 
     174 
     175#if PA_TRACK_MEMORY 
    173176static int sNumAllocations = 0; 
     177#endif 
    174178 
    175179/************************************************* Macros ********/ 
     
    177181#define PaDeviceIdToWinId(id) (((id) < sNumInputDevices) ? (id - 1) : (id - sNumInputDevices - 1)) 
    178182/************************************************* Prototypes **********/ 
    179 static Pa_QueryDevices( void ); 
     183 
     184void Pa_InitializeNumDevices( void ); 
     185PaError Pa_AllocateDevicePtrs( void ); 
     186 
    180187static void CALLBACK Pa_TimerCallback(UINT uID, UINT uMsg, 
    181188                                      DWORD dwUser, DWORD dw1, DWORD dw2); 
     
    187194static void PaHost_FreeTrackedMemory( void *addr ); 
    188195 
    189  
    190 /* 
    191     FIXME: PaHost_GetStreamRepresentation() should be migrated to pa_lib.c 
    192 */ 
    193 static internalPortAudioStream* PaHost_GetStreamRepresentation( PortAudioStream *stream ) 
    194 { 
    195     internalPortAudioStream* result = (internalPortAudioStream*) stream; 
    196      
    197     if( result == NULL || result->past_Magic != PA_MAGIC ) 
    198         return NULL; 
    199     else 
    200         return result; 
    201 } 
    202196/*******************************************************************/ 
    203197static PaError PaHost_AllocateWMMEStreamData( internalPortAudioStream *stream ) 
     
    288282/****************************************** END CPU UTILIZATION *******/ 
    289283 
    290 /* FIXME: this function should be renamed */ 
    291 static PaError Pa_QueryDevices( void ) 
    292 { 
    293     int numBytes; 
    294   
     284static void Pa_InitializeNumDevices( void ) 
     285{ 
    295286    sNumInputDevices = waveInGetNumDevs(); 
    296287    if( sNumInputDevices > 0 ) 
     288    { 
    297289        sNumInputDevices += 1; /* add one extra for the WAVE_MAPPER */ 
    298  
    299     sDefaultInputDeviceID = 0; 
     290        sDefaultInputDeviceID = 0; 
     291    } 
     292    else 
     293    { 
     294        sDefaultInputDeviceID = paNoDevice; 
     295    } 
    300296 
    301297    sNumOutputDevices = waveOutGetNumDevs(); 
    302298    if( sNumOutputDevices > 0 ) 
     299    { 
    303300        sNumOutputDevices += 1; /* add one extra for the WAVE_MAPPER */ 
    304  
    305     sDefaultOutputDeviceID = sNumInputDevices; 
     301        sDefaultOutputDeviceID = sNumInputDevices; 
     302    } 
     303    else 
     304    { 
     305        sDefaultOutputDeviceID = paNoDevice; 
     306    } 
    306307 
    307308    sNumDevices = sNumInputDevices + sNumOutputDevices; 
    308      
     309} 
     310 
     311static PaError Pa_AllocateDevicePtrs( void ) 
     312{ 
     313    int numBytes; 
     314    int i; 
     315 
    309316    /* Allocate structures to hold device info. */ 
    310317    /* PLB20010402 - was allocating too much memory. */ 
    311318    /* numBytes = sNumDevices * sizeof(PaDeviceInfo);  // PLB20010402 */ 
    312     numBytes = sNumDevices * sizeof(PaDeviceInfo *); /* PLB20010402 */ 
    313     sDevicePtrs = (PaDeviceInfo **) PaHost_AllocateTrackedMemory( numBytes ); /* MEM */ 
    314     if( sDevicePtrs == NULL ) return paInsufficientMemory; 
     319 
     320    if( sNumDevices > 0 ) 
     321    { 
     322        numBytes = sNumDevices * sizeof(PaDeviceInfo *); /* PLB20010402 */ 
     323        sDevicePtrs = (PaDeviceInfo **) PaHost_AllocateTrackedMemory( numBytes ); /* MEM */ 
     324        if( sDevicePtrs == NULL ) return paInsufficientMemory; 
     325 
     326        for( i = 0; i < sNumDevices; i++ ) 
     327            sDevicePtrs[i] = NULL;  /* RDB20020417 explicitly set each ptr to NULL */ 
     328    } 
     329    else 
     330    { 
     331        sDevicePtrs = NULL; 
     332    } 
     333     
    315334    return paNoError; 
    316335} 
     
    323342int Pa_CountDevices() 
    324343{ 
    325     if( sNumDevices <= 0 ) Pa_Initialize(); 
    326     return sNumDevices; 
     344    if( PaHost_IsInitialized() ) 
     345        return sNumDevices; 
     346    else 
     347        return 0; 
    327348} 
    328349/************************************************************************* 
     
    484505        if( woc.dwFormats & WAVE_FORMAT_4M16 ||woc.dwFormats & WAVE_FORMAT_4S16 ) 
    485506            sampleRates[ deviceInfo->numSampleRates++ ] = 44100.; 
     507 
    486508        /* Add a sample rate to the list if we can do stereo 16 bit at that rate 
    487509         * based on opening the device successfully. */ 
     
    538560    return recommendedID; 
    539561} 
    540 static PaError Pa_MaybeQueryDevices( void ) 
    541 { 
    542     if( sNumDevices == 0 ) 
    543     { 
    544         return Pa_QueryDevices(); 
    545     } 
    546     return 0; 
    547 } 
    548562/********************************************************************** 
    549563 * Check for environment variable, else query devices and use result. 
     
    551565PaDeviceID Pa_GetDefaultInputDeviceID( void ) 
    552566{ 
    553     PaError result; 
     567    PaDeviceID result; 
    554568 
    555569    result = PaHost_GetEnvDefaultDeviceID( PA_REC_IN_DEV_ENV_NAME ); 
    556     if( result < 0 ) 
    557     { 
    558         result = Pa_MaybeQueryDevices(); 
    559         if( result < 0 ) return result; 
     570    if( result == paNoDevice || result < 0 || result >= sNumInputDevices ) 
     571    { 
    560572        result = sDefaultInputDeviceID; 
    561573    } 
     
    564576PaDeviceID Pa_GetDefaultOutputDeviceID( void ) 
    565577{ 
    566     PaError result; 
     578    PaDeviceID result; 
    567579 
    568580    result = PaHost_GetEnvDefaultDeviceID( PA_REC_OUT_DEV_ENV_NAME ); 
    569     if( result < 0 ) 
    570     { 
    571         result = Pa_MaybeQueryDevices(); 
    572         if( result < 0 ) return result; 
     581    if( result == paNoDevice || result < sNumInputDevices || result >= sNumDevices ) 
     582    { 
    573583        result = sDefaultOutputDeviceID; 
    574584    } 
     
    588598    PRINT(("WARNING - Underflow Simulation Enabled - Expect a Big Glitch!!!\n")); 
    589599#endif 
    590     return Pa_MaybeQueryDevices(); 
     600    
     601 
     602    Pa_InitializeNumDevices(); 
     603 
     604    return Pa_AllocateDevicePtrs(); 
    591605} 
    592606 
     
    608622{ 
    609623    PaError           result = paNoError; 
    610     long              bytesEmpty = 0; 
    611     long              bytesFilled = 0; 
    612     long              buffersEmpty = 0; 
    613     MMRESULT          mresult; 
     624    MMRESULT          mmresult; 
    614625    char             *inBufPtr; 
    615626    char             *outBufPtr; 
     
    698709        if( gotInput ) 
    699710        { 
    700             mresult = waveInAddBuffer( wmmeStreamData->hWaveIn, 
     711            mmresult = waveInAddBuffer( wmmeStreamData->hWaveIn, 
    701712                                       &wmmeStreamData->inputBuffers[ wmmeStreamData->currentInputBuffer ], 
    702713                                       sizeof(WAVEHDR) ); 
    703             if( mresult != MMSYSERR_NOERROR ) 
     714            if( mmresult != MMSYSERR_NOERROR ) 
    704715            { 
    705                 sPaHostError = mresult; 
     716                sPaHostError = mmresult; 
    706717                result = paHostError; 
    707718                break; 
     
    716727            AddTraceMessage( "Pa_TimeSlice: writing buffer ", wmmeStreamData->currentOutputBuffer ); 
    717728#endif 
    718             mresult = waveOutWrite( wmmeStreamData->hWaveOut, 
     729            mmresult = waveOutWrite( wmmeStreamData->hWaveOut, 
    719730                                    &wmmeStreamData->outputBuffers[ wmmeStreamData->currentOutputBuffer ], 
    720731                                    sizeof(WAVEHDR) ); 
    721             if( mresult != MMSYSERR_NOERROR ) 
     732            if( mmresult != MMSYSERR_NOERROR ) 
    722733            { 
    723                 sPaHostError = mresult; 
     734                sPaHostError = mmresult; 
    724735                result = paHostError; 
    725736                break; 
     
    886897PaError PaHost_OpenInputStream( internalPortAudioStream   *stream ) 
    887898{ 
    888     MMRESULT         mr; 
    889899    PaError          result = paNoError; 
     900    MMRESULT         mmresult; 
    890901    PaWMMEStreamData *wmmeStreamData; 
    891902    int              i; 
     
    919930    inputMmId = PaDeviceIdToWinId( stream->past_InputDeviceID ); 
    920931#if PA_USE_TIMER_CALLBACK 
    921     mr = waveInOpen( &wmmeStreamData->hWaveIn, inputMmId, &wfx, 
     932    mmresult = waveInOpen( &wmmeStreamData->hWaveIn, inputMmId, &wfx, 
    922933                     0, 0, CALLBACK_NULL ); 
    923934#else 
    924     mr = waveInOpen( &wmmeStreamData->hWaveIn, inputMmId, &wfx, 
     935    mmresult = waveInOpen( &wmmeStreamData->hWaveIn, inputMmId, &wfx, 
    925936                     (DWORD)wmmeStreamData->bufferEvent, (DWORD) stream, CALLBACK_EVENT ); 
    926937#endif 
    927     if( mr != MMSYSERR_NOERROR ) 
     938    if( mmresult != MMSYSERR_NOERROR ) 
    928939    { 
    929940        ERR_RPT(("PortAudio: PaHost_OpenInputStream() failed!\n")); 
    930941        result = paHostError; 
    931         sPaHostError = mr; 
     942        sPaHostError = mmresult; 
    932943        goto error; 
    933944    } 
     
    950961        wmmeStreamData->inputBuffers[i].dwBufferLength = wmmeStreamData->bytesPerHostInputBuffer; 
    951962        wmmeStreamData->inputBuffers[i].dwUser = i; 
    952         if( ( mr = waveInPrepareHeader( wmmeStreamData->hWaveIn, &wmmeStreamData->inputBuffers[i], sizeof(WAVEHDR) )) != MMSYSERR_NOERROR ) 
     963        if( ( mmresult = waveInPrepareHeader( wmmeStreamData->hWaveIn, &wmmeStreamData->inputBuffers[i], sizeof(WAVEHDR) )) != MMSYSERR_NOERROR ) 
    953964        { 
    954965            result = paHostError; 
    955             sPaHostError = mr; 
     966            sPaHostError = mmresult; 
    956967            goto error; 
    957968        } 
     
    965976PaError PaHost_OpenOutputStream( internalPortAudioStream *stream ) 
    966977{ 
    967     MMRESULT         mr; 
    968978    PaError          result = paNoError; 
     979    MMRESULT         mmresult; 
    969980    PaWMMEStreamData *wmmeStreamData; 
    970981    int              i; 
     
    9991010    outputMmID = PaDeviceIdToWinId( stream->past_OutputDeviceID ); 
    10001011#if PA_USE_TIMER_CALLBACK 
    1001     mr = waveOutOpen( &wmmeStreamData->hWaveOut, outputMmID, &wfx, 
     1012    mmresult = waveOutOpen( &wmmeStreamData->hWaveOut, outputMmID, &wfx, 
    10021013                      0, 0, CALLBACK_NULL ); 
    10031014#else 
     
    10111022    } 
    10121023    wmmeStreamData->abortEventInited = 1; 
    1013     mr = waveOutOpen( &wmmeStreamData->hWaveOut, outputMmID, &wfx, 
     1024    mmresult = waveOutOpen( &wmmeStreamData->hWaveOut, outputMmID, &wfx, 
    10141025                      (DWORD)wmmeStreamData->bufferEvent, (DWORD) stream, CALLBACK_EVENT ); 
    10151026#endif 
    1016     if( mr != MMSYSERR_NOERROR ) 
     1027    if( mmresult != MMSYSERR_NOERROR ) 
    10171028    { 
    10181029        ERR_RPT(("PortAudio: PaHost_OpenOutputStream() failed!\n")); 
    10191030        result = paHostError; 
    1020         sPaHostError = mr; 
     1031        sPaHostError = mmresult; 
    10211032        goto error; 
    10221033    } 
     
    10391050        wmmeStreamData->outputBuffers[i].dwBufferLength = wmmeStreamData->bytesPerHostOutputBuffer; 
    10401051        wmmeStreamData->outputBuffers[i].dwUser = i; 
    1041         if( (mr = waveOutPrepareHeader( wmmeStreamData->hWaveOut, &wmmeStreamData->outputBuffers[i], sizeof(WAVEHDR) )) != MMSYSERR_NOERROR ) 
     1052        if( (mmresult = waveOutPrepareHeader( wmmeStreamData->hWaveOut, &wmmeStreamData->outputBuffers[i], sizeof(WAVEHDR) )) != MMSYSERR_NOERROR ) 
    10421053        { 
    10431054            result = paHostError; 
    1044             sPaHostError = mr; 
     1055            sPaHostError = mmresult; 
    10451056            goto error; 
    10461057        } 
     
    11921203{ 
    11931204    PaError          result = paNoError; 
    1194     MMRESULT         mr; 
     1205    MMRESULT         mmresult; 
    11951206    int              i; 
    11961207    PaWMMEStreamData *wmmeStreamData = PaHost_GetWMMEStreamData( stream ); 
     
    12001211    if( stream->past_OutputDeviceID != paNoDevice ) 
    12011212    { 
    1202         if( (mr = waveOutPause( wmmeStreamData->hWaveOut )) != MMSYSERR_NOERROR ) 
     1213        if( (mmresult = waveOutPause( wmmeStreamData->hWaveOut )) != MMSYSERR_NOERROR ) 
    12031214        { 
    12041215            result = paHostError; 
    1205             sPaHostError = mr; 
     1216            sPaHostError = mmresult; 
    12061217            goto error; 
    12071218        } 
     
    12091220        { 
    12101221            ZeroMemory( wmmeStreamData->outputBuffers[i].lpData, wmmeStreamData->outputBuffers[i].dwBufferLength ); 
    1211             mr = waveOutWrite( wmmeStreamData->hWaveOut, &wmmeStreamData->outputBuffers[i], sizeof(WAVEHDR) ); 
    1212             if( mr != MMSYSERR_NOERROR ) 
     1222            mmresult = waveOutWrite( wmmeStreamData->hWaveOut, &wmmeStreamData->outputBuffers[i], sizeof(WAVEHDR) ); 
     1223            if( mmresult != MMSYSERR_NOERROR ) 
    12131224            { 
    12141225                result = paHostError; 
    1215                 sPaHostError = mr; 
     1226                sPaHostError = mmresult; 
    12161227                goto error; 
    12171228            } 
     
    12191230        } 
    12201231        wmmeStreamData->currentOutputBuffer = 0; 
    1221         if( (mr = waveOutRestart( wmmeStreamData->hWaveOut )) != MMSYSERR_NOERROR ) 
     1232        if( (mmresult = waveOutRestart( wmmeStreamData->hWaveOut )) != MMSYSERR_NOERROR ) 
    12221233        { 
    12231234            result = paHostError; 
    1224             sPaHostError = mr; 
     1235            sPaHostError = mmresult; 
    12251236            goto error; 
    12261237        } 
     
    12281239 
    12291240error: 
    1230     DBUG(("PaHost_StartOutput: wave returned mr = 0x%X.\n", mr)); 
     1241    DBUG(("PaHost_StartOutput: wave returned mmresult = 0x%X.\n", mmresult)); 
    12311242    return result; 
    12321243} 
     
    12351246{ 
    12361247    PaError          result = paNoError; 
    1237     MMRESULT         mr; 
     1248    MMRESULT         mmresult; 
    12381249    int              i; 
    12391250    PaWMMEStreamData *wmmeStreamData = PaHost_GetWMMEStreamData( internalStream ); 
     
    12451256        for( i=0; i<wmmeStreamData->numHostBuffers; i++ ) 
    12461257        { 
    1247             mr = waveInAddBuffer( wmmeStreamData->hWaveIn, &wmmeStreamData->inputBuffers[i], sizeof(WAVEHDR) ); 
    1248             if( mr != MMSYSERR_NOERROR ) 
     1258            mmresult = waveInAddBuffer( wmmeStreamData->hWaveIn, &wmmeStreamData->inputBuffers[i], sizeof(WAVEHDR) ); 
     1259            if( mmresult != MMSYSERR_NOERROR ) 
    12491260            { 
    12501261                result = paHostError; 
    1251                 sPaHostError = mr; 
     1262                sPaHostError = mmresult; 
    12521263                goto error; 
    12531264            } 
    12541265        } 
    12551266        wmmeStreamData->currentInputBuffer = 0; 
    1256         mr = waveInStart( wmmeStreamData->hWaveIn ); 
    1257         DBUG(("Pa_StartStream: waveInStart returned = 0x%X.\n", mr)); 
    1258         if( mr != MMSYSERR_NOERROR ) 
     1267        mmresult = waveInStart( wmmeStreamData->hWaveIn ); 
     1268        DBUG(("Pa_StartStream: waveInStart returned = 0x%X.\n", mmresult)); 
     1269        if( mmresult != MMSYSERR_NOERROR ) 
    12591270        { 
    12601271            result = paHostError; 
    1261             sPaHostError = mr; 
     1272            sPaHostError = mmresult; 
    12621273            goto error; 
    12631274        } 
     
    14031414PaError PaHost_StopInput( internalPortAudioStream *stream, int abort ) 
    14041415{ 
    1405     MMRESULT mr; 
     1416    MMRESULT mmresult; 
    14061417    PaWMMEStreamData *wmmeStreamData = PaHost_GetWMMEStreamData( stream ); 
    14071418 
    14081419    if( wmmeStreamData == NULL ) return paNoError; /* FIXME: why return paNoError? */ 
    1409     (void) abort; /* FIXME: what is this? */ 
     1420    (void) abort; /* unused parameter */ 
    14101421 
    14111422    if( wmmeStreamData->hWaveIn != NULL ) 
    14121423    { 
    1413         mr = waveInReset( wmmeStreamData->hWaveIn ); 
    1414         if( mr != MMSYSERR_NOERROR ) 
    1415         { 
    1416             sPaHostError = mr; 
     1424        mmresult = waveInReset( wmmeStreamData->hWaveIn ); 
     1425        if( mmresult != MMSYSERR_NOERROR ) 
     1426        { 
     1427            sPaHostError = mmresult; 
    14171428            return paHostError; 
    14181429        } 
     
    14231434PaError PaHost_StopOutput( internalPortAudioStream *internalStream, int abort ) 
    14241435{ 
    1425     MMRESULT mr; 
     1436    MMRESULT mmresult; 
    14261437    PaWMMEStreamData *wmmeStreamData = PaHost_GetWMMEStreamData( internalStream ); 
    14271438 
    14281439    if( wmmeStreamData == NULL ) return paNoError;    /* FIXME: why return paNoError? */ 
    1429     (void) abort;   /* FIXME: what is this? */ 
     1440    (void) abort;   /* unused parameter */ 
    14301441 
    14311442#if PA_TRACE_START_STOP 
     
    14341445    if( wmmeStreamData->hWaveOut != NULL ) 
    14351446    { 
    1436         mr = waveOutReset( wmmeStreamData->hWaveOut ); 
    1437         if( mr != MMSYSERR_NOERROR ) 
    1438         { 
    1439             sPaHostError = mr; 
     1447        mmresult = waveOutReset( wmmeStreamData->hWaveOut ); 
     1448        if( mmresult != MMSYSERR_NOERROR ) 
     1449        { 
     1450            sPaHostError = mmresult; 
    14401451            return paHostError; 
    14411452        } 
     
    15181529    if( (hresult > 0) && (hresult < PA_ENV_BUF_SIZE) ) 
    15191530    { 
    1520         minLatencyMsec = atoi( envbuf ); 
     1531        minLatencyMsec = atoi( envbuf );   /* REVIEW: will we crash if the environment variable contains some nasty value? */ 
    15211532    } 
    15221533    else 
     
    16091620void PaHost_FreeFastMemory( void *addr, long numBytes ) 
    16101621{ 
     1622    (void) numBytes; /* unused parameter */ 
     1623     
    16111624    PaHost_FreeTrackedMemory( addr ); /* MEM */ 
    16121625} 
     
    16391652PaError PaHost_StreamActive( internalPortAudioStream *internalStream ) 
    16401653{ 
    1641     //internalPortAudioStream *internalStream = PaHost_GetStreamRepresentation( stream ); 
    1642     PaWMMEStreamData *wmmeStreamData = PaHost_GetWMMEStreamData( internalStream ); 
    1643  
    16441654    if( internalStream == NULL ) return paBadStreamPtr; 
    1645     if( wmmeStreamData == NULL ) return paInternalError; 
    1646  
    1647     /* 
    1648         FIXME: why are we dereferencing wmmeStreamData here at all? 
    1649     */ 
    16501655 
    16511656    return (PaError) internalStream->past_IsActive; 
     
    16571662static PaError PaHost_UpdateStreamTime( PaWMMEStreamData *wmmeStreamData ) 
    16581663{ 
    1659     MMRESULT  mr; 
     1664    MMRESULT  mmresult; 
    16601665    MMTIME    mmtime; 
    16611666    mmtime.wType = TIME_SAMPLES; 
     
    16631668    if( wmmeStreamData->hWaveOut != NULL ) 
    16641669    { 
    1665         mr = waveOutGetPosition( wmmeStreamData->hWaveOut, &mmtime, sizeof(mmtime) ); 
     1670        mmresult = waveOutGetPosition( wmmeStreamData->hWaveOut, &mmtime, sizeof(mmtime) ); 
    16661671    } 
    16671672    else 
    16681673    { 
    1669         mr = waveInGetPosition( wmmeStreamData->hWaveIn, &mmtime, sizeof(mmtime) ); 
    1670     } 
    1671     if( mr != MMSYSERR_NOERROR ) 
    1672     { 
    1673         sPaHostError = mr; 
     1674        mmresult = waveInGetPosition( wmmeStreamData->hWaveIn, &mmtime, sizeof(mmtime) ); 
     1675    } 
     1676     
     1677    if( mmresult != MMSYSERR_NOERROR ) 
     1678    { 
     1679        sPaHostError = mmresult; 
    16741680        return paHostError; 
    16751681    } 
    1676     /* This data has two variables and is shared by foreground and background. */ 
    1677     /* So we need to make it thread safe. */ 
     1682     
     1683    /* This data has two variables and is shared by foreground and background. 
     1684     * So we need to make it thread safe. */ 
    16781685    EnterCriticalSection( &wmmeStreamData->streamLock ); 
    16791686    wmmeStreamData->framesPlayed += ((long)mmtime.u.sample) - wmmeStreamData->lastPosition; 
    16801687    wmmeStreamData->lastPosition = (long)mmtime.u.sample; 
    16811688    LeaveCriticalSection( &wmmeStreamData->streamLock ); 
     1689     
    16821690    return paNoError; 
    16831691} 
     
    16961704/*************************************************************************/ 
    16971705 
     1706 
     1707 
Note: See TracChangeset for help on using the changeset viewer.