Duda SDL_init()

Iniciado por Ferno, 4 Diciembre 2011, 03:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Ferno

Gente, estoy con algo bastante curioso (o tan tonto que no lo veo :P).
Resulta que estoy trabajando con la librería SDL, en Eclipse. Tengo 2 proyectos diferentes, con un archivo source cada uno. Aclaro que ambos proyectos están en el mismo directorio y tienen exactamente las mismas propiedades.

Ahora bien, en un source tengo este código:


#include <stdio.h>
#include <SDL/SDL.h>

int main (int argc, char* argv[])
{
SDL_Surface* screen;
SDL_Surface* surface;
Uint32 rmask = 0xff000000;
Uint32 gmask = 0x00ff0000;
Uint32 bmask = 0x0000ff00;
Uint32 amask = 0x000000ff;

if(SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO) < 0)
{
printf("No se puede inicializar SDL: %s\n",SDL_GetError());
exit(1);
}

screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE | SDL_DOUBLEBUF);
if ((screen == NULL))
{
fprintf(stderr, "No se puede establecer el modo video 640x480: %s \n",SDL_GetError());
exit(1);
}

surface = SDL_CreateRGBSurface(SDL_SWSURFACE,640,480,32,rmask,gmask,bmask,amask);
if ((surface == NULL))
{
fprintf(stderr,"Error al crear pantalla %s \n",SDL_GetError());
exit(1);
}



printf("Está todo más que bien\n");
atexit(SDL_Quit);
return 0;
}


Algo muy simple en SDL, recién para arrancar. Compila, lo corro, y funciona de pelos.
Ahora bien en el otro source tengo este otro código:


#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>

int main (int argc, char* argv[])
{
SDL_Surface *screen, *image;
Uint32 rmask, bmask, gmask, amask;
SDL_Rect dest; /*Destiny of the image*/
SDL_Event event;
int done = 0;

atexit(SDL_Quit);

/*INIT SDL*/
if (SDL_Init(SDL_INIT_VIDEO) < 0);
{
printf("No se pudo inicializar SDL %s \n", SDL_GetError());
exit(1);
}

/*ACTIVATE VIDEO MODE*/
screen = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
if ((screen == NULL))
{
printf("No se pude inicializar el modo gráfico %s \n",SDL_GetError());
exit(1);
}

/*UPLOAD GRAPHIC*/
image = SDL_LoadBMP("Ruta.bmp");
if (image == NULL)
{
printf("No se pudo cargar gráfico %s \n",SDL_GetError());
exit(1);
}

/*Defining destiny of the image*/
dest.x = 100;
dest.y = 100;
dest.w = image->w;
dest.h = image->w;
SDL_BlitSurface(image,NULL,screen,&dest);

/*Show Screen*/
SDL_Flip(screen);

/*Free Surface*/
SDL_FreeSurface(image);

/*Waiting for the user to press to quit*/
while (done == 0)
{
while (SDL_PollEvent(&event))
{
if (event.type == SDL_KEYDOWN)
done = 1;
}
}

/*FINISH SDL*/
return 0;
}


También compila perfecto. El problema es que al correrlo, me da un error en el SDL_Init. Es decir, entra al if del SDL_Init.
Lo curioso es que limpio esa parte del código, es decir, no inicializo el SDL, y funciona perfectamente el programa. Carga la ventana con la respectiva imágen.

No entiendo, ¿Alguien sabe qué está ocurriendo?

Ferno

Pfff, soy lo PEOR!!
Error: Si se fijan tengo un ";" luego del if del SDL_Init del segundo código.

Estos errores de tipeo me molestan demasiado :P

Littlehorse

Cita de: Ferno en  7 Diciembre 2011, 19:31 PM
Pfff, soy lo PEOR!!
Error: Si se fijan tengo un ";" luego del if del SDL_Init del segundo código.

Estos errores de tipeo me molestan demasiado :P

Cosas que pasan en el fragor de la batalla contra el código  ;D
An expert is a man who has made all the mistakes which can be made, in a very narrow field.