I have some code that is tracking a box2d manipulatable object (signal
connected to notify::allocation) and if the object has moved more than X pixels
from where the manipulation started, I send a synthetic event to the actor so
that clutter-box2d will disconnect the mouse joint.
It all works great. Usually.
Sometimes I get a segfault in clutter_box2d_mouse_joint_update_target due to
the passed joint from clutter_box2d_actor_motion being NULL.
It looks like either clutter_actor_transform_stage_point() or
clutter_actor_get_parent() allows events to be processed, which allows other
signal handlers to be processed within the if (priv->mouse_joint) path. When
combined with the mouse release event, Bad Things(tm) seem to be able to happen.
I looked through clutter_actor_transform_stage_point and
clutter_actor_get_parent and didn't see where any opportunity existed for
events to be processed.
After sticking a check on priv->mouse_joint immediately before calling clutter_box2d_mouse_joint_update, I don't see the segfault anymore.
I would like to understand where the re-entrancy is coming from though.
James
--
To unsubscribe send a mail to [EMAIL PROTECTED]