Help about SDL abnormal color display in VNC viewer.
James Weatherall
jnw "at" realvnc.com
Thu Apr 3 13:58:01 2008
Dongxiao,
I'm afraid that the VNC List strips attachments, so I don't know what the
colour problem you're seeing is, but one common bug in X rendering code is
to assume that if the display is depth 24 that pixels are in RGB format.
Current Xvnc releases use BGR by default, which leads to red & blue being
swapped if applications mistakenly assume RGB.
Cheers,
--
Wez @ RealVNC Ltd
> -----Original Message-----
> From: vnc-list-admin "at" realvnc.com
> [mailto:vnc-list-admin "at" realvnc.com] On Behalf Of ???
> Sent: 03 April 2008 09:45
> To: vnc-list "at" realvnc.com
> Subject: Help about SDL abnormal color display in VNC viewer.
>
> Hi, all,
> I wrote a very simple SDL drawing program under linux
> (the code is in the first attachment), it just shows a color
> (R=63, G=127, B=191) in a 320x240 panel. If I run the program
> in X window, the color displays correct. But if I use VNC
> viewer to connect the host and then run the program, the
> color is abnormal, (see the second attached file, the left
> part is the wrong displayed color, and the right part is the
> correct color of R=63, G=127, B=191). Can someone help me
> about this or is it a bug of VNC viewer?
> Thanks very much!
>
> BTW: I am using VNC viewer free edition 4.1.1. Also I have
> tried the latest version of VNC, this issue still exists.
>
> Best regards,
> Xu Dongxiao
> #include <stdio.h>
> #include <stdlib.h>
> #include <SDL.h>
>
> int main()
> {
> uint8_t *bufp;
> int i;
> SDL_Surface *shared;
>
> if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {
> fprintf(stderr, ".....SDL: %s\n", SDL_GetError());
> exit(1);
> }
> atexit(SDL_Quit);
> shared = SDL_SetVideoMode(320, 240, 24, SDL_SWSURFACE);
> if ( shared == NULL ) {
> fprintf(stderr, "Error to set video mode: %s\n",
> SDL_GetError());
> exit(1);
> }
> if ( SDL_MUSTLOCK(shared) ) {
> if ( SDL_LockSurface(shared) < 0 ) {
> return;
> }
> }
>
> bufp = (Uint8 *)shared->pixels;
> for (i=0; i<320*240; i++) {
> *(bufp+shared->format->Rshift/8+3*i) = 63;
> *(bufp+shared->format->Gshift/8+3*i) = 127;
> *(bufp+shared->format->Bshift/8+3*i) = 191;
> }
> if ( SDL_MUSTLOCK(shared) ) {
> SDL_UnlockSurface(shared);
> }
> SDL_UpdateRect(shared, 0, 0, 320, 240);
> while(1);
> }
>
> [demime 1.01d removed an attachment of type image/jpeg which
> had a name of color.jpg]
> _______________________________________________
> VNC-List mailing list
> VNC-List "at" realvnc.com
> To remove yourself from the list visit:
> http://www.realvnc.com/mailman/listinfo/vnc-list
>