summaryrefslogtreecommitdiff
path: root/amiga/bitmap.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-02-02 00:32:34 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-02-02 00:32:34 +0000
commit21f142a7fa12cc89420ac9439c83f06af249dc39 (patch)
tree1965faabb33362a23303c5446914fd18076f293a /amiga/bitmap.c
parent0aa30619293309d4bcab3cc0419005fd2e772618 (diff)
downloadnetsurf-21f142a7fa12cc89420ac9439c83f06af249dc39.tar.gz
netsurf-21f142a7fa12cc89420ac9439c83f06af249dc39.tar.bz2
Friend the screen bitmap for <= 8-bit modes, but only on OS3 as this causes OS4 to freeze
Diffstat (limited to 'amiga/bitmap.c')
-rw-r--r--amiga/bitmap.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index 95b5f71d6..aabb6a3be 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -292,6 +292,16 @@ void ami_bitmap_argb_to_rgba(struct bitmap *bm)
data[i] = (data[i] << 8) | (data[i] >> 24);
}
}
+
+void ami_bitmap_rgba_to_argb(struct bitmap *bm)
+{
+ if(bm == NULL) return;
+
+ ULONG *data = (ULONG *)bitmap_get_buffer(bm);
+ for(int i = 0; i < ((bitmap_get_rowstride(bm) / sizeof(ULONG)) * bitmap_get_height(bm)); i++) {
+ data[i] = (data[i] >> 8) | (data[i] << 24);
+ }
+}
#endif
#ifdef BITMAP_DUMP
@@ -345,6 +355,14 @@ Object *ami_datatype_object_from_bitmap(struct bitmap *bitmap)
IDoMethod(dto, PDTM_WRITEPIXELARRAY, bitmap_get_buffer(bitmap),
PBPAFMT_RGBA, bitmap_get_rowstride(bitmap), 0, 0,
bitmap_get_width(bitmap), bitmap_get_height(bitmap));
+#if 0
+ ami_bitmap_rgba_to_argb(bitmap);
+ IDoMethod(dto, PDTM_WRITEPIXELARRAY, bitmap_get_buffer(bitmap),
+ PBPAFMT_ARGB, bitmap_get_rowstride(bitmap), 0, 0,
+ bitmap_get_width(bitmap), bitmap_get_height(bitmap));
+ ami_bitmap_argb_to_rgb(bitmap);
+#endif
+
}
return dto;