reduce calls to trivia_tick

This commit is contained in:
joonicks 2025-10-23 15:30:10 +02:00
parent 0b713ea5e4
commit f7c9703d2d
4 changed files with 30 additions and 32 deletions

View File

@ -254,6 +254,7 @@ BEG int triv_qdelay MDEF(30); /* proc var */
BEG char *triv_qfile MDEF(NULL); /* proc var */
BEG char triv_qchar MDEF('*'); /* proc var */
BEG TrivScore *scorelist MDEF(NULL);
BEG time_t triv_next_time MDEF(0);
#endif /* TRIVIA */

View File

@ -407,11 +407,11 @@ LS void do_sigusr1(void) __page(CMD1_SEG);
LS void sig_usr1(int) __page(CMD1_SEG);
LS void sig_usr2(int) __page(DBUG_SEG); /* DEBUG */
LS void sig_suicide() __attr(RARE_SEG, __noreturn__); /* rare */
LS void do_sigint(void) __page(RARE_SEG); /* rare */
LS void do_sigint(void) __attr(RARE_SEG, __noreturn__); /* rare */
LS void sig_int(int) __page(RARE_SEG); /* rare */
LS void sig_ill(int) __page(RARE_SEG);
LS void sig_abrt(int) __page(RARE_SEG);
LS void sig_bus(int) __page(CMD1_SEG);
LS void sig_bus(int) __attr(RARE_SEG, __noreturn__);
#if defined(__linux__) && defined(__x86_64__) && defined(DEBUG) && !defined(__STRICT_ANSI__)
LS void sig_segv(int, siginfo_t *, void *) __attr(RARE_SEG, __noreturn__);
#else

View File

@ -402,20 +402,20 @@ void sig_int(int signum)
* SIGILL, Illegal instruction
*/
#ifdef DEBUG
void sig_ill(int crap)
{
debug("(sigill)\n");
}
#endif /* DEBUG */
/*
* SIGABRT, abort(3)
*/
#ifdef DEBUG
void sig_abrt(int crap)
{
debug("(sigabrt)\n");
}
#endif /* DEBUG */
/*
@ -881,7 +881,8 @@ restart_die:
#endif
#ifdef TRIVIA
trivia_tick();
if (triv_next_time && (now >= triv_next_time))
trivia_tick();
#endif /* TRIVIA */
/*

View File

@ -50,7 +50,6 @@ LS TrivScore *lastwinner;
LS Chan *triv_chan = NULL;
LS Strp *triv_answers = NULL;
LS time_t triv_ask_time;
LS time_t triv_next_time = 0;
LS time_t triv_weektop10;
LS int triv_mode;
LS int triv_score;
@ -575,37 +574,34 @@ void trivia_tick(void)
Chan *chan;
Mech *bot;
if (triv_next_time && (now >= triv_next_time))
for(bot=botlist;bot;bot=bot->next)
{
for(bot=botlist;bot;bot=bot->next)
for(chan=bot->chanlist;chan;chan=chan->next)
{
for(chan=bot->chanlist;chan;chan=chan->next)
if (triv_chan == chan)
{
if (triv_chan == chan)
current = bot;
triv_next_time = now + TRIV_HINT_DELAY;
switch(triv_mode)
{
current = bot;
triv_next_time = now + TRIV_HINT_DELAY;
switch(triv_mode)
{
case TRIV_WAIT_QUESTION:
trivia_question();
break;
case TRIV_HINT_TWO:
hint_two();
break;
case TRIV_HINT_THREE:
hint_three();
break;
case TRIV_NO_ANSWER:
trivia_no_answer();
return; /* dont increment with triv_mode */
}
triv_mode++;
#ifdef DEBUG
current = NULL;
#endif /* DEBUG */
return;
case TRIV_WAIT_QUESTION:
trivia_question();
break;
case TRIV_HINT_TWO:
hint_two();
break;
case TRIV_HINT_THREE:
hint_three();
break;
case TRIV_NO_ANSWER:
trivia_no_answer();
return; /* dont increment with triv_mode */
}
triv_mode++;
#ifdef DEBUG
current = NULL;
#endif /* DEBUG */
return;
}
}
}