On Sun, Nov 8, 2009 at 15:09, Gustavo Sverzut Barbieri
<barbi...@profusion.mobi> wrote:
> On Sun, Nov 8, 2009 at 11:50 AM, Enlightenment SVN
> <no-re...@enlightenment.org> wrote:
>
>
> +        if not callable(callback):
> +            raise TypeError("callback is not callable")
>
> you should do this check when you register the callback, not when you
> call it. Compare: you add one item at most 1 time, but call it
> multiple (N) times.
Of course!

>> -        self.item = elm_list_item_append(list.obj, label, icon_obj, 
>> end_obj, _list_callback, NULL)
>> -        self._create_mapping(callback, data)
>> +        self.cbt = (list, callback, data, self)
>> +        self.item = elm_list_item_append(list.obj, label, icon_obj, end_obj,
>> +                                         _list_callback, <void*>self.cbt)
>
> I did not look this carefully, but I bet this is wrong, specially:
>
>> +        self.cbt = (list, callback, data, self)
>
>
> what's the use of it? If you append 2 times with different parameters,
> just the last one is kept... worse than this, the old value pointer by
> elm_list_item_append (C/internal) is the object that will be garbage
> collected after you assign the new object and make the old loose its
> last reference.
>
> The best solution here is to create the Python object that reference
> Python function and parameters (your cbt), then Py_INCREF it, then set
> it as data for C
> elm_list_item_{append,prepend,insert_before,intert_after}(), then set
> it as data elm_list_item_del_cb_set(), where you'd Py_DECREF.
>
> Of course we need to make sure we're calling del cb for all paths in
> Elm_list... (on object destroy, clear, etc).

I've rewritten it, not exactly as you said, but i think it's ok.

> Also, we need to review this in whole Elementary... it was complicate
> to get right for evas/edje/ecore, but they are correct now... you need
> to check them or ask me, if we start to spread minor errors like this
> then we'll have hard time tracking these beasts after some time.
I'll try to keep that in mind.

-- 
Boris 'billiob' Faure

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to