Enumerated List Interference bug

I’ve been attempting to fix the following bug: enumerated lists interfere with each other and its second manifestation (“straight” interfering with “fast gaussian blur”).

The bug occurs as follows: synfig studio compares the new value of the blend method to the old value of another parameter (e.g. Circle/falloff or Blur/type), concludes that no change has occured, and does nothing. I have not been able to figure out why this happens. However, I’ve been able to confirm this as causing the problem by commenting out line 601 of cellrenderer_value.cpp (and seeing that everything is fixed).

Some questions still remain unanswered: Why do the lists interfere with each other? Why only in one direction? (Changing the order of modification eliminates the problem).

There is also a corollary: after modifying a circle so that the params interfere (both with and without line 601 commented out), synfig studio will crash upon closing the document. In cellrenderer_value.cpp:313, the ‘widget’ parameter is apparently null, and anything using it, such as line 460, segfaults. A stack trace shows render_vfunc being called indirectly by canvasview.cpp:933 (which deletes widgets :exclamation: ).

Warnings shown are:

(synfigstudio:8336): glibmm-WARNING **: Glib::wrap_create_new_wrapper: Attempted to create a 2nd C++ wrapper for a C instance whose C++ wrapper has been deleted.

(synfigstudio:8336): glibmm-WARNING **: Failed to wrap object of type 'gtkmm__GtkTreeView'. Hint: this error is commonly caused by failing to call a library init() function.


If you have any ideas that might help tackle this problem, please post them. (If you can actually fix it that’s even better :slight_smile: )

Quick thought:

Maybe the enum_list class (which I think it is the one that handles the enumerated list widgets) is using a static variable that is shared for the two parameters instances?
Good to know that the problem is narrowed. Will look to it when I can.

Regarding to the corollary, I get the same messages without playing with enumerated lists at all. It seems to be a bug caused by other reason. I started to see it since I upgraded to 10.04 so there seems to be some uncompatibilities with the new Glib, Gtk+, Gtkmm libraries.