1 #ifndef _COMPOSITOR_INTERN_H
2 #define _COMPOSITOR_INTERN_H
4 Copyright © 2010-2017, The AROS Development Team. All rights reserved.
8 #include "compositor.h"
10 #include <exec/lists.h>
20 struct StackBitMapNode
24 struct _Rectangle screenvisiblerect
;
30 struct HIDDCompositorData
32 /* Bitmap to which all screen bitmaps are composited. Height/Width always
33 matches visible mode */
34 OOP_Object
*compositedbitmap
;
36 /* Pointer to actuall screen bitmap - either compositedbitmap or topbitmap.
37 Can only be set in HIDDCompositorToggleCompositing */
38 OOP_Object
*screenbitmap
;
40 /* Pointer to top bitmap on stack */
41 OOP_Object
*topbitmap
;
43 HIDDT_ModeID screenmodeid
; /* ModeID of currently visible mode */
44 struct _Rectangle screenrect
; /* Dimensions of currently visible mode */
45 BOOL modeschanged
; /* TRUE if new top bitmap has different mode than current screenmodeid */
47 struct List bitmapstack
;
49 struct SignalSemaphore semaphore
;
51 OOP_Object
*gfx
; /* GFX driver object */
52 OOP_Object
*gc
; /* GC object used for drawing operations */
55 OOP_AttrBase pixFmtAttrBase
;
56 OOP_AttrBase syncAttrBase
;
57 OOP_AttrBase bitMapAttrBase
;
58 OOP_AttrBase gcAttrBase
;
59 OOP_AttrBase compositorAttrBase
;
62 #define METHOD(base, id, name) \
63 base ## __ ## id ## __ ## name (OOP_Class *cl, OOP_Object *o, struct p ## id ## _ ## name *msg)
65 #define BASE(lib) ((LIBBASETYPEPTR)(lib))
67 #define SD(cl) (&BASE(cl->UserData)->sd)
69 #define LOCK_COMPOSITOR_READ { ObtainSemaphoreShared(&compdata->semaphore); }
70 #define LOCK_COMPOSITOR_WRITE { ObtainSemaphore(&compdata->semaphore); }
71 #define UNLOCK_COMPOSITOR { ReleaseSemaphore(&compdata->semaphore); }
73 #endif /* _COMPOSITOR_INTERN_H */