IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

SDL et XLib -> SDL_GetWMInfo


Sujet :

SDL

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 89
    Points
    89
    Par défaut SDL et XLib -> SDL_GetWMInfo
    Bonjour,

    je tombe encore sur une coquille la ou il ne devrait pas en avoir. En fait, j'essaye de gérer la fenêtre crée par la SDL grâce à Xlib.

    Et les informations que me fournie SDL semble être érronnées :/

    Voici un simple code ou j'éssaye de bouger la fenêtre:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    /*
     * main.cpp
     *
     *  Created on: Jan 10, 2012
     *      Author: guillaume
     */
     
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_syswm.h>
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
     
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char **argv) {
    	Display * display;
    	Window window;
    	SDL_Surface * screen;
     
    	// Initialize SDL
    	if (SDL_Init(SDL_INIT_VIDEO) < 0 ) {
    		cout << "SDL_Init Failed " << endl;
    		return false;
    	}
     
    	// Make SDL Window
    	if( !(screen = SDL_SetVideoMode(300, 200, 32, SDL_NOFRAME | SDL_ANYFORMAT | SDL_HWSURFACE | SDL_DOUBLEBUF ) ) ) {
    		cout << "SDL_SetVideoMode Failed " << endl;
    		return false;
    	}
     
    	// Create Info structure
    	SDL_SysWMinfo info;
    	SDL_VERSION(&info.version);
     
    	// Get info from SDL
    	if(!SDL_GetWMInfo(&info))
    		cout << "SDL cant get from SDL" << endl;
     
    	// Check we are on X11
    	if ( info.subsystem != SDL_SYSWM_X11 )
    		cout << "SDL is not running on X11" << endl;
     
    	// Store X11 informations
    	display = info.info.x11.display;
    	window = info.info.x11.window;
     
    	cout	<< "Display : " << display << endl
    			<< "Window : " << window << endl;
     
    	// try to move SDL Window
    	switch(XMoveWindow(display, window,200,200)) {
    	case BadWindow :
    		cout << "BadWindow" << endl;
    		break;
    	case BadValue :
    		cout << "BadValue" << endl;
    		break;
    	case BadRequest :
    		cout << "BadRequest" << endl;
    		break;
    	}
     
    	sleep(5);
    }
    La sortie :
    Display : 0x854aef0
    Window : 71303181
    BadRequest
    C'est surement tout bête, mais j'arrive pas à voir la ou ça cloche.

    Merci de votre aide

    Edit : suis sous Debian, tout ça...

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 89
    Points
    89
    Par défaut
    Je continue mes investigations :

    Si on veut que les changements puisse s'afficher, il faut obligatoirement remplacer

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	XEvent ev;
    	while(true)
    	    XNextEvent(display,&ev);
    Mais le move ne marche toujours pas :/

    Pour vérifier que le problème vienne bien de la SDL, je regarde si mon code marche bien avec une fenêtre XLib

    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
     
    	display = XOpenDisplay(NULL);
    	if (display == NULL) cout << "Echec XOpenDisplay" << endl ;
    	screen = *(int*)DefaultScreenOfDisplay(display);
    	window = XCreateSimpleWindow(display, ROOT,
    			0, 0, WIDTH, HEIGHT,
    			2, BLACK,
    			WHITE);
    	XMapWindow(display, window);
     
            XMoveWindow(display, window,200,200);
     
    	XEvent ev;
    	while(true)
    	    XNextEvent(display,&ev);
    La fenêtre a bien été déplacée !
    Par contre on notera que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XMoveWindow(display, window,200,200)
    nous renvoi BadRequest.

    Ce qui veut dire que cette information n'est pas pertinente
    Ce qui nous donne encore moins d'informations qu'avant -_-'

  3. #3
    screetch
    Invité(e)
    Par défaut
    XMoveWindow ne renvoie pas un code d'erreur. Si une erreur est detectée cela appelle une callback, la version par défaut écrit sur la console l'erreur générée.

Discussions similaires

  1. Programmation graphique ... SDL ??
    Par Franck.H dans le forum C
    Réponses: 9
    Dernier message: 29/04/2004, 20h51
  2. [SDL] manipulation d'image
    Par zdra dans le forum OpenGL
    Réponses: 4
    Dernier message: 28/02/2004, 16h56
  3. un plateau en SDL...
    Par maniaco_jazz dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 24/02/2004, 16h48
  4. [Debutant] Sdl & OpenGl link ne marche pas
    Par Riko dans le forum OpenGL
    Réponses: 9
    Dernier message: 18/02/2004, 16h13
  5. [opengl et sdl]
    Par Gonath dans le forum OpenGL
    Réponses: 6
    Dernier message: 08/12/2003, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo