mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 03:18:37 +08:00
Merge pull request #9720 from endragor/stack-bottom
Add a way to retrieve stack bottom of the main thread
This commit is contained in:
commit
9caf9fa76f
@ -512,7 +512,13 @@ bool OS::check_feature_support(const String &p_feature) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void *OS::get_stack_bottom() const {
|
||||
return _stack_bottom;
|
||||
}
|
||||
|
||||
OS::OS() {
|
||||
void *volatile stack_bottom;
|
||||
|
||||
last_error = NULL;
|
||||
singleton = this;
|
||||
_keep_screen_on = true; // set default value to true, because this had been true before godot 2.0.
|
||||
@ -525,6 +531,7 @@ OS::OS() {
|
||||
_render_thread_mode = RENDER_THREAD_SAFE;
|
||||
|
||||
_allow_hidpi = true;
|
||||
_stack_bottom = (void *)(&stack_bottom);
|
||||
}
|
||||
|
||||
OS::~OS() {
|
||||
|
@ -60,6 +60,8 @@ class OS {
|
||||
|
||||
char *last_error;
|
||||
|
||||
void *_stack_bottom;
|
||||
|
||||
public:
|
||||
enum RenderThreadMode {
|
||||
|
||||
@ -411,6 +413,13 @@ public:
|
||||
|
||||
bool check_feature_support(const String &p_feature);
|
||||
|
||||
/**
|
||||
* Returns the stack bottom of the main thread of the application.
|
||||
* This may be of use when integrating languages with garbage collectors that
|
||||
* need to check whether a pointer is on the stack.
|
||||
*/
|
||||
virtual void *get_stack_bottom() const;
|
||||
|
||||
bool is_hidpi_allowed() const { return _allow_hidpi; }
|
||||
OS();
|
||||
virtual ~OS();
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "error_macros.h"
|
||||
#include "gdnative.h"
|
||||
#include "global_constants.h"
|
||||
#include "os/os.h"
|
||||
#include "project_settings.h"
|
||||
#include "variant.h"
|
||||
|
||||
@ -89,6 +90,10 @@ godot_object GDAPI *godot_global_get_singleton(char *p_name) {
|
||||
return (godot_object *)ProjectSettings::get_singleton()->get_singleton_object(String(p_name));
|
||||
} // result shouldn't be freed
|
||||
|
||||
void GDAPI *godot_get_stack_bottom() {
|
||||
return OS::get_singleton()->get_stack_bottom();
|
||||
}
|
||||
|
||||
// MethodBind API
|
||||
|
||||
godot_method_bind GDAPI *godot_method_bind_get_method(const char *p_classname, const char *p_methodname) {
|
||||
|
@ -245,6 +245,10 @@ void GDAPI godot_object_destroy(godot_object *p_o);
|
||||
|
||||
godot_object GDAPI *godot_global_get_singleton(char *p_name); // result shouldn't be freed
|
||||
|
||||
////// OS API
|
||||
|
||||
void GDAPI *godot_get_stack_bottom(); // returns stack bottom of the main thread
|
||||
|
||||
////// MethodBind API
|
||||
|
||||
typedef struct {
|
||||
|
Loading…
Reference in New Issue
Block a user