diff options
Diffstat (limited to 'src/osd/modules/lib/osdlib_os2.c')
| -rw-r--r-- | src/osd/modules/lib/osdlib_os2.c | 199 |
1 files changed, 99 insertions, 100 deletions
diff --git a/src/osd/modules/lib/osdlib_os2.c b/src/osd/modules/lib/osdlib_os2.c index d852ea5ce93..9e1ab8fd52d 100644 --- a/src/osd/modules/lib/osdlib_os2.c +++ b/src/osd/modules/lib/osdlib_os2.c @@ -31,7 +31,7 @@ const char *osd_getenv(const char *name) { - return getenv(name); + return getenv(name); } //============================================================ @@ -40,7 +40,7 @@ const char *osd_getenv(const char *name) int osd_setenv(const char *name, const char *value, int overwrite) { - return setenv(name, value, overwrite); + return setenv(name, value, overwrite); } //============================================================ @@ -49,7 +49,7 @@ int osd_setenv(const char *name, const char *value, int overwrite) void osd_process_kill(void) { - fprintf(stderr,"osd_process_kill missing in OS/2 build\n"); + fprintf(stderr,"osd_process_kill missing in OS/2 build\n"); } //============================================================ @@ -58,11 +58,11 @@ void osd_process_kill(void) int osd_get_num_processors(void) { - ULONG numprocs = 1; + ULONG numprocs = 1; - DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS, &numprocs, sizeof(numprocs)); + DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS, &numprocs, sizeof(numprocs)); - return numprocs; + return numprocs; } //============================================================ @@ -72,7 +72,7 @@ int osd_get_num_processors(void) void *osd_malloc(size_t size) { #ifndef MALLOC_DEBUG - return malloc(size); + return malloc(size); #else #error "MALLOC_DEBUG not yet supported" #endif @@ -86,7 +86,7 @@ void *osd_malloc(size_t size) void *osd_malloc_array(size_t size) { #ifndef MALLOC_DEBUG - return malloc(size); + return malloc(size); #else #error "MALLOC_DEBUG not yet supported" #endif @@ -100,7 +100,7 @@ void *osd_malloc_array(size_t size) void osd_free(void *ptr) { #ifndef MALLOC_DEBUG - free(ptr); + free(ptr); #else #error "MALLOC_DEBUG not yet supported" #endif @@ -116,10 +116,10 @@ void osd_free(void *ptr) void *osd_alloc_executable(size_t size) { - void *p; + void *p; - DosAllocMem( &p, size, fALLOC ); - return p; + DosAllocMem( &p, size, fALLOC ); + return p; } //============================================================ @@ -130,7 +130,7 @@ void *osd_alloc_executable(size_t size) void osd_free_executable(void *ptr, size_t size) { - DosFreeMem( ptr ); + DosFreeMem( ptr ); } //============================================================ @@ -139,7 +139,7 @@ void osd_free_executable(void *ptr, size_t size) void osd_break_into_debugger(const char *message) { - printf("Ignoring MAME exception: %s\n", message); + printf("Ignoring MAME exception: %s\n", message); } //============================================================ @@ -167,65 +167,65 @@ static osd_ticks_t ticks_per_second; static osd_ticks_t init_cycle_counter(void) { - osd_ticks_t start, end; - osd_ticks_t a, b; - - ULONG frequency; - PTIB ptib; - ULONG ulClass; - ULONG ulDelta; - - DosGetInfoBlocks( &ptib, NULL ); - ulClass = HIBYTE( ptib->tib_ptib2->tib2_ulpri ); - ulDelta = LOBYTE( ptib->tib_ptib2->tib2_ulpri ); - - if ( DosTmrQueryFreq( &frequency ) == 0 ) - { - // use performance counter if available as it is constant - cycle_counter = performance_cycle_counter; - ticks_counter = performance_cycle_counter; - - ticks_per_second = frequency; - - // return the current cycle count - return (*cycle_counter)(); - } - else - { - fprintf(stderr, "No Timer available!\n"); - exit(-1); - } - - // temporarily set our priority higher - DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, PRTYD_MAXIMUM, 0 ); - - // wait for an edge on the timeGetTime call - a = SDL_GetTicks(); - do - { - b = SDL_GetTicks(); - } while (a == b); - - // get the starting cycle count - start = (*cycle_counter)(); - - // now wait for 1/4 second total - do - { - a = SDL_GetTicks(); - } while (a - b < 250); - - // get the ending cycle count - end = (*cycle_counter)(); - - // compute ticks_per_sec - ticks_per_second = (end - start) * 4; - - // restore our priority - DosSetPriority( PRTYS_THREAD, ulClass, ulDelta, 0 ); - - // return the current cycle count - return (*cycle_counter)(); + osd_ticks_t start, end; + osd_ticks_t a, b; + + ULONG frequency; + PTIB ptib; + ULONG ulClass; + ULONG ulDelta; + + DosGetInfoBlocks( &ptib, NULL ); + ulClass = HIBYTE( ptib->tib_ptib2->tib2_ulpri ); + ulDelta = LOBYTE( ptib->tib_ptib2->tib2_ulpri ); + + if ( DosTmrQueryFreq( &frequency ) == 0 ) + { + // use performance counter if available as it is constant + cycle_counter = performance_cycle_counter; + ticks_counter = performance_cycle_counter; + + ticks_per_second = frequency; + + // return the current cycle count + return (*cycle_counter)(); + } + else + { + fprintf(stderr, "No Timer available!\n"); + exit(-1); + } + + // temporarily set our priority higher + DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, PRTYD_MAXIMUM, 0 ); + + // wait for an edge on the timeGetTime call + a = SDL_GetTicks(); + do + { + b = SDL_GetTicks(); + } while (a == b); + + // get the starting cycle count + start = (*cycle_counter)(); + + // now wait for 1/4 second total + do + { + a = SDL_GetTicks(); + } while (a - b < 250); + + // get the ending cycle count + end = (*cycle_counter)(); + + // compute ticks_per_sec + ticks_per_second = (end - start) * 4; + + // restore our priority + DosSetPriority( PRTYS_THREAD, ulClass, ulDelta, 0 ); + + // return the current cycle count + return (*cycle_counter)(); } //============================================================ @@ -234,10 +234,10 @@ static osd_ticks_t init_cycle_counter(void) static osd_ticks_t performance_cycle_counter(void) { - QWORD qwTime; + QWORD qwTime; - DosTmrQueryTime( &qwTime ); - return (osd_ticks_t)qwTime.ulLo; + DosTmrQueryTime( &qwTime ); + return (osd_ticks_t)qwTime.ulLo; } //============================================================ @@ -246,7 +246,7 @@ static osd_ticks_t performance_cycle_counter(void) osd_ticks_t osd_ticks(void) { - return (*cycle_counter)(); + return (*cycle_counter)(); } @@ -256,12 +256,12 @@ osd_ticks_t osd_ticks(void) osd_ticks_t osd_ticks_per_second(void) { - if (ticks_per_second == 0) - { - // if we haven't computed the value yet, there's no time like the present - init_cycle_counter(); - } - return ticks_per_second; + if (ticks_per_second == 0) + { + // if we haven't computed the value yet, there's no time like the present + init_cycle_counter(); + } + return ticks_per_second; } @@ -271,21 +271,20 @@ osd_ticks_t osd_ticks_per_second(void) void osd_sleep(osd_ticks_t duration) { - UINT32 msec; - - // make sure we've computed ticks_per_second - if (ticks_per_second == 0) - (void)osd_ticks(); - - // convert to milliseconds, rounding down - msec = (UINT32)(duration * 1000 / ticks_per_second); - - // only sleep if at least 2 full milliseconds - if (msec >= 2) - { - // take a couple of msecs off the top for good measure - msec -= 2; - usleep(msec*1000); - } + UINT32 msec; + + // make sure we've computed ticks_per_second + if (ticks_per_second == 0) + (void)osd_ticks(); + + // convert to milliseconds, rounding down + msec = (UINT32)(duration * 1000 / ticks_per_second); + + // only sleep if at least 2 full milliseconds + if (msec >= 2) + { + // take a couple of msecs off the top for good measure + msec -= 2; + usleep(msec*1000); + } } - |
