kategoria: ANSI C
[#1] Problem z timerem w aplikacji MUI - zawiesza się podczas ASL i połączeń
Mam problem z implementacją timera w mojej aplikacji MUI. Aplikacja działa dobrze z prostym timera który działa jak aplikacja nie jest w tle, niestety z timer device zawiesza się gdy naciskam "Connect" lub "Add Files” czy jakikolwiek ASL file requester. Ctrl+C nadal działa, więc główna pętla chodzi, ale coś blokuje Wait().

Próbowałem:
  • Timer.device z UNIT_MICROHZ + sygnały
  • EClock z ReadEClock()
  • Proste liczniki w głównej pętli
  • Wyłączanie timera podczas ASL requestów


Pytania:

  • Czy ktoś miał podobny problem z timerem w aplikacjach MUI?
  • Jaki jest najlepszy sposób na timer w MUI który nie koliduje z ASL?
  • Czy powinienem używać prostego licznika w głównej pętli zamiast timer.device?
  • Może lepiej użyć MUIM_Application_Input z krótkimi timeoutami?


Czy macie jakieś sprawdzone rozwiązania? Będę wdzięczny za każdą pomoc!
Tu jest kod, kiedyś go podzielę. https://github.com/sandlbn/u64ctl/blob/main/src/main_player.c
[#2] Re: Problem z timerem w aplikacji MUI - zawiesza się podczas ASL i połączeń

@sand, post #1

Wydaje mi sie, ze problem z timer.device i asl moze wynikac z niewlasciwej obslugi sygnalow.
W tej chwili twoj program dziala tak:
W glownej petli odczytujesz signals, nastepnie wywolujesz funkcje obslugi przyciskow np AddFiles, w ktorej to obsludze zamykasz glowne okno (co moze powodowac realokacje bitow dla sygnalow), nastepnie czyscisz kolejke wiadomosci, efektywnie zerujac sygnaly z zamknietego glownego okna. Nastepnie otwierasz glowne okno ponownie, i juz w glownej petli wykonujesz Wait na starych sygnalach z poprzednio otwartego glownego okna, ktore dodatkowo wczesniej wyzerowales w funkcji. To nie ma prawa dzialac.
Usun zamykanie i otwieranie glownego okna i zerowanie kolejki wiadomosci w AddFiles.
W main dodaj wyzerowanie signals przed DoMethod (linia 3332).
Moze zadziala :)
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem