Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2025 mgr Jerzy Wałaszek
|
SDL_LockAudioDevice
SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby zablokować funkcję audio wywoływaną zwrotnie na określonym urządzeniu.
void SDL_LockAudioDevice(SDL_AudioDeviceID dev) |
dev | identyfikator urządzenia do zablokowania. |
void MyAudioCallback(void *userdata, Uint8* stream, int len) { printf("The audio callback is running!\n"); SDL_memset(stream, 0, len); // tylko cisza. printf("The audio callback is done!\n"); } // nie blokuj przez 2 sekundy. extern SDL_AudioDeviceID devid; SDL_Delay(2000); // funkcja callback działa przez 2 sekundy. SDL_LockAudioDevice(devid); printf("The audio callback can't be running right now!\n"); SDL_Delay(2000); // funkcja callback nie działa przez 2 sekundy. printf("Ok, unlocking!\n"); SDL_UnlockAudioDevice(devid); SDL_Delay(2000); // funkcja callback działa przez 2 sekundy. |
Wywoływanie tej funkcji z wnętrza funkcji dźwiękowej callback nie jest konieczne. SDL tworzy tę blokadę przed wywołaniem twojej funkcji, a następnie usuwa ją, gdy funkcja wykona powrót.
Nie powinieneś utrzymywać blokady dłużej niż jest to absolutnie konieczne. Jeśli przetrzymasz ją zbyt długo w odtwarzaniu dźwięku pojawią się przerwy. W przypadku idealnym twoja aplikacja blokuje urządzenie, ustawia kilka zmiennych i odblokowuje ponownie. Nie wykonuj czasochłonnych zadań podczas blokady urządzenia.
Urządzenie dźwiękowe można bezpiecznie blokować wielokrotnie, o ile tyle samo razy zostanie ono odblokowane. Funkcja callback nie zostanie uruchomiona aż urządzenie będzie w ten sposób całkowicie odblokowane. Jeśli twojej aplikacji nie uda się właściwie odblokować urządzenia, to twoja funkcja callback nigdy nie uruchomi się, możesz wtedy słyszeć powtarzające się trzaski dźwiękowe, a SDL_CloseAudioDevice() spowoduje prawdopodobnie zawieszenie się aplikacji.
Wewnętrznie blokada audio jest mutexem; jeśli zablokujesz jednocześnie z dwóch wątków, to zablokujesz nie tylko funkcję dźwiękową callback, lecz również zablokujesz ten drugi wątek.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2025 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.