static void loop_set_after_draw_frame_func (SCM after_frame) { SCM var = scm_lookup (after_frame); if (!scm_is_true (var) || !scm_is_true (scm_variable_p (var))) { g_critical ("invalid after frame func"); return; } SCM ref = guile_variable_ref_safe (var); if (!scm_is_true (ref) || !scm_is_true (scm_procedure_p (ref))) { g_critical ("invalid after frame func"); return; } do_after_draw_frame = ref; }
static void loop_set_game_update_func (SCM idle) { SCM var = scm_lookup (idle); if (!scm_is_true (var) || !scm_is_true (scm_variable_p (var))) { g_critical ("invalid game update func"); return; } #if 0 SCM ref = guile_variable_ref_safe (var); if (!scm_is_true (ref) || !scm_is_true (scm_procedure_p (ref))) { g_critical ("invalid game update func"); return; } #endif scm_remember_upto_here_1(var); do_idle = scm_variable_ref(scm_lookup(idle)); }
bool xscm_is_variable(SCM x) { return scm_is_true (scm_variable_p (x)); }