From 9b1108f70ae57a9b4e0f9d3506dd695a8efda595 Mon Sep 17 00:00:00 2001 From: NicJA Date: Mon, 7 Oct 2013 14:43:36 +0000 Subject: [PATCH] query a screens pre-alphacomposit processing hook and call it as appropriate. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@48226 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/devs/monitors/Compositor/compositor_intern.h | 1 + workbench/devs/monitors/Compositor/compositorclass.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/workbench/devs/monitors/Compositor/compositor_intern.h b/workbench/devs/monitors/Compositor/compositor_intern.h index ec056f7e52..09920726b2 100644 --- a/workbench/devs/monitors/Compositor/compositor_intern.h +++ b/workbench/devs/monitors/Compositor/compositor_intern.h @@ -22,6 +22,7 @@ struct StackBitMapNode SIPTR leftedge; /* Offset */ SIPTR topedge; IPTR sbmflags; + struct Hook *prealphacomphook; }; // sbmflags bits 0 to 3 are reserved for the normal compositing flags. diff --git a/workbench/devs/monitors/Compositor/compositorclass.c b/workbench/devs/monitors/Compositor/compositorclass.c index 816ff302c8..5f0350d749 100644 --- a/workbench/devs/monitors/Compositor/compositorclass.c +++ b/workbench/devs/monitors/Compositor/compositorclass.c @@ -545,6 +545,15 @@ static VOID HIDDCompositorRedrawAlphaRegions(struct HIDDCompositorData *compdata { DREDRAWSCR(bug("[Compositor:%s] Alpha-Region [%d, %d - %d, %d]\n", __PRETTY_FUNCTION__, _RECT(alpharect))); + if (n->prealphacomphook) + { + struct HIDD_BackFillHookMsg preprocessmsg; + preprocessmsg.bounds = &alpharect; + preprocessmsg.offsetx = 0; + preprocessmsg.offsety = 0; + CallHookPkt(n->prealphacomphook, renderTarget, &preprocessmsg); + } + HIDDCompositorRedrawBitmap(compdata, renderTarget, n, &alpharect); if (renderTarget == compdata->displaybitmap) HIDD_BM_UpdateRect(compdata->displaybitmap, @@ -1201,6 +1210,8 @@ OOP_Object *METHOD(Compositor, Hidd_Compositor, BitMapStackChanged) { UNLOCK_COMPOSITOR + DSTACK(bug("[Compositor] %s: No ViewPort specified\n", __PRETTY_FUNCTION__)); + /* Blank screen */ HIDDCompositorShowSingle(compdata, NULL); @@ -1242,6 +1253,11 @@ OOP_Object *METHOD(Compositor, Hidd_Compositor, BitMapStackChanged) GetAttr(SA_CompositingFlags, (Object *)bmScreen, &n->sbmflags); DSTACK(bug("[Compositor] %s: CompositingFlags %08x\n", __PRETTY_FUNCTION__, n->sbmflags)); n->sbmflags |= STACKNODEF_DISPLAYABLE; + if (n->sbmflags & COMPF_ALPHA) + { + GetAttr(SA_AlphaPreCompositHook, (Object *)bmScreen, (IPTR *)&n->prealphacomphook); + DSTACK(bug("[Compositor] %s: Pre-AlphaComposit Hook @ 0x%p\n", __PRETTY_FUNCTION__, n->prealphacomphook)); + } } if (n->sbmflags & COMPF_ALPHA) -- 2.11.4.GIT