00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "Teddy/SysSupport/Timer.h"
00026 #include "Teddy/SysSupport/StdSDL.h"
00027
00028
00029 namespace Teddy {
00030 namespace SysSupport {
00031
00032
00034 Timer::Timer( Uint32 frequency ){
00035 this->frequency = frequency;
00036 this->running = false;
00037 this->sdl_thread = SDL_CreateThread( Timer::sdl_thread_function, this );
00038 }
00039
00040
00041 Uint32 Timer::getFrequency(){
00042 return frequency;
00043 }
00044
00045
00046 void Timer::setFrequency( Uint32 frequency ){
00047 this->frequency = frequency;
00048 }
00049
00050
00051 void Timer::start(){
00052 sync = SDL_GetTicks();
00053 running = true;
00054 }
00055
00056
00057 void Timer::stop(){
00058 running = false;
00059 }
00060
00061
00062 void Timer::run(){
00063
00064 for(;;){
00065 while( running==false ) SDL_Delay( 10 );
00066 sync += frequency;
00067 for(;;){
00068 Uint32 now = SDL_GetTicks(); if( now > sync ) break;
00069 Uint32 diff = sync-now; if( diff < 10 ) break;
00070 SDL_Delay( 10 );
00071 }
00072 tick();
00073 }
00074
00075 }
00076
00077
00079 void Timer::tick(){
00080 }
00081
00082
00084 int Timer::sdl_thread_function( void *data ){
00085 Timer *t = (Timer *)( data );
00086
00087 t->run();
00088 return 0;
00089 }
00090
00091
00092 };
00093 };
00094