Autor Wątek: SFML Audio - Błąd / crash  (Przeczytany 1990 razy)

Offline Risist

  • Użytkownik

# Luty 03, 2016, 18:12:27
Witam
Otóż właśnie zacząłem korzystać z modułu audio w sfml i w pewnym momencie zaczął się pojawiać dziwny błąd w terminalu, a następnie gra crashowała się. Jednocześnie pojawiają się problemy z uruchamianiem na pełnym ekranie (chociaż pewnie nie jest to powiązane). Nie mam pojęcia jak to zinterpretować, co powinienem z tym zrobić. W załączniku jest zdjęcie terminala. Korzystam z wersji bodajże 2.1 .

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline P@tyS

  • Użytkownik
    • Patys coding

# Luty 04, 2016, 18:17:40
Sprawdź czy na pewno korzystasz z prawidłowych dllek do openal. SFML chyba je dostarcza.
Ogólnie to może mieć związek z pamięcią, jeśli opakowałeś klasy sfml we własne albo używaż vectorów/map itp. to możliwe, że gdzieś np. destruktor się nie wywołuje, sam miałem taki problem.
Pokaż kod odpowiedzialny za to, to może ktoś coś więcej pomoże.

Offline Risist

  • Użytkownik

# Luty 04, 2016, 20:16:08
"kod odpowiedzialny za to" - tutaj może być problem, bo kodu jest dużo, a co ma z tym bezpośredni związek nie jestem pewien. Źródło można znaleźć na http://globalgamejam.org/2016/games/endless-loop . Pisane na game jamie, teraz próbuję przeprowadzić refaktoryzacje kodu.

Wszędzie gdzie korzystam z dźwięku działa to na zasadzie:
// w jakiejś klasie jako składowa
sf::Music music;

// podczas initializacji albo podczas aktualizacji obiektu

music.openFromFile("Audio\\wrota2.wav");

// podczas aktualizacji gry albo jako ostatnia część initializacji
music.play();
//



Korzystam z sf::Music bo patrząc na specyfikacje powinno być nieco bezpieczniejsze w przypadku braku pamięci. Nawet w przypadku krótkich dźwięków. Chociaż jak tak teraz patrzę błąd pojawia się gdy nowy dźwięk jest ładowany ( przypadek w trakcie gry ). Może to być problemem?

Tak opakowuję klasy sfmla na potęgę, dla bezpieczeństwa dodałem virtual do dekonstruktorów, w ogóle zapomniałem o tym, że może to być potrzebne. Jednak problem pojawia się nieco przed końcem gry, a po drodze niczego nie usuwam. Więc to chyba nic nie da.

Jednak crash nie występuje za każdym razem, wygląda to trochę jak zależność od dostępnej pamięci.


/// EDIT

Chociaż nie, w nowszej wersji dodałem Game::State, więc coś jest jednak usuwane ...
No cóż zobaczymy czy zadziała.
W każdym razie w poprzedniej wersji też błąd występował, a usuwania rzeczywiście nie było
« Ostatnia zmiana: Luty 04, 2016, 20:23:50 wysłana przez Risist »

Offline P@tyS

  • Użytkownik
    • Patys coding

# Luty 04, 2016, 21:03:55
Mówisz że podczas ładowania nowego dźwięku. Podobny problem był tutaj: https://github.com/SFML/SFML/issues/541 i https://github.com/SFML/SFML/pull/831 , który został rozwiązany w wersji 2.3 http://www.sfml-dev.org/changelog.php#2.3-audio. Dotyczył on OS X. Przejrzyj może tu znajdziesz podpowiedź.