From d76836579be3f9eb96115fc55f56d79215257f42 Mon Sep 17 00:00:00 2001 From: NicJA Date: Mon, 7 Oct 2013 14:41:07 +0000 Subject: [PATCH] store the pre-alphacomposit hook and allow it to be queried. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@48225 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- rom/intuition/intuition_intern.h | 1 + rom/intuition/openscreen.c | 7 +++++++ rom/intuition/screenclass.c | 12 ++++++++++++ 3 files changed, 20 insertions(+) diff --git a/rom/intuition/intuition_intern.h b/rom/intuition/intuition_intern.h index 766e36b9f9..2f4be3309a 100644 --- a/rom/intuition/intuition_intern.h +++ b/rom/intuition/intuition_intern.h @@ -720,6 +720,7 @@ struct IntScreen Object *depthgadget; UWORD SpecialFlags; struct Layer *rootLayer; + struct Hook *preAlphaCompHook; #if !USE_NEWDISPLAYBEEP ULONG DisplayBeepColor0[3]; struct Window *DisplayBeepWindow; diff --git a/rom/intuition/openscreen.c b/rom/intuition/openscreen.c index a2f8275a6a..0c01e67dd8 100644 --- a/rom/intuition/openscreen.c +++ b/rom/intuition/openscreen.c @@ -176,6 +176,7 @@ static const char THIS_FILE[] = __FILE__; ULONG requesteddepth = 1; BOOL draggable = TRUE; ULONG compflags = COMPF_ABOVE; // Default to AmigaOS like behaviour. + struct Hook *compalphahook = NULL; struct TagItem modetags[] = { @@ -486,6 +487,11 @@ static const char THIS_FILE[] = __FILE__; { case SA_CompositingFlags: compflags = tag->ti_Data; + dprintf("OpenScreen: SA_CompositingFlags 0x%p\n", compflags); + break; + case SA_AlphaPreCompositHook: + compalphahook = (struct Hook *)tag->ti_Data; + dprintf("OpenScreen: SA_AlphaPreCompositHook 0x%p\n", compalphahook); break; case SA_Left: DEBUG_OPENSCREEN(dprintf("OpenScreen: SA_Left %ld\n",tag->ti_Data)); @@ -1103,6 +1109,7 @@ static const char THIS_FILE[] = __FILE__; success = TRUE; #ifdef __AROS__ /* AROS: Get HIDD composition flags */ screen->SpecialFlags = ((compflags & (dimensions.reserved[0] >> 16)) | (dimensions.reserved[0] & 0xFFFF)) << 8; + screen->preAlphaCompHook = compalphahook; if (draggable) screen->SpecialFlags |= SF_Draggable; #else diff --git a/rom/intuition/screenclass.c b/rom/intuition/screenclass.c index f4b845e799..627059c421 100644 --- a/rom/intuition/screenclass.c +++ b/rom/intuition/screenclass.c @@ -835,6 +835,11 @@ IPTR ScreenClass__OM_GET(Class *cl, Object *o, struct opGet *msg) *msg->opg_Storage = (IPTR)(screen->SpecialFlags >> 8); break; + case SA_AlphaPreCompositHook: + bug("[ScreenClass] %s: SA_AlphaPreCompositHook\n", __PRETTY_FUNCTION__); + *msg->opg_Storage = (IPTR)screen->preAlphaCompHook; + break; + case SA_OpacitySupport: /* These are reserved in AROS */ case SA_SourceAlphaSupport: case SA_ScreenbarSignal: @@ -907,6 +912,13 @@ IPTR ScreenClass__OM_SET(Class *cl, Object *o, struct opSet *msg) gammaset = TRUE; } break; + + case SA_AlphaPreCompositHook: + { + screen->preAlphaCompHook = (struct Hook *)tag->ti_Data; + bug("[ScreenClass] %s: SA_AlphaPreCompositHook @ 0x%p\n", __PRETTY_FUNCTION__, screen->preAlphaCompHook); + } + break; } } -- 2.11.4.GIT