IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Problème quand je relance SDL_mixer


Sujet :

SDL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Problème quand je relance SDL_mixer
    Bonjour.
    Le code ci dessous plante lors du 2e Mix_OpenAudio. Avez vous une idée pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    int main( int argc, char* args[] ) {
     
    	int audio_rate=22050;
    	Uint16 audio_format=AUDIO_S8;//S16SYS
    	int audio_channels=2;
    	int audio_buffers=512;//4096
     
    	if (SDL_Init(SDL_INIT_EVERYTHING)==0) {
    		if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)==0) {
    			Mix_CloseAudio();
    		}
    		SDL_Quit();
    	}
     
    	if (SDL_Init(SDL_INIT_EVERYTHING)==0) {
    		if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)==0) {
    			Mix_CloseAudio();
    		}
    		SDL_Quit();
    	}
     
    return(0);
    }
    edit qui n'a rien à voir: le code se situant dans la FAQ à la page http://jeux.developpez.com/faq/sdl/?..._MIXER_musique ne contient pas de "SDL_Quit();" à la fin. C'est normal, où c'est juste un oubli ?

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Jyaif
    Bonjour.
    Le code ci dessous plante lors du 2e Mix_OpenAudio. Avez vous une idée pourquoi ?
    Ce code fonctionne sur mon ordinateur. Quel est le message d'erreur ?

    edit qui n'a rien à voir: le code se situant dans la FAQ à la page http://jeux.developpez.com/faq/sdl/?..._MIXER_musique ne contient pas de "SDL_Quit();" à la fin. C'est normal, où c'est juste un oubli ?
    Un oubli, cela sera corrigé sous peu.

    Jc

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    le programme plante à l'exécution sans afficher de boîte de dialogue. Je sais qu'il plante parceque si je met un printf à la fin du programme et avant le return 0, le printf n'est pas exécuté.

    par exemple, le code ci dessous n'affiche que "ok1,".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include "SDL/SDL.h"
    #include "SDL_mixer.h"
     
    int main( int argc, char* args[] ) {
     
    	int audio_rate=22050;
    	Uint16 audio_format=AUDIO_S8;//S16SYS
    	int audio_channels=2;
    	int audio_buffers=512;//4096
     
    	if (SDL_Init(SDL_INIT_EVERYTHING)==0) {
    		if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)==0) {
    			Mix_CloseAudio();
    			printf("ok1,");
    		}
    		else
    		printf("pas ok1,");
    		SDL_Quit();
    	}
    	else
    	printf("pas du tout ok1,");
     
    	if (SDL_Init(SDL_INIT_EVERYTHING)==0) {
    		if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)==0) {
    			Mix_CloseAudio();
    			printf("ok2,");
    		}
    		else
    		printf("pas ok2,");
    		SDL_Quit();
    	}
    	else
    	printf("pas du tout ok2,");
     
    	printf("c'est fini");
    	return 0;
    }
    Pas d'idées sur l'origine du problème ? (c'est peut être un truc super bête)

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Il vaudrait mieux :

    - Utiliser un debugger pour déterminer le problème
    - Utiliser fflush
    - Mettre un '\n' à la fin du printf...

    Refait le test et dis moi ce que cela affiche,
    Jc

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    J'ai utilisé le debuggeur: il dit que ça segfault sur le 2e Mix_OpenAudio. Je pense que c'est un bug de la lib.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne suis pas certain que SDL apprécie d'être initialisé 2 fois sans avoir été fermé entre les 2.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ah non j'ai rien dit...

    Si je peux me permettre, je trouve ton indentation complétement illisible

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Jyaif
    J'ai utilisé le debuggeur: il dit que ça segfault sur le 2e Mix_OpenAudio. Je pense que c'est un bug de la lib.
    - Es-tu sûr d'utiliser la dernière version de la bibliothéque ?
    - J'ai regardé le code de la version 1.2.7, il n'y a pas de raison flagrante que cela pose problème et, sur mon ordinateur, cela fonctionne.

    Je te conseillerais de regarder quelles sont les versions que tu utilises. Peut-être même inclure les sources du mixer dans ton code et de débugger à l'intérieur du code de la bibliothéque pour savoir ce qui lui pose problème.

    Jc

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    J'utilise bien la version 1.2.7. Quand au code... j'ai regardé et j'ai vite abandonné C'est un beaucoup trop long pour moi. J'ai contourné le problème... en ne fermant le mixer qu'a la fin du programme.

  10. #10
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Jyaif
    J'utilise bien la version 1.2.7. Quand au code... j'ai regardé et j'ai vite abandonné C'est un beaucoup trop long pour moi. J'ai contourné le problème... en ne fermant le mixer qu'a la fin du programme.
    Ok donc la même version que la mienne.

    Alors bizarre mais de toute facon, il est plus ou moins plus classique d'ouvrir une seule fois le mixer et le fermer une seule fois donc...

    Bien que pas une solution, c'est une chose importante à remarquer, donc à toi pour l'avoir signalé mais je ne vois pas de solution dans l'immédiat.

    Jc

Discussions similaires

  1. [c#]Destructeur, problème quand je quitte de programme
    Par skysee dans le forum Windows Forms
    Réponses: 28
    Dernier message: 01/06/2008, 23h10
  2. Problème quand le champs de type Blob est null
    Par med_anis_dk dans le forum JDBC
    Réponses: 6
    Dernier message: 12/05/2007, 01h34
  3. [SimpleXML] problème quand <rss version="2.0">
    Par yveslens dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/08/2006, 13h17
  4. Réponses: 3
    Dernier message: 29/04/2006, 11h58
  5. Problème lors du Relancement de la base
    Par beurnoir dans le forum Access
    Réponses: 2
    Dernier message: 26/10/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo