Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1390 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [SDL] je pert le focus ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SDL] je pert le focus ...

n°854983
Eugenics
Posté le 21-09-2004 à 15:58:39  profilanswer
 

Salut ,
 
 Je cree une aplication en mode fenetré avec SDL sous windows XP avec VC++.  
j'initialise ma sdl, je lance le rendu, ca m'affiche ce que je veux pendant 10 secondes environ apres pouf! ca deviens tout blanc avec dans la barre de titre de la fenetre monapi(ne repond pas)  
 
de plus il m'est impossible de bouger la fenetre rien (avant que ca reponde plus) ...  
 
je sais plus quoi faire :'(


Message édité par Eugenics le 21-09-2004 à 16:01:27
mood
Publicité
Posté le 21-09-2004 à 15:58:39  profilanswer
 

n°855001
titione
addicted
Posté le 21-09-2004 à 16:14:29  profilanswer
 

prendre un bescherelle... ça réduira une partie des pbs mais c'est pas très gentil comme réponse !
ça sent bien la boucle infini comme bug ça...

n°855068
Eugenics
Posté le 21-09-2004 à 17:30:24  profilanswer
 

la raison viens du fait que j'utilise un thread pour le rendu, et un thread pour les evenements :/
quand je regroupe ces 2 threads en 1 la ca marche nikel
 
j'ai voulue faire un truc du style pour garder mes 2 threads
 
 
du cote du thread gfx
 
while(!_quit)
{
  SDL_MutexP(_mutex_gfx);
  ....
  SDL_MutexV(_mutex_event);
}
 
 
et du cote du thread events
 
while(!_quit)
{
  SDL_MutexP(_mutex_event);
  ....
  SDL_MutexV(_mutex_gfx);
}
 
 
en fesant bien attention a avoir un decalage de temp au debut affin de bien initialiser :)  
mais rien a faire :/ c'est comme si chacun avais rien a battre du mutex :/
 
mutex gfx           mutex event
 
lock de gfx            
tratements gfx
unlock event            lock de event
lock de gfx bloquant    traitements event
lock de gfx bloquant    on unlock gfx
 
lock de gfx             lock de event bloquant
tratements gfx          lock de event bloquant
unlock event            lock de event
lock de gfx bloquant    traitements event
lock de gfx bloquant    on unlock gfx
 
   
 
sauf que dans la pratique, ils me renvoillent toujours 0 comme quoi ils arrivent a locker le thread :/ alors qu'il est deja locke !!!  
le unlock se passe bien lui  
 

n°856042
Angel64
Posté le 22-09-2004 à 22:21:50  profilanswer
 

Eugenics a écrit :


while(!_quit)
{
  SDL_MutexP(_mutex_gfx);
  ....
  SDL_MutexV(_mutex_event);
}


 
Quand tu utilises un mutex, il faut le verrouiller avant le traitement puis le déverrouiller à la fin du traitement. Ici, à la fin de ton bloc d'instructions, tu unlock un mutex qui n'a pas été préalablement locké. Utilises un code de ce style dans chaque thread :  
 

Code :
  1. while(!_quit)
  2. {
  3.   SDL_MutexP(_mutex_gfx);
  4.   ....
  5.   SDL_MutexV(_mutex_gfx);
  6. }

n°856181
el muchach​o
Comfortably Numb
Posté le 23-09-2004 à 08:06:05  profilanswer
 

Un truc qui marche est de créer une classe Mutex stack-based.
Ainsi, là où l'on veut verrouiller, on n'a qu'a déclarer le mutex qui verrouille dans le constructeur, et déverrouille dans le destructeur.
Ce qui permet de faire à l'utilisation :

Code :
  1. while(true)
  2. {
  3.    try
  4.    {
  5.       Mutex unMutex;
  6.       maFonction();
  7.       ...
  8.    }
  9.    catch(...)
  10.    {
  11.       // pas besoin de déverrouiller le Mutex
  12.    }
  13.    // scope d'un nouveau Mutex  
  14.    {
  15.       Mutex unMutex;
  16.       autreFonction();
  17.    }
  18. }


Message édité par el muchacho le 23-09-2004 à 08:10:55
n°856733
el muchach​o
Comfortably Numb
Posté le 23-09-2004 à 20:35:54  profilanswer
 

Au passage, ce pattern bien connu est recommandé pour toutes les acquisitions de ressources partageables, par exemple l'ouverture d'un fichier (faire une classe fichier est d'ailleurs tjrs une bonne idée), d'un port, etc.

n°873782
Eugenics
Posté le 15-10-2004 à 00:04:23  profilanswer
 

je reveisn sur cette histoire (au final j'ai degagé le threading de mon programe)
 
mais je comprend toujours pas pkoi ca fonctionnais pas mon systeme :/  
 
la fonction SDL_MutexP() en sdl est bien sencée locker un mutex.  
Et etre bloquant tant que celui ci est locké ???
 
et un mutex ettant visible a partir de tout les thread ....  
 
il est possible pour  
le thread A de bloquer le mutex 1  (dans le Thread B on attend le delock du mutex1 pour reprendre l'execution)
le thread A fais son traitement   (dans le Thread B on attend toujours le delock pour reprendre l'execution)
Le thread A finis son traitemnt, delocke le mutex 1 ce qui entraine la reprise de l'execution du Thread B
 
non ?  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [SDL] je pert le focus ...

 

Sujets relatifs
[C++/SDL] pb de threading[SDL/GTK] keycodes différents
Question de focus[Algo] PERT/CPM : quel algo pour parcourir le graph ?
Inserer un élément dans un text area au niveau du focusQuel element a le focus ?
[résolu]"Focus" sur une ligne à l'affichage d'un menu déroulant[SDL]N'agit pas bien quand j'utilise le clavier
Pb focus sur le premier champ texte d'une variable de type tableauVB6 sendkeys et reprise du focus
Plus de sujets relatifs à : [SDL] je pert le focus ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR