| 12345678910111213141516171819202122232425262728293031 |
- #include "std.h"
- #include "gxtimer.h"
- #include "gxruntime.h"
- gxTimer::gxTimer( gxRuntime *rt,int hertz ):
- runtime(rt),ticks_get(0),ticks_put(0){
- event=CreateEvent( 0,false,false,0 );
- timerID=timeSetEvent( 1000/hertz,0,timerCallback,(DWORD)this,TIME_PERIODIC );
- }
- gxTimer::~gxTimer(){
- timeKillEvent( timerID );
- CloseHandle( event );
- }
- void CALLBACK gxTimer::timerCallback( UINT id,UINT msg,DWORD user,DWORD dw1,DWORD dw2 ){
- gxTimer *t=(gxTimer*)user;
- ++t->ticks_put;
- SetEvent( t->event );
- }
- int gxTimer::wait(){
- for(;;){
- if( WaitForSingleObject( event,1000 )==WAIT_OBJECT_0 ) break;
- }
- int n=ticks_put-ticks_get;
- ticks_get+=n;
- return n;
- }
|