From 4c77447a924530f5bad212e39535adb373d5bcf4 Mon Sep 17 00:00:00 2001 From: Dusan Durech Date: Sat, 1 Nov 2008 22:11:44 +0100 Subject: Hack for timer being too busy after loading arena --- src/base/downServer.c | 2 +- src/client/interface.c | 35 +++++++++++++++++++++++++++++++++++ src/client/interface.h | 1 + src/client/screen.c | 12 ++++++++---- src/screen/screen_world.c | 2 ++ 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/base/downServer.c b/src/base/downServer.c index f0625a9..d4f952c 100644 --- a/src/base/downServer.c +++ b/src/base/downServer.c @@ -187,7 +187,7 @@ static void eventReadClient(client_ds_t * client) ret = readTcpSocket(client->sock, buffer, STR_PROTO_SIZE - 1); //printf("readTcpSocket = %d\n", ret); - if (ret <= 0) + if( ret <= 0 ) { client->status_connect = NET_STATUS_ZOMBIE; return; diff --git a/src/client/interface.c b/src/client/interface.c index d2f99fb..75efca9 100644 --- a/src/client/interface.c +++ b/src/client/interface.c @@ -23,6 +23,7 @@ static bool_t isInterfaceInit = FALSE; // flag, kterym se ridi zarazovani klaves do bufferu bool_t keyboardBufferEnabled = FALSE; +bool_t isSlowHack; bool_t isInterfaceInicialized() { @@ -116,6 +117,7 @@ int initSDL() srand((unsigned) time(NULL)); isInterfaceInit = TRUE; + isSlowHack = FALSE; return 0; } @@ -192,6 +194,33 @@ static void action_esc() } */ +void activeSlowHack() +{ + isSlowHack = TRUE; +} + +static void slowHackRoutine() +{ + static time_t lastTime = 0; + + if( lastTime == 0 ) + { + lastTime = getMyTime(); + return; + } + + if( getMyTime() - lastTime >= 50 ) + { + lastTime = 0; + isSlowHack = FALSE; + return; + } + + //printf("SLOW HACK : %d\n", (getMyTime() - lastTime)); + + lastTime = getMyTime(); +} + int eventAction() { SDL_Event event; @@ -223,6 +252,12 @@ int eventAction() case SDL_USEREVENT: switch (event.user.code) { case USR_EVT_TIMER: + if( isSlowHack ) + { + slowHackRoutine(); + break; + } + drawScreen(); eventScreen(); eventHotKey(); diff --git a/src/client/interface.h b/src/client/interface.h index b5df62a..daf1275 100644 --- a/src/client/interface.h +++ b/src/client/interface.h @@ -33,6 +33,7 @@ extern bool_t isInterfaceInicialized(); extern void enableKeyboardBuffer(); extern void disableKeyboardBuffer(); extern int initSDL(); +extern void activeSlowHack(); extern SDL_Surface *getSDL_Screen(); extern void getMousePosition(int *x, int *y); extern int isMouseClicked(); diff --git a/src/client/screen.c b/src/client/screen.c index b5264bd..9f21f6d 100644 --- a/src/client/screen.c +++ b/src/client/screen.c @@ -164,13 +164,17 @@ void drawScreen() void eventScreen() { assert(currentScreen != NULL); +#if 0 + static my_time_t last = 0; -#ifdef DEBUG_TIME_EVENT - my_time_t prev; + if( last == 0 ) + { + last = getMyTime(); + } - prev = getMyTimeMicro(); + printf("%d\n", getMyTime()-last); + last = getMyTime(); #endif - currentScreen->fce_event(); #ifdef DEBUG_TIME_EVENT diff --git a/src/screen/screen_world.c b/src/screen/screen_world.c index a2d0baf..eb91554 100644 --- a/src/screen/screen_world.c +++ b/src/screen/screen_world.c @@ -497,6 +497,8 @@ void startWorld() setGameType(); initChat(); prepareArena(); + + activeSlowHack(); // !!! } static void action_analyze(space_t * space, tux_t * tux, void *p) -- cgit v1.2.3