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 :

SDL Thread et Gestion d'evenement


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut SDL Thread et Gestion d'evenement
    Bonjour a tous.

    J'ai un petit soucis.

    J'ai crée une classe IntputDevice qui permet de gérer les entrées (clavier souris)
    dans cette classe j'ai une fonction manage:

    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
     
            int InputDevice::manage(void *unused){
     
                InputDevice* maClasse = (InputDevice*)unused;
     
                SDL_Event event;
     
                while(maClasse->isRunning()){
     
                    SDL_PollEvent(&event);
     
                    switch (event.type) {
     
                        case SDL_KEYDOWN:
                            Log::logOn(WARNING,"touche presse");
                            break;
     
                        case SDL_QUIT:
                            Log::logOn(WARNING,"quit");
                            exit(0);
                            break;
     
                        default:
                            //Log::logOn(WARNING,"Evenement non gere");
                            break;
                    }
     
                }
     
                return 0;
            }
    Cette fonction est déclarée en statique pour permettre l'utilisation de thread.
    elle sert de teste a l'heure actuelle et je n'utilise que le clavier.

    Sur mon main je crée une fenêtre et je lance un thread sur cette fonction.
    Les evenements ne sont pas traité je n'arrive pas a détecter les pressions sur les touches et j'arrive non plus a fermer la fenêtre.

    Je me suis dis j'ai peut être merdé quelque part. Alors je ne crée pas de thread et j'exécute directement la fonction et la ça marche , a la fois le clavier et la fermeture de la fenêtre. J'en déduit donc que j'ai un probleme avec le thread.

    Alors je me relance je creer un thread et je le fait attendre avec la fonction SDL_WaitThread mais la toujours pareil les evenements ne sont pas reconnu ...

    quelqu'un a une idée ?

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Le problème vient de la SDL (doc de SDL_PumpEvent, tu vas comprendre pourquoi je cite cette fonction):
    SDL_PumpEvents gathers all the pending input information from devices and places it on the event queue. Without calls to SDL_PumpEvents no events would ever be placed on the queue. Often calls the need for SDL_PumpEvents is hidden from the user since SDL_PollEvent and SDL_WaitEvent implicitly call SDL_PumpEvents. However, if you are not polling or waiting for events (e.g. your filtering them), then you must call SDL_PumpEvents to force an event queue update.

    Note: You can only call this function in the thread that set the video mode.
    Donc, le thread d'entrée doit être le même que le thread vidéo.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut
    Ok merci cette réponse m'aide grandement. Je vais revoir mon plan d'utilisation des threads.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 205
    Par défaut


    je croyais qu on ne pouvais pas mettre la gestion d'evenements dans un threads...

    on m aurais menti ?

  5. #5
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    si, mais dans le thread où tu as appelé SDL_SetVideoMode

    ce qui est souvent celui de la fonction main().

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 205
    Par défaut
    Citation Envoyé par coyotte507 Voir le message
    Salut,

    si, mais dans le thread où tu as appelé SDL_SetVideoMode

    ce qui est souvent celui de la fonction main().
    OK....

    mais bon, je vois pas le rapport entre la video et la gestion des evenements

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

Discussions similaires

  1. gestion d evenement du joystick avec sdl
    Par jilou dans le forum SDL
    Réponses: 6
    Dernier message: 12/05/2009, 15h49
  2. Gestion des evenements avec la SDL
    Par gusgus dans le forum Ogre
    Réponses: 5
    Dernier message: 01/11/2006, 10h47
  3. Réponses: 11
    Dernier message: 15/02/2006, 14h45
  4. [C#] Gestion des evenements
    Par zebulix13 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/06/2004, 18h40
  5. [C#] Gestion d'evenements
    Par sygale dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/05/2004, 13h32

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