Rip out useless indirection in the callback list management.
This commit is contained in:
parent
0d492b2166
commit
aa5216e897
|
@ -816,16 +816,8 @@ _DeleteCallbackList(
|
|||
*pcbl = NULL;
|
||||
}
|
||||
|
||||
static CallbackFuncsRec default_cbfuncs =
|
||||
{
|
||||
_AddCallback,
|
||||
_DeleteCallback,
|
||||
_CallCallbacks,
|
||||
_DeleteCallbackList
|
||||
};
|
||||
|
||||
static Bool
|
||||
CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs)
|
||||
CreateCallbackList(CallbackListPtr *pcbl)
|
||||
{
|
||||
CallbackListPtr cbl;
|
||||
int i;
|
||||
|
@ -833,7 +825,6 @@ CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs)
|
|||
if (!pcbl) return FALSE;
|
||||
cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec));
|
||||
if (!cbl) return FALSE;
|
||||
cbl->funcs = cbfuncs ? *cbfuncs : default_cbfuncs;
|
||||
cbl->inCallback = 0;
|
||||
cbl->deleted = FALSE;
|
||||
cbl->numDeleted = 0;
|
||||
|
@ -864,31 +855,31 @@ AddCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
|
|||
if (!pcbl) return FALSE;
|
||||
if (!*pcbl)
|
||||
{ /* list hasn't been created yet; go create it */
|
||||
if (!CreateCallbackList(pcbl, (CallbackFuncsPtr)NULL))
|
||||
if (!CreateCallbackList(pcbl))
|
||||
return FALSE;
|
||||
}
|
||||
return ((*(*pcbl)->funcs.AddCallback) (pcbl, callback, data));
|
||||
return _AddCallback(pcbl, callback, data);
|
||||
}
|
||||
|
||||
_X_EXPORT Bool
|
||||
DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
|
||||
{
|
||||
if (!pcbl || !*pcbl) return FALSE;
|
||||
return ((*(*pcbl)->funcs.DeleteCallback) (pcbl, callback, data));
|
||||
return _DeleteCallback(pcbl, callback, data);
|
||||
}
|
||||
|
||||
void
|
||||
CallCallbacks(CallbackListPtr *pcbl, pointer call_data)
|
||||
{
|
||||
if (!pcbl || !*pcbl) return;
|
||||
(*(*pcbl)->funcs.CallCallbacks) (pcbl, call_data);
|
||||
_CallCallbacks(pcbl, call_data);
|
||||
}
|
||||
|
||||
void
|
||||
DeleteCallbackList(CallbackListPtr *pcbl)
|
||||
{
|
||||
if (!pcbl || !*pcbl) return;
|
||||
(*(*pcbl)->funcs.DeleteCallbackList) (pcbl);
|
||||
_DeleteCallbackList(pcbl);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -498,25 +498,6 @@ typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
|
|||
typedef void (*CallbackProcPtr) (
|
||||
CallbackListPtr *, pointer, pointer);
|
||||
|
||||
typedef Bool (*AddCallbackProcPtr) (
|
||||
CallbackListPtr *, CallbackProcPtr, pointer);
|
||||
|
||||
typedef Bool (*DeleteCallbackProcPtr) (
|
||||
CallbackListPtr *, CallbackProcPtr, pointer);
|
||||
|
||||
typedef void (*CallCallbacksProcPtr) (
|
||||
CallbackListPtr *, pointer);
|
||||
|
||||
typedef void (*DeleteCallbackListProcPtr) (
|
||||
CallbackListPtr *);
|
||||
|
||||
typedef struct _CallbackProcs {
|
||||
AddCallbackProcPtr AddCallback;
|
||||
DeleteCallbackProcPtr DeleteCallback;
|
||||
CallCallbacksProcPtr CallCallbacks;
|
||||
DeleteCallbackListProcPtr DeleteCallbackList;
|
||||
} CallbackFuncsRec, *CallbackFuncsPtr;
|
||||
|
||||
extern Bool AddCallback(
|
||||
CallbackListPtr * /*pcbl*/,
|
||||
CallbackProcPtr /*callback*/,
|
||||
|
|
|
@ -187,7 +187,6 @@ typedef struct _CallbackRec {
|
|||
} CallbackRec, *CallbackPtr;
|
||||
|
||||
typedef struct _CallbackList {
|
||||
CallbackFuncsRec funcs;
|
||||
int inCallback;
|
||||
Bool deleted;
|
||||
int numDeleted;
|
||||
|
|
Loading…
Reference in New Issue
Block a user