From dddc5eac944746b766ac1009d2b7063cabab0d3d Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 8 Jun 2019 13:33:16 +0100 Subject: Update schedulers return codes The GTK and monkey frontends schedulers now return NSERROR_NOT_FOUND when a caller is using a negative schedule time to remove a callback. --- frontends/monkey/schedule.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'frontends/monkey/schedule.c') diff --git a/frontends/monkey/schedule.c b/frontends/monkey/schedule.c index 3d76997f4..9d3ab7af8 100644 --- a/frontends/monkey/schedule.c +++ b/frontends/monkey/schedule.c @@ -43,6 +43,7 @@ struct nscallback * * \param callback callback function * \param p user parameter, passed to callback function + * \return NSERROR_OK if callback found and removed else NSERROR_NOT_FOUND * * All scheduled callbacks matching both callback and p are removed. */ @@ -51,10 +52,11 @@ static nserror schedule_remove(void (*callback)(void *p), void *p) struct nscallback *cur_nscb; struct nscallback *prev_nscb; struct nscallback *unlnk_nscb; + bool removed = false; /* check there is something on the list to remove */ if (schedule_list == NULL) { - return NSERROR_OK; + return NSERROR_NOT_FOUND; } NSLOG(schedule, DEBUG, "removing %p, %p", callback, p); @@ -80,6 +82,7 @@ static nserror schedule_remove(void (*callback)(void *p), void *p) prev_nscb->next = cur_nscb; } free (unlnk_nscb); + removed = true; } else { /* move to next element */ prev_nscb = cur_nscb; @@ -87,6 +90,9 @@ static nserror schedule_remove(void (*callback)(void *p), void *p) } } + if (removed == false) { + return NSERROR_NOT_FOUND; + } return NSERROR_OK; } @@ -99,7 +105,7 @@ nserror monkey_schedule(int tival, void (*callback)(void *p), void *p) /* ensure uniqueness of the callback and context */ ret = schedule_remove(callback, p); - if ((tival < 0) || (ret != NSERROR_OK)) { + if (tival < 0) { return ret; } -- cgit v1.2.3