[SDL2] Erreur d'initialisation : no available device

Ou comment devenir fou

a marqué ce sujet comme résolu.

Bonsoir amis zesteux !

J’ai un problème sur un gros programme avec la SDL2, du coup j’ai voulu la tester sur un plus petit programme, pour isoler la source d’erreur et je l’ai trouvée cette fichue erreur !

Avant tout, je suis sous debian stable, amd64, avec la sdl2 installé grâce aux dépots backports (pour la libudev qui ne voulait pas s’installer sinon).

Voici le code de mon programme de test :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <SDL2/SDL.h>

int main(int argc, char * argv[]){
  int ret = 0;
  SDL_Window *mainWindow = NULL;
  if(SDL_Init(SDL_INIT_VIDEO) != 0){
    printf("Probleme a l'initialisation de la SDL : %s\n", SDL_GetError());
    ret = -1;
  }
  else{
    mainWindow = SDL_CreateWindow("Test SDL 2.0", SDL_WINDOWPOS_CENTERED, \
                  SDL_WINDOWPOS_CENTERED, 800, 600, \
                  SDL_WINDOW_SHOWN);
    getchar();
    SDL_DestroyWindow(mainWindow);
  }
  SDL_Quit();
  return ret;
}

On approche du néant en terme de code, c’est vraiment juste du test. Avec toutes les lib de sdl2 installées, xorg-dev installé, ce programme me sort juste l’erreur :

Probleme a l’initialisation de la SDL : No available video device

En modifiant l’init pour mettre par exemple l’audio sans la vidéo, le programme se lance, mais dès que je veux faire de la video : niet.

Est ce que certains d’entre vous ont déjà eu ce problème et ont pu le régler autrement qu’en installant la SDL2 par les sources ?

J’ai essayé plusieurs des solutions proposées dans les navigateurs de recherche (installer xorg-dev avant, désinstaller, réinstaller, se mettre un pied dans la salade de fruits …) rien n’a marché jusqu’ici :colere2: .

+0 -0

Coucou \o

Chez moi ton code marche bien. Pour reproduire le même problème, je dois faire :

1
2
ache@arch $ DISPLAY="" ./sdl
Probleme a l'initialisation de la SDL : No available video device

C’est-à-dire écraser la variable d’environnement DISPLAY qui permet à la SDL de retrouver la session X.

Du coup, je suspecte que c’est ton problème. Comment lances-tu le programmes ?
Peux-tu nous donner le résutat de la commande env.
Que se passe-t-il si tu fais :

1
ache@arch $ DISPLAY=":0" ./sdl

?

Normalement avec ça on devrait pouvoir avancé ^^
Bonne soirée

PS: Il est tout à fait possible que cela vienne d’ailleurs comme par exemple un problème de configuration. Mais on est obligé de tout essayé.


Sinon, il est très surprenant que mettre un pied dans la salade de fruits ne fonctionne pas ! Qu’as-tu pris comme fruit ? Essaye d’ajouter des agrummes pour voir ;)

+0 -0

Après une nuit voici ma réponse !

Edit 1: Je lance mon programme depuis un émulateur de terminal (lxterminal) avec : ./main tout simplement au fait !Fin Edit 1
Le résultat de la commande env sur mon système est :

 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
XDG_MENU_PREFIX=xfce-
LANG=fr_FR.utf8
DISPLAY=:0.0
OLDPWD=/home/**/git-repo/Paintbrush
COLORTERM=truecolor
XDG_VTNR=7
SSH_AUTH_SOCK=/tmp/ssh-aIo0Mydnf1hs/agent.1062
GLADE_CATALOG_PATH=:
XDG_SESSION_ID=2
XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/**
USER=**
GLADE_MODULE_PATH=:
DESKTOP_SESSION=xfce
PWD=/home/**/git-repo/Paintbrush/Paintbrush
HOME=/home/**
SSH_AGENT_PID=1100
QT_ACCESSIBILITY=1
XDG_SESSION_TYPE=x11
XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share
XDG_SESSION_DESKTOP=xfce
GLADE_PIXMAP_PATH=:
GTK_MODULES=gail:atk-bridge
TERM=xterm-256color
SHELL=/bin/bash
VTE_VERSION=4601
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_CURRENT_DESKTOP=XFCE
QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
SHLVL=1
XDG_SEAT=seat0
WINDOWID=65011715
GDMSESSION=xfce
LOGNAME=**
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/home/**/.Xauthority
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_CONFIG_DIRS=/etc/xdg
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
SESSION_MANAGER=local/**:@/tmp/.ICE-unix/1110,unix/**:/tmp/.ICE-unix/1110
GCC_COLORS=error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01
_=/usr/bin/env

`

En essayant d’écraser le display avec les valeurs successives : :0 , 0:0, :0.0 l’erreur reste la même.

Salut,

Ça me fait penser à ce sujet et à celui-là.

Karnaj

Le premier lien est bien avec le même problème, mais ils le résolvent avec la compilation par les sources de SDL2 et j’aimerais utiliser au maximum le gestionnaire de paquet, pour éviter que, dans mon autre programme bien plus gros, l’utilisateur fasse l’installation locale de la SDL2.

Après le apt-get build-dep xscreensaver l’erreur est toujours présente. Je ne peux faire pareil avec vlc (aucun dépot source d’après apt O_o).

Le deuxième lien propose d’installer les packages de développement pour x11 ce qui est déjà le cas : xorg-dev est installé sur mon système.

Après avoir fait le : apt-get build-dep totem puis un recompilage de mon programme avec : gcc `sdl2-config --cflags --libs` -g main.c -o main, l’erreur est toujours présente :( .

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte