add idnestcnt and tdnestcnt overrides. use atomic operations when appropriate
[AROS.git] / workbench / hidds / nouveau / compositor_intern.h
blob233b59abad10cc58117074c4ae9f94ce09962fa8
1 #ifndef _COMPOSITOR_INTERN_H
2 #define _COMPOSITOR_INTERN_H
3 /*
4 Copyright © 2010-2013, The AROS Development Team. All rights reserved.
5 $Id$
6 */
8 #include "compositor.h"
10 #include <exec/lists.h>
12 struct _Rectangle
14 WORD MinX;
15 WORD MinY;
16 WORD MaxX;
17 WORD MaxY;
20 struct StackBitMapNode
22 struct Node n;
23 OOP_Object * bm;
24 struct _Rectangle screenvisiblerect;
25 BOOL isscreenvisible;
26 LONG displayedwidth;
27 LONG displayedheight;
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 */
54 /* Attr bases */
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 */