@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; }