From fdb9a42eff665d848e443386740da8e5dcdf74b1 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Tue, 1 Sep 2015 19:31:58 +0100 Subject: [PATCH] Don't use P96 on gfx.lib v54+ systems --- amiga/libs.c | 6 ++++-- amiga/rtg.c | 25 ++++++++++++++++--------- 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 #include +#include /* Needed for v54 version check */ + #ifndef __amigaos4__ /* OS3 needs these for the XXXX_GetClass() functions */ #include @@ -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); + } }