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 :

Plantage SDL sous Ubuntu


Sujet :

SDL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Plantage SDL sous Ubuntu
    Bonjour,

    J'ai un problème étonnant. J'ai installé SDL sous Ubuntu Feisty et je code un petit tri collectif en 2D. J'ai remarqué un bug étrange que je ne m'explique pas :

    1.1) si je lance l'appli et que le pointeur de la souris n'est pas inclus dans la fenêtre créé, j'ai bien une fenêtre qui s'ouvre mais rien n'est affiché dedans

    1.2) ensuite si je met le pointeur de la souris sur la fenêtre de l'appli, cette dernière plante.

    2.1) si je lance l'appli et que le pointeur de la souris est inclus dans la fenêtre créé, tout se passe bien.

    Une idée de l'origine du problème ?

    En vous remerciant d'avance pour votre attention et de votre temps

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le programme fonctionne correctement sur d'autres distributions linux ou sur d'autre système ? Si tu ne peux pas tester, peux tu mettre le code stp ?
    Y'a t'il une fonction SDL sur la souris qui serait mal programmée ?

  3. #3
    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 : 44
    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 faudrait voir le code, surtout celui concernant la réception des événements.

    Jc

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Ok, j'ai pas vraiment de quoi le tester sur d'autres distributions. Voici le code du Main.cpp. C'est une bête extension du code de ton tutoriel, fearyourself, celui pour faire un morpion en 2D

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    #include "Main.h"
    #include "Environment.h"
     
    int main(int argc, char **argv)
    {	
        //Déclaration des variables
        SDL_Event event;
        SDL_Surface *screen;
        int done = 0;
        Environment* env = new Environment();
     
         //Initialisation de SDL
        if(SDL_Init(SDL_INIT_VIDEO)!=0) {
            std::cerr << "Problème pour initialiser SDL\n" << SDL_GetError() << std::endl;
            return 1;
        }
     
        //Mettre un titre à la fenêtre
        SDL_WM_SetCaption("Ant 2 - Fabgamer 2007 :)", NULL);
     
        //Ouverture d'une surface pour l'affichage de la fenêtre
        screen = SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_DOUBLEBUF | SDL_HWSURFACE);
        if(screen==NULL)
             done = 1;         
     
        //initialisation de l'environment
        env->init(screen);
     
        //Boucle générale
        while(!done)
        {    	
        	int SDL_PushEvent(SDL_Event *event);
     	    //Traiter les évènements
        	while(SDL_PollEvent(&event))
        	{
            	 switch(event.type)
    	         {
    	            //Si on veut quitter, done=1 suffira
    	            case SDL_QUIT:
    	               	done=1;
    	               	break;
    	            //Si on vient de relâcher une touche de clavier
    	            case SDL_KEYUP:
    	                //Et si c'est la lettre q
    	               	if(event.key.keysym.sym==SDLK_q)
    	                //On met done a 1 pour quitter
    			    	done=1;
    	                break;
    	            //Sinon on ne fait rien
    	            default:
    	                break;
    	         }	
    	    }
    	    env->takeStep();
    	    env->paint(screen);
    	    SDL_Delay(5);
    	    env->applyNextState();
        }
        SDL_Quit();
    }
    Ptite question au passage, je développe sous Eclipse avec CDT, et j'arrive pas à trouver un bon code formatter. J'ai installé astyle, mais cela n'a pas vraiment l'air de fonctionner. Toutes suggestions bienvenues

  5. #5
    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 : 44
    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
    Je ne comprends pas pourquoi tu mets le prototype de PushEvent.

    N'y a-t-il aucun endroit où tu récupères la position de la souris par exemple ?

    Jc

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Ok j'ai localisé le problème. J'avais mal initalisé un tableau de pointeurs, et je collais des pointeurs NULL un peu partout (et n'importe où) en mémoire. Depuis que j'ai résolu ce problème, je n'ai plus le comportement étrange décrit ci dessus (bug étonnant anyway).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par fearyourself
    Je ne comprends pas pourquoi tu mets le prototype de PushEvent.

    N'y a-t-il aucun endroit où tu récupères la position de la souris par exemple ?
    Pour le proto PushEvent, c'est effectivement un artefact dû à ma récupération du code du morpion. Il n'y avait aucun autre endroit ou je récupèrais la position de la souris. Le problème semblait bien dû à ma mauvaise gestion de la mémoire...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plantage Eclipse sous Ubuntu
    Par pcouas dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/03/2013, 18h03
  2. Installer SDL sous ubuntu
    Par ovni87 dans le forum SDL
    Réponses: 1
    Dernier message: 01/10/2011, 12h09
  3. probleme d'installation de la SDL sous ubuntu
    Par scheme dans le forum SDL
    Réponses: 6
    Dernier message: 07/06/2009, 19h19
  4. Plantage d'application SDL sous Vista
    Par Scheb dans le forum SDL
    Réponses: 6
    Dernier message: 21/09/2008, 13h45
  5. [VLC] plantage de VLC sous ubuntu
    Par dragonfly dans le forum Vidéo
    Réponses: 0
    Dernier message: 04/02/2008, 20h55

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