[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Beginner has trouble with SDL in foll-screen mode.



On Fri, 10 Aug 2007 21:39:47 +0000 (UTC)
Hendrik Boom <hendrik@topoi.pooq.com> wrote:

> I have a small program that makes a time-varying pattern on the
> screen. It works fine with SDL_RESIZABLE, but not with SDL_FULLSCREEN.
> 
> In full-screen mode everything is sheared off into wavy lines, as if the
> screen geometry I'm using is not the actual one.
> 
> Now I understand that it may be unable to deliver the desired resolution,
> but if so SDL_SetVideoMode should be returning error indication,
> right?
> 
> Although I don't get an error return, i called SDL_GetError anyway and got
> the following message:
> 
>   Failed loading DPMSDisable: /usr/lib/libX11.so.6: undefined symbol:    DPMSDisable
>  
> I don't know if that means anything important, because it happens
> both with SDL_FULLSCREEN and with SDL_RESIZABLE.
> 
> Here's the code.  The #if is how I switch between full-screen and
> resizable.  Am I doing something obviously wrong?
> 
> 
> #include <SDL/SDL.h>
> #include <stdio.h>
> #include <stdlib.h>
> 
> Uint16 CreateHicolorPixel(
> 			  SDL_PixelFormat * fmt,
> 			  Uint8 red,
> 			  Uint8 green,
> 			  Uint8 blue)
> {
>   Uint16 value;
>   value = ((red >> fmt->Rloss) << fmt->Rshift) +
>     ((green >> fmt->Gloss) << fmt->Gshift) +
>     ((blue >> fmt->Bloss) << fmt->Bshift);
>   return value;
> }
> 
> int main()
> {
>   SDL_Surface *screen;
>   Uint16 *raw_pixels;
>   int x, y, t;
> 
>   printf("At start GetError says: %s\n", SDL_GetError());
>   if(SDL_Init(SDL_INIT_VIDEO) != 0)
>     {
>       printf("unable to initialize SDL: %s\n", SDL_GetError());
>       return 1;
>     }
>   atexit(SDL_Quit);
> 
>   printf("After SDL_INIT GetError says: %s\n", SDL_GetError());
> #if 1
>   screen = SDL_SetVideoMode(640, 480, 16, SDL_FULLSCREEN);
> #else
>   screen = SDL_SetVideoMode(640, 480, 16, SDL_RESIZABLE);
> #endif
> 
>       printf("after SetVideoMods GetError says: %s\n", SDL_GetError());
>   if(screen == NULL)
>     {
>       printf("unable to set video mode: %s\n", SDL_GetError());
>       return 1;
>     }
> 
>   for(t = 0; t < 20; ++t)
>     {
>       SDL_LockSurface(screen);
>       raw_pixels = (Uint16 *) screen->pixels;
>       for(x = 0; x < screen->w; x++)
> 	{
> 	  for(y = 0; y < screen->h; y++)
> 	    {
> 	      Uint16 pixel_color;
> 	      int offset;
> 	      pixel_color = CreateHicolorPixel(screen->format,
> 					       (x * t) >> 4,
> 					       (x ^ y) + t,
> 					       (y * t) >> 4
> 
> 					       );
> 	      offset = (screen->pitch / 2 * y + x);
> 	      raw_pixels[offset] = pixel_color;
> 	    }
> 	}
>       SDL_UnlockSurface(screen);
>       SDL_UpdateRect(screen, 0, 0, 0, 0);
>       SDL_Delay(8);
>     }
> 
>   SDL_Delay(3000);
>   printf("success!\n");
>   return 0;
> }
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-user-REQUEST@lists.debian.org 
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

Which version of SDL you have?
Maybe this problem it's coming from rhe windowed system (xorg),

-olr



Reply to: