samedi 23 février 2013

SDL : Unable to open a console terminal

Un petit post pour aider ceux qui pourraient avoir le même souci que moi : après avoir compilé la lib SDL 1.2.15 dans une machine virtuelle Ubuntu 10.04 (dans le but d’en faire une version qui fonctionne sur la plupart des distributions récentes), je la teste sous Arch Linux et j’obtiens un résultat étrange :

- X disparait pour afficher à la place un TTY…
- je dois presser Ctrl-alt-F2 puis Ctrl-alt-F1 pour revenir à X
- mon programme affiche dans le terminal ce mystérieux message d’erreur :
Error initializing video: Unable to open a console terminal
Pourtant j’ai compilé la libSDL avec exactement les mêmes options que dans le PKGBUILD sdl d’Arch Linux, et mon jeu fonctionne très bien avec la lib d’Arch !

Après des recherches web ne retournant ni explication ni solution, je cherche le message d’erreur dans les sources de la SDL et vois qu’il provient du fichier video/fbcon/SDL_fbevents.c. fbcon ? Pourquoi est-ce que la SDL essaye d’utiliser une framebuffer console au lieu d’ouvrir une fenêtre sous X ??

J’essaye de forcer l’utilisation du pilote X11 :

export SDL_VIDEODRIVER=x11
./MonJeu


… et j’obtiens cet autre message d’erreur :
Error initializing video: No available video device
Quelqu’un dans le canal #SDL sur IRC me demande si le ./configure affiche que X est supporté ou non, et je relance donc la VM pour voir ça. Mon script de compilation installe automatiquement deux packages qui, curieusement, ne m’avaient pas été nécessaires pour compiler la version 64 bit de la SDL, mais étaient requis en 32 bit : libxext-dev et x11proto-xext-dev. Et lorsque je teste à nouveau mon jeu sous Arch avec la nouvelle version de la lib 64 bit, ça fonctionne !*

Conclusion : sous Ubuntu ou Debian, installez libxext-dev avant de compiler la libSDL, sinon elle ne gérera pas l’ouverture de fenêtres sous X. Sous Arch Linux, vous avez probablement déjà le package libxext installé.

*en fait, non, ça ne marche toujours pas, mais le message d’erreur a disparu et la fenêtre de mon jeu s’ouvre brièvement. J’ai juste d’autres problèmes à corriger…

Aucun commentaire:

Enregistrer un commentaire