Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion dix/callback_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@
void InitCallbackManager(void);
void DeleteCallbackManager(void);

typedef struct _CallbackRec {
CallbackProcPtr proc;
void *data;
Bool deleted;
struct _CallbackRec *next;
} CallbackRec, *CallbackPtr;

typedef struct _CallbackList {
int inCallback;
Bool deleted;
int numDeleted;
CallbackPtr list;
} CallbackListRec;

/*
* @brief delete a callback list
*
Expand All @@ -19,7 +33,6 @@ void DeleteCallbackManager(void);
*
* @param pcbl pointer to the list head (CallbackListPtr)
*/
_X_EXPORT /* only for GLX module */
void DeleteCallbackList(CallbackListPtr *pcbl);

#endif /* _XSERVER_CALLBACK_PRIV_H */
14 changes: 0 additions & 14 deletions dix/dixutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -652,20 +652,6 @@ ClientIsAsleep(ClientPtr client)

/* ===== Private Procedures ===== */

typedef struct _CallbackRec {
CallbackProcPtr proc;
void *data;
Bool deleted;
struct _CallbackRec *next;
} CallbackRec, *CallbackPtr;

typedef struct _CallbackList {
int inCallback;
Bool deleted;
int numDeleted;
CallbackPtr list;
} CallbackListRec;

static size_t numCallbackListsToCleanup = 0;
static CallbackListPtr **listsToCleanup = NULL;

Expand Down
9 changes: 7 additions & 2 deletions glx/vndext.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ Bool noGlxExtension = FALSE;

ExtensionEntry *GlxExtensionEntry;
int GlxErrorBase = 0;
static CallbackListPtr vndInitCallbackListPtr = NULL;
static CallbackListRec vndInitCallbackList;
static CallbackListPtr vndInitCallbackListPtr = &vndInitCallbackList;
static DevPrivateKeyRec glvXGLVScreenPrivKey;
static DevPrivateKeyRec glvXGLVClientPrivKey;

Expand Down Expand Up @@ -199,7 +200,11 @@ GLXReset(ExtensionEntry *extEntry)
GlxMappingReset();

if ((dispatchException & DE_TERMINATE) == DE_TERMINATE) {
DeleteCallbackList(&vndInitCallbackListPtr);
while (vndInitCallbackList.list != NULL) {
CallbackPtr next = vndInitCallbackList.list->next;
free(vndInitCallbackList.list);
vndInitCallbackList.list = next;
}
}
}

Expand Down