[Top][All Lists]
[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;
}
- [Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp ...,
Udo Giacomozzi <=