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

DirectX Discussion :

WaitForCompletion sans fin


Sujet :

DirectX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 27
    Points : 70
    Points
    70
    Par défaut WaitForCompletion sans fin
    Salut à tous,

    J'utilise dans un programme la commande WaitForCompletion de MediaEventEx
    (pour connaitre la fin d'un GraphBuilder) et je n'ai aucun problème sur différents
    ordinateurs.
    Seulement voilà, j'ai trouvé un autre «ordinateur» (un HP-Compaq pour tout dire)
    avec lequel la commande WaitForCompletion ne se termine jamais (je ne recois
    jamais de S_OK et encore moins d'évenement EC_COMPLETE). Du coup, mon
    programme ne sait jamais quand le processus est terminé.

    L'un d'entre vous aurait-il une idée sur la cause possible de cette absence de
    retour d'information :

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 27
    Points : 70
    Points
    70
    Par défaut
    Salut à tous,

    La suite de mes mésaventures:

    J'ai remplacé le codec utilisé par GraphBuilder (en l'occurrence Elecard MPEG2 Demultiplexer
    = mpeg2dmx.ax) en faisant l'échange des versions entre deux ordinateurs. Ca ne donne rien
    (toujours pas de S_OK ni de EC_COMPLETE).

    D'autres idées ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Il me semble que WaitForCompletion est a évité.



    pEvent->WaitForCompletion(INFINITE, &evCode);

    This method blocks until the file is done playing, or until the specified time-out interval elapses. The value INFINITE means the application blocks indefinitely until the file is done playing. For a more realistic example of event handling, see Responding to Events.
    Tu peux tjs gérer les events différements et peut-être en profiter pour les enregistrer ds un log, ce qui te permettrait de voir pourquoi cet hardware particulier pose problème avec ton code.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 27
    Points : 70
    Points
    70
    Par défaut
    Merci de ta réponse SergeJim,

    Tu as presque raison, WaitForCompletion est à éviter mais uniquement sous la forme que tu cites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pEvent->WaitForCompletion(INFINITE, &evCode)
    c'est-à-dire avec le paramètre INFINITE car si aucun des événements attendus ne se produit jamais
    tout programme boucle alors indéfiniment.
    Ce qui n'est pas le cas dans mon programme car j'utilise un TimeOut fini. Je n'ai donc pas ce risque.
    Comme tu le suggères, j'ai aussi essayé d'autres formes de boucle du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    hr = pEvent->GetEventHandle((OAEVENT*)&hEvent);
     
    while(!bDone) 
    {
        if (WAIT_OBJECT_0 == WaitForSingleObject(hEvent, 100))
        { 
        	while (hr = pEvent->GetEvent(&evCode, &param1, &param2, 0), SUCCEEDED(hr)) 
            {
                printf("Event code: %#04x\n    Params: %d, %d\n", evCode, param1, param2);
                hr = pEvent->FreeEventParams(evCode, param1, param2);
                bDone = (EC_COMPLETE == evCode);
            }
        }
    }
    mais cela n'a rien donné. Toujours aucun message recu.
    En désespoir de cause, j'ai du faire autrement

Discussions similaires

  1. [Débutant]Boucle sans fin : Wend non reconnu
    Par SebHoule dans le forum IHM
    Réponses: 5
    Dernier message: 12/06/2006, 16h49
  2. [VBA-E]Boucle Wend sans fin ??
    Par frevale dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 26/05/2006, 16h14
  3. C : utilisation de getopt - il boucle sans fin...
    Par moussmouss dans le forum C
    Réponses: 14
    Dernier message: 21/12/2005, 11h35
  4. Boucle sans fin : danger pour le serveur ?
    Par Rémiz dans le forum Langage
    Réponses: 4
    Dernier message: 09/12/2005, 16h52
  5. [SQL SERVER 2000] Fonction utilisateur : boucle sans fin
    Par galinijay dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/09/2005, 16h03

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