SOURCES: fuse-fb.patch (NEW) - palette redefined because of green ...

witekfl witekfl at pld-linux.org
Tue Feb 7 18:42:09 CET 2006


Author: witekfl                      Date: Tue Feb  7 17:42:09 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- palette redefined because of green background on aty128fb

---- Files affected:
SOURCES:
   fuse-fb.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/fuse-fb.patch
diff -u /dev/null SOURCES/fuse-fb.patch:1.1
--- /dev/null	Tue Feb  7 18:42:09 2006
+++ SOURCES/fuse-fb.patch	Tue Feb  7 18:42:04 2006
@@ -0,0 +1,141 @@
+--- fuse-0.7.0/ui/fb/fbdisplay.c.old	2006-02-07 16:18:39.972426000 +0100
++++ fuse-0.7.0/ui/fb/fbdisplay.c	2006-02-07 18:10:34.560061500 +0100
+@@ -72,7 +72,7 @@
+ };
+ 
+ static int fb_fd = -1;		/* The framebuffer's file descriptor */
+-static libspectrum_word *image = 0, *gm = 0;
++static libspectrum_byte *image = 0, *gm = 0;
+ 
+ static struct fb_fix_screeninfo fixed;
+ static struct fb_var_screeninfo orig_display, display;
+@@ -97,6 +97,21 @@
+   { 0 }
+ };
+ 
++static __u16 red[16], green[16], blue[16], transp[16];
++static __u16 zx_red[16] = {
++0, 0, 0xC000, 0xC000, 0, 0, 0xC000, 0xC000,
++0, 0, 0xFFFF, 0xFFFF, 0, 0, 0xFFFF, 0xFFFF};
++
++static __u16 zx_green[16] = {
++0, 0, 0, 0, 0xC000, 0xC000, 0xC000, 0xC000,
++0, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
++
++static __u16 zx_blue[16] = {
++0, 0xC000, 0, 0xC000, 0, 0xC000, 0, 0xC000,
++0, 0xFFFF, 0, 0xFFFF, 0, 0xFFFF, 0, 0xFFFF};
++
++static struct fb_cmap orig_cmap, cmap;
++
+ static int fb_set_mode( void );
+ 
+ int uidisplay_init( int width, int height )
+@@ -132,8 +147,16 @@
+     fprintf( stderr, "%s: couldn't open framebuffer device\n", fuse_progname );
+     return 1;
+   }
++  orig_cmap.start = 0;
++  orig_cmap.len = 16;
++  orig_cmap.red = red;
++  orig_cmap.green = green;
++  orig_cmap.blue = blue;
++  orig_cmap.transp = transp;
++  
+   if( ioctl( fb_fd, FBIOGET_FSCREENINFO, &fixed )        ||
+-      ioctl( fb_fd, FBIOGET_VSCREENINFO, &orig_display )    ) {
++      ioctl( fb_fd, FBIOGET_VSCREENINFO, &orig_display ) ||
++      ioctl( fb_fd, FBIOGETCMAP, &orig_cmap)) {
+     fprintf( stderr, "%s: couldn't read framebuffer device info\n",
+ 	     fuse_progname );
+     return 1;
+@@ -171,7 +194,7 @@
+   if( fb_modes[index].doublescan ) display.vmode |= FB_VMODE_DOUBLE;
+   
+   display.xoffset = display.yoffset = 0;
+-  display.bits_per_pixel = 16;
++  display.bits_per_pixel = 8;
+   display.red.length = display.blue.length = 5;
+   display.green.length = 6;
+   
+@@ -201,8 +224,15 @@
+ 
+   fputs( "\x1B[H\x1B[J", stdout );	/* clear tty */
+   memset( gm, 0, display.xres_virtual * display.yres_virtual * 2 );
++  cmap.start = 0;
++  cmap.len = 16;
++  cmap.red = zx_red;
++  cmap.green = zx_green;
++  cmap.blue = zx_blue;
++  cmap.transp = transp;
+ 
+-  if( ioctl( fb_fd, FBIOPUT_VSCREENINFO, &display ) ) {
++  if( ioctl( fb_fd, FBIOPUT_VSCREENINFO, &display ) ||
++      ioctl( fb_fd, FBIOPUTCMAP, &cmap)) {
+     free( image ); munmap( gm, fixed.smem_len );
+     return 1;
+   }
+@@ -263,14 +293,14 @@
+     for( y = start; y < start + height; y++ )
+     {
+       int i;
+-      libspectrum_word *point;
++      libspectrum_byte *point;
+ 
+       if( hires ) {
+ 
+ 	for( i = 0, point = gm + y * display.xres_virtual + x;
+ 	     i < width;
+ 	     i++, point++ )
+-	  *point = colours[display_image[y][x+i]];
++	*point = display_image[y][x+i];
+ 
+       } else {
+ 
+@@ -279,7 +309,7 @@
+ 	     i++, point += 2 )
+ 	  *  point       = *( point +     display.xres_virtual ) =
+ 	  *( point + 1 ) = *( point + 1 + display.xres_virtual ) = 
+-	    colours[display_image[y][x+i]];
++	    display_image[y][x+i];
+ 
+       }
+     }
+@@ -296,14 +326,14 @@
+ 	for ( i = 0, point = gm + y * display.xres_virtual + x;
+ 	      i < width;
+ 	      i++, point++ )
+-	  *point = colours[display_image[y*2][x+i]];
++	  *point = display_image[y*2][x+i];
+ 
+       } else {
+ 
+ 	for( i = 0, point = gm + 2 * y * display.xres_virtual + x * 2;
+ 	     i < width;
+ 	     i++, point+=2 )
+-	  *point = *(point+1) = colours[display_image[y][x+i]];
++	  *point = *(point+1) = display_image[y][x+i];
+ 
+       }
+     }
+@@ -318,7 +348,7 @@
+       for( i = 0, point = gm + y * display.xres_virtual + x;
+ 	   i < width;
+ 	   i++, point++ )
+-        *point = colours[display_image[y][x+i]];
++         *point = display_image[y][x+i];
+ 
+     }
+     break;
+@@ -338,7 +368,10 @@
+ fbdisplay_end( void )
+ {
+   if( fb_fd != -1 ) {
+-    if( got_orig_display ) ioctl( fb_fd, FBIOPUT_VSCREENINFO, &orig_display );
++    if( got_orig_display ) {
++    	ioctl( fb_fd, FBIOPUTCMAP, &orig_cmap);
++    	ioctl( fb_fd, FBIOPUT_VSCREENINFO, &orig_display );
++    }
+     close( fb_fd );
+     fb_fd = -1;
+ 
================================================================


More information about the pld-cvs-commit mailing list