aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-02-12 12:36:37 -0700
committerJon Ashburn <jon@lunarg.com>2015-02-12 16:13:09 -0700
commiteb876e67f784f6ea6e1837bbf777fb17ce8382fb (patch)
treeba3c701d7f48265bbaaed02945b4e6a22c6fa23b
parent69201fdcf0c6da64f586af254e2ce818768628f2 (diff)
downloadusermoji-eb876e67f784f6ea6e1837bbf777fb17ce8382fb.tar.xz
icd: Fix removing callback from global list
Callback wasn't getting actually removed from the list.
-rw-r--r--icd/common/icd-log.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/icd/common/icd-log.c b/icd/common/icd-log.c
index f900b19d..3b930511 100644
--- a/icd/common/icd-log.c
+++ b/icd/common/icd-log.c
@@ -89,7 +89,7 @@ XGL_RESULT icd_logger_add_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func,
XGL_RESULT icd_logger_remove_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func)
{
- struct icd_logger_callback *cb = icd_logger.callbacks;
+ struct icd_logger_callback *cb = icd_logger.callbacks, *prev = NULL;
bool found = false;
/* remove all matches */
@@ -97,10 +97,16 @@ XGL_RESULT icd_logger_remove_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func)
struct icd_logger_callback *next = cb->next;
if (cb->func == func) {
+ if (prev == NULL)
+ icd_logger.callbacks = next;
+ else
+ prev->next = next;
free(cb);
found = true;
}
-
+ else {
+ prev = cb;
+ }
cb = next;
}