Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] AL_INVALID_VALUE

Ostatnio zmodyfikowano 2013-05-19 23:40
Autor Wiadomość
Natoito
Temat założony przez niniejszego użytkownika
[SFML] AL_INVALID_VALUE
» 2013-05-19 00:06:01
jak w temacie, po odpaleniu programu na konsoli pokazuje mi się ten błąd: AL_INVALID_VALUE i nie wiem czego to przyczyna
dodam że to nie wina błędnego kodu bo wszystko działało a dodałem tylko kilka linijek które nie zawierają w sobie funkcji z  SFML/Audio. ktoś spotkał się z tym problemem?
P-83267
DejaVu
» 2013-05-19 13:02:01
http://en.sfml-dev.org/forums/index.php?topic=10622.0
Ok, it really looks like a bug. Can you please open a new issue on the tracker so that I don't forget it?

Powtórzenie błędu:
C/C++
#include <SFML/Audio.hpp>
#include <SFML/System.hpp>

int main( int, char ** )
{
    sf::SoundBuffer buffer;
    buffer.loadFromFile( "sound1.ogg" );
   
    {
        sf::Sound sound( buffer );
        sound.play();
       
        sf::sleep( sf::seconds( 5 ) );
    }
   
    buffer.loadFromFile( "sound2.ogg" );
    {
        sf::Sound sound( buffer );
        sound.play();
       
        sf::sleep( sf::seconds( 5 ) );
    }
   
    return 0;
}
P-83277
Natoito
Temat założony przez niniejszego użytkownika
» 2013-05-19 22:39:09
też w google to znalazłem lecz chodzi o to że po pierwsze każdy buffor usuwam z pamieci poleceniem delete po załadowaniu go do zmiennej typu sf::Sound i po drugie dodatkowo każdy sprawdziłem używając opcji szukania czy sie nie powtarza no i się nie powtarza

mam dwie pętle
while( Window.IsOpened() )
, kiedy pierwsza pętla się odpali po chwili uruchamia się funkcja(która jako jeden z argumentuów zawiera wskaźnik do Window) w której jest ta druga pętla i dopiero gdy program dojdzie do drugiej pętli pojawia się na konsoli AL_INVALID_VALUE. chodziło to cały czas sprawnie i nagle przestało a pełny błąd z konsoli brzmi: "An internal OpenAL call failed in sound.cpp(169) : AL_INVALID_VALUE, a numeric argument is out of range". nie mam pomysłów jak ten błąd naprawić :(
P-83370
DejaVu
» 2013-05-19 23:07:25
Czemu chcesz robić cokolwiek po zamknięciu okna aplikacji...? Być może SFML sprząta wszystkie zasoby z chwilą zamknięcia okna aplikacji i stąd wynika Twój problem (trzeba by było sprawdzić w źródłach SFML co się dokładnie dzieje, że zachodzi błąd z Twojego tematu).
P-83373
Natoito
Temat założony przez niniejszego użytkownika
» 2013-05-19 23:40:03
ta druga pętla jest w funkcji, która jest w pierwszej pętli, a po skończeniu funkcji program wraca do pierwszej pętli ale już nie uruchomi się ta funkcja ponieważ zablokowałem ją(tą finkcję) if-em. nie chce wstawiać kodu bo jest go zbyt dużo( ponad 3000 linijek ) ale napisze to w skrócie
C/C++
F( RenderWindow * Window )
{
    while( Window->IsOpened() ) // gdy dojdzie do tego momentu na konsoli pojawia się ten błąd i okno automatycznie się zamyka więc nawet nie wchodzi w pętlę
    {
        //po spełnieniu warunku okno nie jest zamykane a tylko program wychodzi z funkcji
    }
}

int main()
{
    //ładowanie dźwięków przed pętlą
    //zmienne dźwiękowe
    SoundBuffer * Buffor1 = new SoundBuffer();
    SoundBuffer * Buffor2 = new SoundBuffer();
    SoundBuffer * Buffor3 = new SoundBuffer();
    Sound Sound1, Sound2, Sound3;
   
    Music Music1, Music2;
   
    {
        if( !Buffor1->LoadFromFile( "sounds/1.wav" ) )
             return EXIT_FAILURE;
       
        Sound1.SetBuffer( * Buffor1 );
        Sound1.SetVolume( DefaultVolume );
        delete Buffor1;
    }
   
    {
        if( !Buffor2->LoadFromFile( "sounds/2.wav" ) )
             return EXIT_FAILURE;
       
        Sound2.SetBuffer( * Buffor2 );
        delete Buffor2;
    }
   
}
if( !Buffor3->LoadFromFile( "sounds/3.wav" ) )
     return EXIT_FAILURE;

Sound3.SetBuffer( * Buffor3 );
Sound3.SetVolume( DefaultVolume );
delete Buffor3;
}

{
if( !Music1.OpenFromFile( "sounds/4.wav" ) )
     return EXIT_FAILURE;

Music1.SetVolume( DefaultVolume );
}

{
if( !Music2.OpenFromFile( "sounds/5.wav" ) )
     return EXIT_FAILURE;

Music2.SetVolume( DefaultVolume );
}
bool abc = true;
//coś robi dalej i pętla
while( Window.IsOpened()
{
if( abc ) F( & Window );
// dalsza część programu
}
}

tak to wygląda

EDIT:
jeszcze lepiej... rozdzieliłem przy deklaracji zmienne Sound1, Sound2, Sound3 każdą zadeklarowałem osobno w innej linijce jedna pod drugą a dodatkowo dałem w komentarz zmienne Music1, Music2 i okno nadal się wyłącza lecz tym razem na konsoli nic nie ma -_-

EDIT 2:
problem rozwiązany, przed wejściem do drugiej pętli program sczytywał dane z plików, które jeśli są błędne ma zamykać okno no i własnie po sprawdzeniu ręcznie tych plików były błędne
P-83375
« 1 »
  Strona 1 z 1