Bindings: Fix inconsistency in Viewport dispose (RGSS1)
As noted, on Viewport dispose, RMXP always calls the core dispose method for child objects regardless of whether user scripts override it in sub classes. Implement this behavior in mkxp to prevent infinite recursion.
This commit is contained in:
parent
8b31f97bb4
commit
1a489aafaf
4 changed files with 11 additions and 5 deletions
|
@ -55,7 +55,7 @@ struct
|
|||
SYMD(default_color),
|
||||
SYMD(default_out_color),
|
||||
SYMD(children),
|
||||
SYMD(dispose)
|
||||
SYMD(_mkxp_dispose_alias)
|
||||
};
|
||||
|
||||
static elementsN(symData);
|
||||
|
|
|
@ -56,7 +56,7 @@ enum CommonSymbol
|
|||
CSdefault_color,
|
||||
CSdefault_out_color,
|
||||
CSchildren,
|
||||
CSdispose,
|
||||
CS_mkxp_dispose_alias,
|
||||
|
||||
CommonSymbolsMax
|
||||
};
|
||||
|
|
|
@ -60,7 +60,7 @@ disposableDisposeChildren(mrb_state *mrb, mrb_value disp)
|
|||
|
||||
for (mrb_int i = 0; i < RARRAY_LEN(children); ++i)
|
||||
mrb_funcall_argv(mrb, mrb_ary_entry(children, i),
|
||||
mrbData->symbols[CSdispose], 0, 0);
|
||||
mrbData->symbols[CS_mkxp_dispose_alias], 0, 0);
|
||||
}
|
||||
|
||||
template<class C>
|
||||
|
@ -99,6 +99,9 @@ static void disposableBindingInit(mrb_state *mrb, RClass *klass)
|
|||
{
|
||||
mrb_define_method(mrb, klass, "dispose", disposableDispose<C>, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, klass, "disposed?", disposableIsDisposed<C>, MRB_ARGS_NONE());
|
||||
|
||||
mrb_alias_method(mrb, klass, getMrbData(mrb)->symbols[CS_mkxp_dispose_alias],
|
||||
mrb_intern_lit(mrb, "dispose"));
|
||||
}
|
||||
|
||||
template<class C>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue