Czesc.
troche to zagmatwane z tymi sygnalami tak na 1szy (czy nawet n-ty raz).
Mam okno, ktore oczywiscie tworzy msgPort a ja z tego robie maske (1 << window->UserPort->mp_SigBit)
Mam tez sygnal dla swojego tasku uzywajac AllocSignal(-1) i z tego tez robie maske. Ten sygnal jest potrzebny do MHI bo na jefo podstawie "dopelnia" bufory plikiem.
Petla glowna programu (po otwarciu okna i gadgetow) to komenda:
signal.l = WAIT( windowmask | taskmask )
oraz warunki co wywolac dla jakiego sygnalu.
Pod jeden gadget mam przypisane odgrywanie piosenki a fragment ponizej to mniej wiecej kod wywolywany gdy program otrzyma sygnal od MHI (ten kod to tylko zarys ale chodzi o fakt co tam jest)
A teraz moze wytlumacze o co mi chodzi

CHODZI MI O ZAJETOSC PROCESORA
Gdy tylko wcisne PLAY to piosenka zaczyna grac a obciazenie procesora wskakuje na maxa takze ciezko nawet przesunac okno.
Jak rozwiazac takie "podwojne" (okno i MHI) sygnalizowanie by procesor nie byl prawie wcale obciazony tym badziewiem z MHI (przeciez gdy odgrywam piosenke programem bez GUI to procesor wlasciwie wogole jest nie uzywany a tu ta petla jest mielona nonstop)
PS.
Przyjmuje do wiadomosci ze moje pytanie jak i wytlumaczenie moze byc do pewnego stopnia niezrozumiale
while(!Done) {
/* Reload and queue all empty buffers */
for(i=0; i<NUMBUFS; i++) {
if(CurrentBuffer = MHIGetEmpty(MHIHandle)) {
if(CurrentLen = Read(InFile, CurrentBuffer, BUFSIZE)) {
MHIQueueBuffer(MHIHandle, CurrentBuffer, CurrentLen);
}
if(CurrentLen != BUFSIZE) Done=TRUE;
}
}
/* Restart if needed */
if(MHIGetStatus(MHIHandle) == MHIF_OUT_OF_DATA) MHIPlay(MHIHandle);
}
}
+ dodatkowe komendy "sprzatajace" po MHI
Ostatnia aktualizacja: 12.09.2019 19:36:26 przez peceha