gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp ...


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp ...
Date: Wed, 02 Apr 2008 12:24:19 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   08/04/02 12:24:19

Modified files:
        .              : ChangeLog 
        backend        : render_handler_agg.cpp 
        gui            : fb.cpp 

Log message:
        backend/render_handler_agg.cpp: Only swap pixel format bits on big 
endian hosts for 24 and 32 bpp modes (see bug #22799)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6162&r2=1.6163
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.133&r2=1.134
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/fb.cpp?cvsroot=gnash&r1=1.51&r2=1.52

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.6162
retrieving revision 1.6163
diff -u -b -r1.6162 -r1.6163
--- ChangeLog   2 Apr 2008 10:57:52 -0000       1.6162
+++ ChangeLog   2 Apr 2008 12:24:17 -0000       1.6163
@@ -1,3 +1,8 @@
+2008-04-02 Udo Giacomozzi <address@hidden>
+
+       * backend/render_handler_agg.cpp: Only swap pixel format bits on big
+         endian hosts for 24 and 32 bpp modes (see bug #22799)
+         
 2008-04-01 Sandro Santilli <address@hidden>
 
        * testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp: 

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -b -r1.133 -r1.134
--- backend/render_handler_agg.cpp      12 Mar 2008 11:18:51 -0000      1.133
+++ backend/render_handler_agg.cpp      2 Apr 2008 12:24:18 -0000       1.134
@@ -2151,11 +2151,16 @@
   unsigned int bofs, unsigned int bsize,
   unsigned int bpp) {
   
-  if (!is_little_endian_host()) {
+  if (!is_little_endian_host() && (bpp>=24)) {
   
     // Swap bits for big endian hosts, because the following tests assume
     // little endians. The pixel format string matches the bytes in memory.
     
+    // This applies for 24 bpp and 32 bpp modes only because AGG uses arrays
+    // in the premultiply() implementation for these modes. 16 bpp modes 
+    // instead use bit shifting, which is transparent to host endianess.
+    // See bug #22799.
+    
     rofs = bpp - rofs - rsize;
     gofs = bpp - gofs - gsize;
     bofs = bpp - bofs - bsize; 

Index: gui/fb.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/fb.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- gui/fb.cpp  25 Mar 2008 08:58:25 -0000      1.51
+++ gui/fb.cpp  2 Apr 2008 12:24:19 -0000       1.52
@@ -327,11 +327,6 @@
     var_screeninfo.blue.length);
   log_debug("Total bits per pixel: %d", var_screeninfo.bits_per_pixel);
   
-  /* NOTE: agg_detect_pixel_format() assumes bit positions in host byte order.
-  I don't know if this matches the information provided by var_screeninfo, so
-  you know what to do when colors look wrong (or pixel format can't be 
detected)
-  on big-endian machines! - Udo */   
-  
   const char* pixelformat = agg_detect_pixel_format(
     var_screeninfo.red.offset, var_screeninfo.red.length,
     var_screeninfo.green.offset, var_screeninfo.green.length,
@@ -342,7 +337,7 @@
   if (pixelformat) {    
     agg_handler = create_render_handler_agg(pixelformat);      
   } else {
-    fatal_error("The pixel format of your framebuffer is not supported.");
+    fatal_error("The pixel format of your framebuffer could not be detected.");
     return false;
   }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]