Bonjour,
Je suis entrain de coder un interface sur le framebuffer du Raspberry Pi, donc sans utiliser XWindows et sans gestionnaire de fenêtre. J'utilise la SDL pour la partie graphique.
Mon programme est lancé depuis la console et dessine un interface sur lequel je dispose d'icone correspondant à des applications qui se lance en plein écran (donc sans besoin de X11) comme par exemple Kodi.
Mon souci est que lorsque je clique sur une icone, j'execute la commande permettant de lancer ladite application (exemple Kodi), mais lorsque je la ferme je ne reviens pas sur mon interface mais sur un ecran noir (il me faut faire CTRL-ALT-F2 et CTRL-ALT-F1 pour revenir sur mon interface).
Je pense que cela est du au fait que je ne re-dessine pas l'interface mais je ne sais pas comment faire pour corriger ca, j'ai pensé à une machine à état mais je ne sais pas comment récuperer l'état d'une application qui vient d'etre fermé et comment implémenter la machine en elle même.
Ma fonction permettant de lancer une application ressemble à ca:
(les applications pouvant être lancées sont contenues dans un vector tabIcone de type icone (une icone contient le nom de l'image et la commande pour lancer l'appli)
Merci, si vous avez besoin de plus d'infos demander
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 SDL_Event event; while(continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=false; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: //On quitte l'application lorsque l'on appui sur echap continuer = false; break; } break; case SDL_MOUSEBUTTONUP: for(auto &icone : tabIcone) //Pour chaque icone on verifie si l'on a cliqué dessus { if(event.button.button==SDL_BUTTON_LEFT && event.button.x>(icone.getX()) && event.button.x<(icone.getX()+112) && event.button.y>(icone.getY()) && event.button.y<(icone.getY()+112) ) //Si on a cliqué sur l'icone system(icone.getCommande()); //On execute la commande permettant de lancer l'application } break; }
Partager