src/timer/dummy/SDL_systimer.c
author Sam Lantinga
Fri, 14 Apr 2006 04:46:47 +0000
changeset 1635 92947e3a18db
parent 1484 b2b476a4a73c
child 1662 782fd950bd46
child 1895 c121d94672cb
child 4159 a1b03ba2fcd0
permissions -rw-r--r--
Make sure code is only compiled if the appropriate subsystem is enabled
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2006 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 #include "SDL_config.h"
    23 
    24 #if defined(SDL_TIMER_DUMMY) || defined(SDL_TIMERS_DISABLED)
    25 
    26 #include "SDL_timer.h"
    27 #include "../SDL_timer_c.h"
    28 
    29 void SDL_StartTicks(void)
    30 {
    31 }
    32 
    33 Uint32 SDL_GetTicks (void)
    34 {
    35 	SDL_Unsupported();
    36 	return 0;
    37 }
    38 
    39 void SDL_Delay (Uint32 ms)
    40 {
    41 	SDL_Unsupported();
    42 }
    43 
    44 #include "SDL_thread.h"
    45 
    46 /* Data to handle a single periodic alarm */
    47 static int timer_alive = 0;
    48 static SDL_Thread *timer = NULL;
    49 
    50 static int RunTimer(void *unused)
    51 {
    52 	while ( timer_alive ) {
    53 		if ( SDL_timer_running ) {
    54 			SDL_ThreadedTimerCheck();
    55 		}
    56 		SDL_Delay(1);
    57 	}
    58 	return(0);
    59 }
    60 
    61 /* This is only called if the event thread is not running */
    62 int SDL_SYS_TimerInit(void)
    63 {
    64 	timer_alive = 1;
    65 	timer = SDL_CreateThread(RunTimer, NULL);
    66 	if ( timer == NULL )
    67 		return(-1);
    68 	return(SDL_SetTimerThreaded(1));
    69 }
    70 
    71 void SDL_SYS_TimerQuit(void)
    72 {
    73 	timer_alive = 0;
    74 	if ( timer ) {
    75 		SDL_WaitThread(timer, NULL);
    76 		timer = NULL;
    77 	}
    78 }
    79 
    80 int SDL_SYS_StartTimer(void)
    81 {
    82 	SDL_SetError("Internal logic error: threaded timer in use");
    83 	return(-1);
    84 }
    85 
    86 void SDL_SYS_StopTimer(void)
    87 {
    88 	return;
    89 }
    90 
    91 #endif /* SDL_TIMER_DUMMY || SDL_TIMERS_DISABLED */