Browse Source

Merge pull request #9844 from karroffel/nativescript-double-init-fix

[NativeScript] fix double initialization in editor
Thomas Herzog 8 years ago
parent
commit
497411aa12
2 changed files with 10 additions and 2 deletions
  1. 8 2
      modules/nativescript/nativescript.cpp
  2. 2 0
      modules/nativescript/nativescript.h

+ 8 - 2
modules/nativescript/nativescript.cpp

@@ -958,7 +958,8 @@ void NativeReloadNode::_notification(int p_what) {
 	switch (p_what) {
 		case MainLoop::NOTIFICATION_WM_FOCUS_OUT: {
 
-			print_line("unload");
+			if (unloaded)
+				break;
 
 			NSL->_unload_stuff();
 			for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) {
@@ -967,11 +968,14 @@ void NativeReloadNode::_notification(int p_what) {
 				NSL->library_classes.erase(L->key());
 			}
 
+			unloaded = true;
+
 		} break;
 
 		case MainLoop::NOTIFICATION_WM_FOCUS_IN: {
 
-			print_line("load");
+			if (!unloaded)
+				break;
 
 			Set<StringName> libs_to_remove;
 
@@ -1010,6 +1014,8 @@ void NativeReloadNode::_notification(int p_what) {
 				}
 			}
 
+			unloaded = false;
+
 			for (Set<StringName>::Element *R = libs_to_remove.front(); R; R = R->next()) {
 				NSL->library_gdnatives.erase(R->get());
 			}

+ 2 - 0
modules/nativescript/nativescript.h

@@ -259,6 +259,8 @@ inline NativeScriptDesc *NativeScript::get_script_desc() const {
 
 class NativeReloadNode : public Node {
 	GDCLASS(NativeReloadNode, Node)
+	bool unloaded = false;
+
 public:
 	static void _bind_methods();
 	void _notification(int p_what);