Voici le programme d'exemple SDL gentillement developpé par fearyourself :
http://gtksdl.developpez.com/downloads/fades.zip
Voici le programme d'exemple SDL gentillement developpé par fearyourself :
http://gtksdl.developpez.com/downloads/fades.zip
Code ajouté au dépot : http://subversion.developpez.com/pro...ranches/fades/
Fusion terminée : http://subversion.developpez.com/pro...gration_fades/
Pour l'instant il n'est pas possible d'arrêter l'animation.
Fusionné avec le tronc commun.
BUG
Parfois rien ne s'affiche lors d'un clique sur le bouton, il faut cliquer une seconde fois (mais ça fait planter le programme, donc lors du premier clique le bouton est désactivé).
je confirme pour le bug,
sinon pour m'amuser un peu avec gtk-sdl ,
j'ai modifié un peu le code pour pouvoir lancer / arreter l'animation sdl.
et rajouté un bouton pour faire basculer le focus de gtk a sdl ,et dans le code sdl rajouté la gestion de la touche 'g' pour redonner le focus a gtk.
j'ai aussi deplacé le sdlquit() de sdlmain , car il ne faut pas quitter si on veut pouvoir relancer l'animation apres et j'ai mis 'done' en global pour les memes raisons.
donc en gros , quand on lance l'animation sdl , on peu appuyer sur le bouton toggle pour donner le focus a sdl ( avec SDL_WM_GrabInput (SDL_GRAB_ON) ),
et apres dans sdl , soit appuyer sur q pour arreter l'animation (on perd alors aussi le focus sdl ) ou appuyer sur g pour simplement redonner le focus a gtk
(et pouvoir reatteindre les boutons gtk! ).
enfin bref j'ai un probleme a la fin quand je termine l'application ( gtk_main_quit(); ) .
en fait si l'animation sdl n'est pas stoppée avant de quitter cela genere un bug .
le moyen que j'ai trouvé pour parer cette eventualité c'est de verifier
si 'done' est a 1 quand on quitte ,
sinon on annule l'operation de sortie et on passe 'done' a 1 ,
on arrete l'animation donc mais ,on est obligé de cliquer une deuzieme fois sur eXit pour quitter . en theorie , cela devrait marcher , mais le probleme c'est que je suis obligé de rajouter un printf avant de mettre 'done' a 1 et de sortir de ma fonction.
sinon j'ai une erreur de la Xlib:
enfin bref , je ne comprend pas pourquoi le printf corrige ce bug
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 X Error of failed request: BadDrawable (invalid Pixmap or Window parameter) Major opcode of failed request: 147 (MIT-SHM) Minor opcode of failed request: 3 (X_ShmPutImage) Resource id in failed request: 0x3e0001f Serial number of failed request: 533 Current serial number in output stream: 534![]()
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 static void gtkfin(GtkWidget *p_widget, gpointer user_data) { if(done==0) { /*if sdl animation works , must stop before closing pb: have to close 2 time if sdl animation on pb2: FIXME if remove printf (time /flushing pb ?) get an XLIB error */ printf("\nFIN:stop sdl animation , recommencer pour Quiter\n"); done=1; return; } SDL_Quit(); gtk_main_quit(); }
Partager