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;
|
*pcbl = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CallbackFuncsRec default_cbfuncs =
|
|
||||||
{
|
|
||||||
_AddCallback,
|
|
||||||
_DeleteCallback,
|
|
||||||
_CallCallbacks,
|
|
||||||
_DeleteCallbackList
|
|
||||||
};
|
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs)
|
CreateCallbackList(CallbackListPtr *pcbl)
|
||||||
{
|
{
|
||||||
CallbackListPtr cbl;
|
CallbackListPtr cbl;
|
||||||
int i;
|
int i;
|
||||||
|
@ -833,7 +825,6 @@ CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs)
|
||||||
if (!pcbl) return FALSE;
|
if (!pcbl) return FALSE;
|
||||||
cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec));
|
cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec));
|
||||||
if (!cbl) return FALSE;
|
if (!cbl) return FALSE;
|
||||||
cbl->funcs = cbfuncs ? *cbfuncs : default_cbfuncs;
|
|
||||||
cbl->inCallback = 0;
|
cbl->inCallback = 0;
|
||||||
cbl->deleted = FALSE;
|
cbl->deleted = FALSE;
|
||||||
cbl->numDeleted = 0;
|
cbl->numDeleted = 0;
|
||||||
|
@ -864,31 +855,31 @@ AddCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
|
||||||
if (!pcbl) return FALSE;
|
if (!pcbl) return FALSE;
|
||||||
if (!*pcbl)
|
if (!*pcbl)
|
||||||
{ /* list hasn't been created yet; go create it */
|
{ /* list hasn't been created yet; go create it */
|
||||||
if (!CreateCallbackList(pcbl, (CallbackFuncsPtr)NULL))
|
if (!CreateCallbackList(pcbl))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return ((*(*pcbl)->funcs.AddCallback) (pcbl, callback, data));
|
return _AddCallback(pcbl, callback, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
_X_EXPORT Bool
|
_X_EXPORT Bool
|
||||||
DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
|
DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
|
||||||
{
|
{
|
||||||
if (!pcbl || !*pcbl) return FALSE;
|
if (!pcbl || !*pcbl) return FALSE;
|
||||||
return ((*(*pcbl)->funcs.DeleteCallback) (pcbl, callback, data));
|
return _DeleteCallback(pcbl, callback, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CallCallbacks(CallbackListPtr *pcbl, pointer call_data)
|
CallCallbacks(CallbackListPtr *pcbl, pointer call_data)
|
||||||
{
|
{
|
||||||
if (!pcbl || !*pcbl) return;
|
if (!pcbl || !*pcbl) return;
|
||||||
(*(*pcbl)->funcs.CallCallbacks) (pcbl, call_data);
|
_CallCallbacks(pcbl, call_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DeleteCallbackList(CallbackListPtr *pcbl)
|
DeleteCallbackList(CallbackListPtr *pcbl)
|
||||||
{
|
{
|
||||||
if (!pcbl || !*pcbl) return;
|
if (!pcbl || !*pcbl) return;
|
||||||
(*(*pcbl)->funcs.DeleteCallbackList) (pcbl);
|
_DeleteCallbackList(pcbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -498,25 +498,6 @@ typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
|
||||||
typedef void (*CallbackProcPtr) (
|
typedef void (*CallbackProcPtr) (
|
||||||
CallbackListPtr *, pointer, pointer);
|
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(
|
extern Bool AddCallback(
|
||||||
CallbackListPtr * /*pcbl*/,
|
CallbackListPtr * /*pcbl*/,
|
||||||
CallbackProcPtr /*callback*/,
|
CallbackProcPtr /*callback*/,
|
||||||
|
|
|
@ -187,7 +187,6 @@ typedef struct _CallbackRec {
|
||||||
} CallbackRec, *CallbackPtr;
|
} CallbackRec, *CallbackPtr;
|
||||||
|
|
||||||
typedef struct _CallbackList {
|
typedef struct _CallbackList {
|
||||||
CallbackFuncsRec funcs;
|
|
||||||
int inCallback;
|
int inCallback;
|
||||||
Bool deleted;
|
Bool deleted;
|
||||||
int numDeleted;
|
int numDeleted;
|
||||||
|
|
Loading…
Reference in New Issue