/*
* call-seq:
* Debugger.resume -> Debugger
*
* Resumes all contexts.
*/
static VALUE
debug_resume(VALUE self)
{
VALUE current, context;
VALUE saved_crit;
VALUE context_list;
debug_context_t *debug_context;
int i;
debug_check_started();
saved_crit = rb_thread_critical;
rb_thread_critical = Qtrue;
context_list = debug_contexts(self);
thread_context_lookup(rb_thread_current(), ¤t, NULL);
for(i = 0; i < RARRAY(context_list)->len; i++)
{
context = rb_ary_entry(context_list, i);
if(current == context)
continue;
Data_Get_Struct(context, debug_context_t, debug_context);
context_resume_0(debug_context);
}
rb_thread_critical = saved_crit;
rb_thread_schedule();
return self;
}