/*
* ion/libmainloop/defer.c
*
- * Copyright (c) Tuomo Valkonen 1999-2006.
+ * Copyright (c) Tuomo Valkonen 1999-2007.
*
* Ion is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
warn(TR("Object destroyed while deferred actions are still pending."));
}
+
+static bool already_deferred(Obj *obj, WDeferredAction *action,
+ WDeferred *list)
+{
+ WDeferred *d;
+
+ for(d=list; d!=NULL; d=d->next){
+ if(d->action==action && d->watch.obj==obj)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
bool mainloop_defer_action_on_list(Obj *obj, WDeferredAction *action,
WDeferred **list)
{
WDeferred *d;
+ if(already_deferred(obj, action, *list))
+ return TRUE;
+
d=alloc_defer();
if(d==NULL){