begin process at 2012 05 30 17:15:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

SDL : Affichage en multi thread ?!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SDL : Affichage en multi thread ?!

samedi 17 décembre 2005 à 12:17:57 | SDL : Affichage en multi thread ?!

ctx_man

Bonjour tout le monde, SDL me pose un problème.
Je voudrait faire du multi thread afin de séparer ma gestion clavier de mon affichage.
voila un exemple de code pour mieu expliquer mon problème.

#include <sdl.h>
#include <sdl_thread.h>

int Display(void *unused);

int main(int argc, char *argv[])
{
   if(!SDL_Init(SDL_INIT_VIDEO))
   {
      atexit(SDL_Quit);
      //Si je fais ca ici ma fenetre est creer et
      //afficher
      SDL_Surface *Screen = SDL_SetVideoMode(640,
      480, 16, SDL_HWSURFACE);

      //Par contre si je fais ca en multithread
      //comme ci-apres. Ma fenetre n'est pas creer
      //et encore moins afficher
      SDL_Thread *DisplayTh;
      DisplayTh= SDL_CreateThread(Display, NULL);

      ...

      SDL_WaitThread(DisplayTh, NULL);
   }
   return 0;
}

int Display(void *unused)
{
   //Le programe reste figé ici
   SDL_Surface *Screen = SDL_SetVideoMode(640,
   480, 16, SDL_HWSURFACE);

   ...

   return 0;
}

De plus, lorsque j'obtient ma fenetre, si elle perd le focus, il m'est impossible de le lui rendre...

Quelqu'un connait la réponse à ces problèmes ? Suis-je obliger de creer ma fenetre dans le programme principale ?

samedi 17 décembre 2005 à 17:41:44 | Re : SDL : Affichage en multi thread ?!

luhtor

Des lors que tu fais du multi thread, tu as besoin de sémaphore or je pense pas que tu t'en encore trop posé la question de ca :)
Si tu fais l'impasse, tu risques d'avoir des résultats un peu inattendu (de temps en temps !) ^^

Mais a part, ca je peux pas t'aider sur la SDL. Mais il me semble pas que créer deux threads pour faire ca, soit pertinent.


samedi 17 décembre 2005 à 18:16:28 | Re : SDL : Affichage en multi thread ?!

ctx_man

Merci de répondre mais ...

1 - Multi-Tâche/Thread ne signifie pas sémaphore.... Les sémaphores permettent le partage de ressource sans qu'une tache modifie la ressource pendant qu'une autre s'en sert. Mes ressources ne sont pas partagées et n'ont pas d'interet à l'etre donc je n'ai pas besoin de sémaphore (pour le multi-tache/thread on peut aussi se servir de signaux plutot que de sémaphore ou tout autre systemes de communication comme les pipes ou les files de messages)

2 - Il est pertinent de séparer la gestion des evènement de l'affichage dans une autre tache afin que si l'on a un ralentissement de l'affichage on continue de gerer en "temps réelle" les evènement tels que le clavier et la souris. Ou inversement si on perd le clavier l'affichage ne se bloque pas pour autant... Il ne faut pas oublier que je n'ai mit qu'une portion du code. Je n'ai mit que ce qui concerne le thread d'affichage, mais je vais en avoir d'autre (en fait il y en a déjà d'autres), seulement le problème se situe uniquement sur ce thread.
samedi 17 décembre 2005 à 18:50:31 | Re : SDL : Affichage en multi thread ?!

luhtor

Ben sémaphore quand meme :) Et multi tache implique sémaphore. Il se passe quoi, si lorsque tu appuis sur la flèche avancer et que tu modifies donc ta position ou ta vitesse ,et au meme moment, l'affichage lit la valeur pour l'afficher ? Un sémaphore ne permet pas juste le partage de ressource, mais dans ton cas, il s'agirait simplement d'exclusion mutuelle.

Mais ceci dit, je suis sur de ce que je dis juste avant. Mais comme je ne connais pas le système de pipe ou autre... Enfin une chose est sur, ya du sémaphore dedans :)

Bon sinon, c'y connais rien a la SDL donc dsl ^^
samedi 17 décembre 2005 à 19:10:54 | Re : SDL : Affichage en multi thread ?!

ctx_man

Pour le moment non il n'y a pas de sémaphore car le clavier n'agit en rien sur l'affichage. Mais effectivement il y aura plus tard ou un autre systeme de communication...

Le travail c'est la santé, ne rien faire c'est la préservé !!!


Cette discussion est classée dans : int, fenetre, affichage, thread, sdl


Répondre à ce message

Sujets en rapport avec ce message

Probleme, creation d'une class traitant sur SDL [ par kickbar ] Bonjour a tous, voila j'ai un petit souci, dans l'un de mes methodes, je charge la fenetre principale, je colle une image, et la mystere, a l'executio probleme thread/ SDL [ par ritchou42 ] salut tout le monde [^^happy7] voila je suis entrain de coder un gros projet pour mon école et j'ai un probleme au niveau de se code [code=cpp] int SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface pb en C -> SDL et pointeur [ par snake57 ] Bonjour, j'ai un petit problème avec un prog que je suis entrain de faire. C'est la première fois que j'utilse la SDL et les pointeurs donc je galère Problème fenêtre SDL sous Linux [ par Neofabiensama ] Bonjour,Je poste aujourd'hui car je suis à cours d'idée sur un problème de fenêtre SDL. Je travaille actuellement sur un projet de visualisation 2D d' Table Ascii [ par Oxie666 ] Hello, je suis tout nouveau ici (et forcement méga débutant) et j'ai une question :J'ai écrit un petit programme afin d'avoir sous la main une table a Copier contenu d'une fenetre dans un bmp [ par hwoarang ] Bonjour, Je ne suis pas un expert dans la prog windows donc j'ai recupéré un bout de code qui permet de faire une capture d'ecran et qui marche. Seul petit probleme SDL [ par DarthKhaos ] Bonjour, voila j'ai un petit souci, j'ai un projet ou je dois faire bouger un bras robotisé aprés plusieur test sa marche a merveille, en selectionnan Probleme morpion en SDL c++ [ par juju116 ] Salut tout le monde! j'expose donc mon souci pour l'instant mon programme affiche une image en fond d'ecran et bizarement cette image est bien chargé affichage sdl [ par korin221 ] Bonjour! Je réaliser un jeu de UNO en C. J'ai un probleme lors du chargement de la main d'un joueur, soit les 7 cartes. J'affiche mes 7 cartes mais il


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,838 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales