use the gfx hidd attribute(s) for accessing the gfx drivers memory details. move...
[AROS.git] / workbench / system / SysMon / video.c
blob81e458ae48c798ce1a428724834bf276253b08df
1 /*
2 Copyright © 1995-2019, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include "sysmon_intern.h"
8 #include <clib/alib_protos.h>
10 /* Video information */
11 #include <proto/graphics.h>
12 #include <proto/oop.h>
13 #include <hidd/gfx.h>
14 OOP_Object * gfxhidd;
15 #undef HiddBitMapAttrBase
16 OOP_AttrBase HiddGfxAttrBase;
17 OOP_AttrBase HiddBitMapAttrBase;
18 struct Library * OOPBase = NULL;
20 /* Videofunctions */
21 static BOOL InitVideo(struct SysMonData *smdata)
23 struct OOP_ABDescr attrbases[] =
25 { IID_Hidd_Gfx, &HiddGfxAttrBase },
26 { IID_Hidd_BitMap, &HiddBitMapAttrBase },
27 { NULL, NULL }
29 struct Screen * wbscreen;
31 OOPBase = OpenLibrary("oop.library", 0L);
33 if (!OOPBase)
34 return FALSE;
36 if (!OOP_ObtainAttrBases(attrbases))
37 return FALSE;
39 wbscreen = LockPubScreen(NULL);
40 OOP_GetAttr(HIDD_BM_OBJ(wbscreen->RastPort.BitMap), aHidd_BitMap_GfxHidd, (APTR)&gfxhidd);
41 bug("[SysMon:Video] %s: gfxhidd @ 0x%p\n", __func__, gfxhidd);
42 UnlockPubScreen(NULL, wbscreen);
44 return TRUE;
47 static VOID DeInitVideo(struct SysMonData *smdata)
49 OOP_ReleaseAttrBase(IID_Hidd_BitMap);
51 CloseLibrary(OOPBase);
54 VOID UpdateVideoStaticInformation(struct SysMonData * smdata)
56 TEXT buffer[64] = {0};
57 struct TagItem memTags[] =
59 {vHidd_Gfx_MemTotal, 0 },
60 {vHidd_Gfx_MemAddressableTotal, 0 },
61 {TAG_DONE, 0 }
64 bug("[SysMon:Video] %s: memTags @ 0x%p\n", __func__, memTags);
65 OOP_GetAttr(gfxhidd, aHidd_Gfx_MemoryAttribs, (IPTR *)memTags);
67 __sprintf(buffer, "%ld kB", (ULONG)(memTags[0].ti_Data / 1024));
68 set(smdata->memorysize[MEMORY_VMEM], MUIA_Text_Contents, buffer);
69 __sprintf(buffer, "%ld kB", (ULONG)(memTags[1].ti_Data / 1024));
70 set(smdata->memorysize[MEMORY_VMEMWINDOW], MUIA_Text_Contents, buffer);
73 VOID UpdateVideoInformation(struct SysMonData * smdata)
75 TEXT buffer[64] = {0};
76 struct TagItem memTags[] =
78 {vHidd_Gfx_MemFree, 0 },
79 {vHidd_Gfx_MemAddressableFree, 0 },
80 {TAG_DONE, 0 }
83 bug("[SysMon:Video] %s: memTags @ 0x%p\n", __func__, memTags);
84 OOP_GetAttr(gfxhidd, aHidd_Gfx_MemoryAttribs, (IPTR *)memTags);
86 __sprintf(buffer, "%ld kB", (ULONG)(memTags[0].ti_Data / 1024));
87 set(smdata->memoryfree[MEMORY_VMEM], MUIA_Text_Contents, buffer);
88 __sprintf(buffer, "%ld kB", (ULONG)(memTags[1].ti_Data / 1024));
89 set(smdata->memoryfree[MEMORY_VMEMWINDOW], MUIA_Text_Contents, buffer);
92 struct SysMonModule videomodule =
94 .Init = InitVideo,
95 .DeInit = DeInitVideo,