[#1] Pytanie o sygnaly exec-a
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 szeroki uśmiech
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
[#2] Re: Pytanie o sygnaly exec-a

@peceha, post #1

Mozna zignorowac ten temat.
Dzieki szeroki uśmiech
[#3] Re: Pytanie o sygnaly exec-a

@peceha, post #1

A teraz moze wytlumacze o co mi chodzi szeroki uśmiech
CHODZI MI O ZAJETOSC PROCESORA
Gdy tylko wcisne PLAY to piosenka zaczyna grac a obciazenie procesora wskakuje na maxa takze ciezko nawet przesunac okno.


Bo tak skonstruowales swoj kod, chyba ze jest cos jeszcze czego tutaj nie pokazales:
1. while(!Done) wykonuje sie dopoki flagi Done nie ustawisz
2. w petli pytasz o wolne bufory, jezeli ktorys bufor jest wolny zapelniasz go danymi
3. jezeli trzeba zrestartowac odtwarzanie to to robisz

jest tylko jeden problem. Flage Done ustawiasz tylko i wylacznie jesli:
1. Zostal znaleziony wolny bufor, i
2. Doszedles do konca pliku

Jezeli ktorys z powyzszych warunkow nie jest spelniony, flaga Done nie zostanie ustawiona. Innymi slowy twoja petla to typowy busy loop ktory obciaza CPU na 100%.
[#4] Re: Pytanie o sygnaly exec-a

@mschulz, post #3

Dzieki za podpowiedz.
Wlasnie sie zreflektowalem zaraz po zalozeniu tematu i wylapalem to WHILE - "przemeblowywalem" nieco program i bylem zbyt nieostrozny no i WHILE dostalo sie tam gdzie nie powinno.
Juz wszystko (raptem play i stop) dziala poprawnie
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