2 Copyright © 2002-2003, The AROS Development Team. All rights reserved.
8 #include <proto/muimaster.h>
9 #include <proto/intuition.h>
10 #include <proto/exec.h>
12 #include "muimaster_intern.h"
13 #include "support_classes.h"
16 /*****************************************************************************
19 AROS_LH1(VOID
, MUI_FreeClass
,
22 AROS_LHA(Class
*, cl
, A0
),
25 struct Library
*, MUIMasterBase
, 14, MUIMaster
)
28 Frees a class returned by MUI_GetClass().
31 cl - The pointer to the class.
34 VOID - The function always succeed: if the class can't be
37 This function is obsolete, DO NOT use it.
44 MUI_GetClass(), MUI_CreateCustomClass(), MUI_DeleteCustomClass()
50 *****************************************************************************/
53 AROS_LIBBASE_EXT_DECL(struct MUIMasterBase
*, MUIMasterBase
)
55 ObtainSemaphore(&MUIMB(MUIMasterBase
)->ZuneSemaphore
);
57 /* CLF_INLIST tells us that this class is a builtin class */
58 if (cl
->cl_Flags
& CLF_INLIST
)
60 Class
*super
= cl
->cl_Super
;
62 if (--cl
->cl_Dispatcher
.h_Data
== 0)
64 ZUNE_RemoveBuiltinClass(cl
, MUIMasterBase
);
68 CloseLibrary(MUIMasterBase
);
69 if (strcmp(super
->cl_ID
, ROOTCLASS
) != 0)
74 /* Re-add the class to the list since freeing it failed */
75 ZUNE_AddBuiltinClass(cl
, MUIMasterBase
);
77 /* And also increase the reference counter again */
78 cl
->cl_Dispatcher
.h_Data
++;
82 ReleaseSemaphore(&MUIMB(MUIMasterBase
)->ZuneSemaphore
);
86 ReleaseSemaphore(&MUIMB(MUIMasterBase
)->ZuneSemaphore
);
88 CloseLibrary((struct Library
*)cl
->cl_Dispatcher
.h_Data
);
93 } /* MUIA_FreeClass */