From fda800fd26b218661ace91801a9ce7bbce8e6afc Mon Sep 17 00:00:00 2001 From: Ruslan Mustakov Date: Wed, 23 Aug 2017 13:29:32 +0700 Subject: [PATCH] Avoid using godot_get_stack_bottom It's not reliable on Android. --- godot/godotinternal.nim | 3 --- godot/nim/godotnim.nim | 8 ++++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/godot/godotinternal.nim b/godot/godotinternal.nim index fe253dc..c241d77 100644 --- a/godot/godotinternal.nim +++ b/godot/godotinternal.nim @@ -239,9 +239,6 @@ type ClassConstructor = proc (): ptr GodotObject {.noconv.} proc getClassConstructor*(className: cstring): ClassConstructor {. importc: "godot_get_class_constructor".} -proc godotStackBottom*(): pointer {. - importc: "godot_get_stack_bottom".} - proc deinit*(o: ptr GodotObject) {. importc: "godot_object_destroy".} diff --git a/godot/nim/godotnim.nim b/godot/nim/godotnim.nim index da3f2c6..bfb59c7 100644 --- a/godot/nim/godotnim.nim +++ b/godot/nim/godotnim.nim @@ -780,10 +780,10 @@ proc godot_nativescript_init(handle: pointer) {. cdecl, exportc, dynlib.} = nativeLibHandle = handle - let stackBottom = godotStackBottom() + var stackBottom {.volatile.}: pointer {.emit: """ NimMain(); - setStackBottom(`stackBottom`); + setStackBottom((void*)(&`stackBottom`)); """.} GC_fullCollect() GC_disable() @@ -798,6 +798,10 @@ proc godot_gdnative_terminate(options: ptr GodotNativeTerminateOptions) {. const nimGcStepLengthUs {.intdefine.} = 2000 proc godot_nativescript_frame() {.cdecl, exportc, dynlib.} = + var stackBottom {.volatile.}: pointer + {.emit: """ + setStackBottom((void*)(&`stackBottom`)); + """.} if asyncdispatch.hasPendingOperations(): poll(0) GC_step(nimGcStepLengthUs, true, 0)