summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDusan Durech <dusan.d@centrum.sk>2008-11-01 22:11:44 +0100
committerDusan Durech <dusan.d@centrum.sk>2008-11-01 22:11:44 +0100
commit4c77447a924530f5bad212e39535adb373d5bcf4 (patch)
tree957f74901c05fa6d0d0371d7cac6d99a433a1d7f /src
parentb361c7bc3532f22caf053b779ba970de8c346893 (diff)
Hack for timer being too busy after loading arena
Diffstat (limited to 'src')
-rw-r--r--src/base/downServer.c2
-rw-r--r--src/client/interface.c35
-rw-r--r--src/client/interface.h1
-rw-r--r--src/client/screen.c12
-rw-r--r--src/screen/screen_world.c2
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)