android: enable autofree (#6503)
parent
ae7689f739
commit
4cd5153b32
|
@ -90,20 +90,48 @@ pub fn (mut g Gen) gen_c_main_footer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut g Gen) gen_c_android_sokol_main() {
|
pub fn (mut g Gen) gen_c_android_sokol_main() {
|
||||||
// TODO get autofree weaved into android lifecycle somehow
|
// Weave autofree into sokol lifecycle callback(s)
|
||||||
/*
|
|
||||||
if g.autofree {
|
if g.autofree {
|
||||||
g.writeln('\t_vcleanup();')
|
g.writeln('// Wrapping cleanup/free callbacks for sokol to include _vcleanup()
|
||||||
|
void (*_vsokol_user_cleanup_ptr)(void);
|
||||||
|
void (*_vsokol_user_cleanup_cb_ptr)(void *);
|
||||||
|
|
||||||
|
void (_vsokol_cleanup_cb)(void) {
|
||||||
|
if (_vsokol_user_cleanup_ptr) {
|
||||||
|
_vsokol_user_cleanup_ptr();
|
||||||
}
|
}
|
||||||
*/
|
_vcleanup();
|
||||||
// TODO do proper check for the global g_desc field we need
|
}
|
||||||
g.writeln('sapp_desc sokol_main(int argc, char* argv[]) {')
|
|
||||||
g.writeln('\t(void)argc; (void)argv;')
|
void (_vsokol_cleanup_userdata_cb)(void* user_data) {
|
||||||
g.writeln('')
|
if (_vsokol_user_cleanup_cb_ptr) {
|
||||||
g.writeln('\t_vinit();')
|
_vsokol_user_cleanup_cb_ptr(g_desc.user_data);
|
||||||
g.writeln('\tmain__main();')
|
}
|
||||||
g.writeln('')
|
_vcleanup();
|
||||||
g.writeln('\treturn g_desc;')
|
}
|
||||||
|
')
|
||||||
|
}
|
||||||
|
|
||||||
|
g.writeln('// The sokol_main entry point on Android
|
||||||
|
sapp_desc sokol_main(int argc, char* argv[]) {
|
||||||
|
(void)argc; (void)argv;
|
||||||
|
|
||||||
|
_vinit();
|
||||||
|
main__main();
|
||||||
|
')
|
||||||
|
if g.autofree {
|
||||||
|
g.writeln(' // Wrap user provided cleanup/free functions for sokol to be able to call _vcleanup()
|
||||||
|
if (g_desc.cleanup_cb) {
|
||||||
|
_vsokol_user_cleanup_ptr = g_desc.cleanup_cb;
|
||||||
|
g_desc.cleanup_cb = _vsokol_cleanup_cb;
|
||||||
|
}
|
||||||
|
else if (g_desc.cleanup_userdata_cb) {
|
||||||
|
_vsokol_user_cleanup_cb_ptr = g_desc.cleanup_userdata_cb;
|
||||||
|
g_desc.cleanup_userdata_cb = _vsokol_cleanup_userdata_cb;
|
||||||
|
}
|
||||||
|
')
|
||||||
|
}
|
||||||
|
g.writeln(' return g_desc;')
|
||||||
g.writeln('}')
|
g.writeln('}')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue