summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-09-01 19:31:58 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-09-01 19:31:58 +0100
commitfdb9a42eff665d848e443386740da8e5dcdf74b1 (patch)
tree1de7cbcced257d3490cb98b02b8fed323fe8a988 /amiga
parente0198789ae1dcadbb8423478d165de60077517dc (diff)
downloadnetsurf-fdb9a42eff665d848e443386740da8e5dcdf74b1.tar.gz
netsurf-fdb9a42eff665d848e443386740da8e5dcdf74b1.tar.bz2
Don't use P96 on gfx.lib v54+ systems
Diffstat (limited to 'amiga')
-rw-r--r--amiga/libs.c6
-rw-r--r--amiga/rtg.c25
2 files changed, 20 insertions, 11 deletions
diff --git a/amiga/libs.c b/amiga/libs.c
index c20147a88..cac028dba 100644
--- a/amiga/libs.c
+++ b/amiga/libs.c
@@ -27,6 +27,8 @@
#include <proto/intuition.h>
#include <proto/utility.h>
+#include <graphics/gfxbase.h> /* Needed for v54 version check */
+
#ifndef __amigaos4__
/* OS3 needs these for the XXXX_GetClass() functions */
#include <proto/arexx.h>
@@ -216,7 +218,8 @@ bool ami_libs_open(void)
/*\todo This is down here as we need to check the graphics.library version
* before opening. If it is sufficiently new enough we can avoid using P96
*/
- AMINS_LIB_OPEN("Picasso96API.library", 0, P96, "main", 1, false)
+ if(GfxBase->LibNode.lib_Version >= 54)
+ AMINS_LIB_OPEN("Picasso96API.library", 0, P96, "main", 1, false)
/* NB: timer.device is opened in schedule.c (ultimately by the scheduler process).
* The library base and interface are obtained there, rather than here, due to
@@ -235,7 +238,6 @@ bool ami_libs_open(void)
* NB: the last argument should be "true" only if the class also has
* library functions we use.
*/
-
AMINS_CLASS_OPEN("arexx.class", 44, ARexx, AREXX, false)
AMINS_CLASS_OPEN("images/bevel.image", 44, Bevel, BEVEL, false)
AMINS_CLASS_OPEN("images/bitmap.image", 44, BitMap, BITMAP, false)
diff --git a/amiga/rtg.c b/amiga/rtg.c
index 2f4b9e1d1..3f457890e 100644
--- a/amiga/rtg.c
+++ b/amiga/rtg.c
@@ -47,19 +47,26 @@ void ami_rtg_freebitmap(struct BitMap *bm)
void ami_rtg_writepixelarray(UBYTE *pixdata, struct BitMap *bm,
ULONG width, ULONG height, ULONG bpr, ULONG format)
{
- struct RenderInfo ri;
struct RastPort trp;
- /* This requires P96 currently */
- if(P96Base == NULL) return;
-
- ri.Memory = pixdata;
- ri.BytesPerRow = bpr;
- ri.RGBFormat = format;
-
InitRastPort(&trp);
trp.BitMap = bm;
- p96WritePixelArray((struct RenderInfo *)&ri, 0, 0, &trp, 0, 0, width, height);
+ /* This requires P96 or gfx.lib v54 currently */
+ if(P96Base == NULL) {
+#ifdef __amigaos4__
+ if(GfxBase->LibNode.lib_Version >= 54) {
+ WritePixelArray(pixdata, 0, 0, bpr, format, &trp, 0, 0, width, height);
+ }
+#endif
+ } else {
+ struct RenderInfo ri;
+
+ ri.Memory = pixdata;
+ ri.BytesPerRow = bpr;
+ ri.RGBFormat = format;
+
+ p96WritePixelArray((struct RenderInfo *)&ri, 0, 0, &trp, 0, 0, width, height);
+ }
}