my $RUNNING = 0; $mw->repeat( 50 => sub { $taxis->taxis(\$RUNNING) unless $RUNNING} ]; MainLoop; package taxis; sub taxis { my ($self, $r_running, @whatever, ) = @_; $mw->update; $$r_running = 1; # do other stuff that takes a while $$r_running = 0; return; } #### sub taxis { my ($self, $r_running, @whatever, ) = @_; $mw->update; $$r_running = 1; # other stuff my $null = 0; $self->taxis(\$null, $whatever); $$r_running = 0; return; }