X-Git-Url: http://git.code-monkey.de/?p=ruby-ecore.git;a=blobdiff_plain;f=src%2Fecore%2Frb_animator.c;h=41837ded1c0d5832864e647f2a7f1c06817e09ce;hp=6544baa9968e396c9c1f7ea59dedcf0e1e505097;hb=27ce69a27f789d34afdd7c4423c0535999393c64;hpb=9e5cf3d5264809329877985ffa3b19b6e28b956e diff --git a/src/ecore/rb_animator.c b/src/ecore/rb_animator.c index 6544baa..41837de 100644 --- a/src/ecore/rb_animator.c +++ b/src/ecore/rb_animator.c @@ -1,5 +1,5 @@ /* - * $Id: rb_animator.c 146 2004-11-27 15:38:52Z tilman $ + * $Id: rb_animator.c 150 2004-12-03 13:45:00Z tilman $ * * Copyright (C) 2004 ruby-ecore team (see AUTHORS) * @@ -25,6 +25,8 @@ #include "rb_ecore.h" +void Init_stack (VALUE *addr); + typedef struct { Ecore_Animator *real; VALUE callback; @@ -35,6 +37,15 @@ static int on_animator (void *data) { VALUE r; RbAnimator *animator = data; + static bool initted; + + /* this fixes a weird segfault that occured when the animator's + * callback was called from a Ecore::Timer callback. + */ + if (!initted) { + Init_stack (0); + initted = true; + } r = rb_funcall (animator->callback, rb_intern ("call"), 0);