@sand, post #1
@docent, post #2
// Główna pętla
while (running) {
signals = 0;
ULONG id = DoMethod(objApp->App, MUIM_Application_NewInput, &signals);
// ... obsługa eventów MUI ...
// Obsługa timera
ULONG waitSignals = signals | SIGBREAKF_CTRL_C;
if (TimerRunning && TimerSig) {
waitSignals |= TimerSig;
}
if (waitSignals & ~SIGBREAKF_CTRL_C) {
ULONG receivedSignals = Wait(waitSignals);
if (receivedSignals & TimerSig) {
struct Message *msg = GetMsg(TimerPort);
if (msg) {
TimerRunning = FALSE;
objApp->current_time++;
UpdateDisplay();
StartPeriodicTimer(); // Tu chyba problem?
}
}
}
}@sand, post #3
static BOOL CheckTimerSignal(ULONG sigs)
{
struct Message *msg;
BOOL timer_fired = FALSE;
if (TimerPort || TimerRunning || (sigs & TimerSig))
{
while ((msg = GetMsg(TimerPort)))
{
timer_fired = TRUE;
TimerRunning = FALSE;
if (objApp && objApp->state == PLAYER_PLAYING)
{
objApp->current_time++;
APP_UpdateCurrentSongDisplay();
if (objApp->current_time >= objApp->total_time)
{
APP_Next();
}
StartPeriodicTimer();
}
}
}
return timer_fired;
}