paragui-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paragui-cvs] CVS: paragui/src/core pgtimerobject.cpp,1.1.2.1,1.1.2.2


From: Alexander Pipelka <address@hidden>
Subject: [paragui-cvs] CVS: paragui/src/core pgtimerobject.cpp,1.1.2.1,1.1.2.2
Date: Wed, 29 May 2002 05:25:22 -0400

Update of /cvsroot/paragui/paragui/src/core
In directory subversions:/tmp/cvs-serv4668/src/core

Modified Files:
      Tag: devel-1-0
        pgtimerobject.cpp 
Log Message:
added support for multiple timers

Index: pgtimerobject.cpp
===================================================================
RCS file: /cvsroot/paragui/paragui/src/core/Attic/pgtimerobject.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -r1.1.2.1 -r1.1.2.2
*** pgtimerobject.cpp   28 May 2002 20:18:09 -0000      1.1.2.1
--- pgtimerobject.cpp   29 May 2002 09:25:18 -0000      1.1.2.2
***************
*** 1,36 ****
  #include "pgtimerobject.h"
  
! Uint32 PG_TimerObject::my_objectcount = 0;
  
  PG_TimerObject::PG_TimerObject() {
!       if(my_objectcount == 0) {
!               SDL_Init(SDL_INIT_TIMER);
        }
        
!       my_timerid = 0;
!       my_objectcount++;
  }
  
  PG_TimerObject::~PG_TimerObject() {
!       my_objectcount--;
  }
        
! SDL_TimerID PG_TimerObject::AddTimer(Uint32 interval) {
!       my_timerid = SDL_AddTimer(interval, &PG_TimerObject::callbackTimer, 
this);
!       return my_timerid;
  }
        
! bool PG_TimerObject::RemoveTimer() {
!       SDL_TimerID id = my_timerid;
!       my_timerid = 0;
!       return SDL_RemoveTimer(id);
  }
        
! Uint32 PG_TimerObject::eventTimer(Uint32 interval) {
        return interval;
  }
  
  Uint32 PG_TimerObject::callbackTimer(Uint32 interval, void* data) {
!       PG_TimerObject* caller = static_cast<PG_TimerObject*>(data);
!       return caller->eventTimer(interval);
  }
--- 1,60 ----
  #include "pgtimerobject.h"
  
! Uint32 PG_TimerObject::objectcount = 0;
! PG_TimerID PG_TimerObject::globalTimerID = 0;
! std::map<PG_TimerID, PG_TimerObject*> PG_TimerObject::timermap;
  
  PG_TimerObject::PG_TimerObject() {
!       if(objectcount == 0) {
!               SDL_InitSubSystem(SDL_INIT_TIMER);
        }
        
!       objectcount++;
  }
  
  PG_TimerObject::~PG_TimerObject() {
!       
!       // remove all timers of this object
!       std::map<PG_TimerID, SDL_TimerID>::iterator i;
!       
!       for(i = my_timermap.begin(); i != my_timermap.end(); i++) {
!               RemoveTimer((*i).first);
!       }
!       
!       objectcount--;
! 
!       if(objectcount == 0) {
!               SDL_QuitSubSystem(SDL_INIT_TIMER);
!       }
  }
        
! PG_TimerID PG_TimerObject::AddTimer(Uint32 interval) {
!       SDL_TimerID id = SDL_AddTimer(interval, &PG_TimerObject::callbackTimer, 
(void*)(globalTimerID+1));
! 
!       if(id == 0) {
!               return 0;
!       }
!       
!       PG_TimerID pgid = ++globalTimerID;
!       my_timermap[pgid] = id;
!       timermap[pgid] = this;
!       
!       return pgid;
  }
        
! bool PG_TimerObject::RemoveTimer(PG_TimerID id) {
!       if(my_timermap[id] == 0) {
!               return false;
!       }
!       
!       return SDL_RemoveTimer(my_timermap[id]);
  }
        
! Uint32 PG_TimerObject::eventTimer(PG_TimerID id, Uint32 interval) {
        return interval;
  }
  
  Uint32 PG_TimerObject::callbackTimer(Uint32 interval, void* data) {
!       PG_TimerID id = reinterpret_cast<PG_TimerID>(data);
!       return timermap[id]->eventTimer(id, interval);
  }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]