Browse Source

ATOMIC-133: Explicitly create the package object via JSBind instead of deferring it

Josh Engebretson 10 years ago
parent
commit
b78f98096d

+ 0 - 3
Source/AtomicEditor/Javascript/AEEditorJS.cpp

@@ -17,9 +17,6 @@ void jsapi_init_editor(JSVM* vm)
 {
 {
     duk_context* ctx = vm->GetJSContext();
     duk_context* ctx = vm->GetJSContext();
 
 
-    duk_push_object(ctx);
-    duk_put_global_string(ctx, "Editor");
-
     jsb_package_editor_init(vm);
     jsb_package_editor_init(vm);
 
 
     duk_get_global_string(ctx, "Atomic");
     duk_get_global_string(ctx, "Atomic");

+ 5 - 6
Source/AtomicJS/Javascript/JSVM.cpp

@@ -57,12 +57,12 @@ void JSVM::InitJSContext()
 {
 {
     ctx_ = duk_create_heap_default();
     ctx_ = duk_create_heap_default();
 
 
-    // create root Atomic Object
-    duk_push_global_object(ctx_);
-    duk_push_object(ctx_);
+    jsapi_init_atomic(this);
+
+    // register whether we are in the editor
+    duk_get_global_string(ctx_, "Atomic");
     duk_push_boolean(ctx_, context_->GetEditorContext() ? 1 : 0);
     duk_push_boolean(ctx_, context_->GetEditorContext() ? 1 : 0);
     duk_put_prop_string(ctx_, -2, "editor");
     duk_put_prop_string(ctx_, -2, "editor");
-    duk_put_prop_string(ctx_, -2, "Atomic");
     duk_pop(ctx_);
     duk_pop(ctx_);
 
 
     duk_push_global_stash(ctx_);
     duk_push_global_stash(ctx_);
@@ -71,8 +71,7 @@ void JSVM::InitJSContext()
     duk_pop(ctx_);
     duk_pop(ctx_);
 
 
     js_init_require(this);
     js_init_require(this);
-    js_init_jsplugin(this);
-    jsapi_init_atomic(this);
+    js_init_jsplugin(this);    
 
 
     ui_ = new JSUI(context_);
     ui_ = new JSUI(context_);
 
 

+ 0 - 4
Source/AtomicPlayerJS/AtomicPlayerJS.cpp

@@ -19,10 +19,6 @@ void jsapi_init_atomicplayer(JSVM* vm)
 {
 {
     duk_context* ctx = vm->GetJSContext();
     duk_context* ctx = vm->GetJSContext();
 
 
-    // setup the global AtomicPlayer object
-    duk_push_object(ctx);
-    duk_put_global_string(ctx, "AtomicPlayer");
-
     jsb_package_atomicplayer_init(vm);
     jsb_package_atomicplayer_init(vm);
 
 
     duk_get_global_string(ctx, "Atomic");
     duk_get_global_string(ctx, "Atomic");

+ 8 - 2
Source/ToolCore/JSBind/JSBPackageWriter.cpp

@@ -103,15 +103,21 @@ void JSBPackageWriter::GenerateSource(String& sourceOut)
 
 
     source.AppendWithFormat("\n\nstatic void jsb_package_%s_preinit(JSVM* vm)\n{", packageLower.CString());
     source.AppendWithFormat("\n\nstatic void jsb_package_%s_preinit(JSVM* vm)\n{", packageLower.CString());
 
 
+
+    source.Append("\n    // Create the global package object\n");
+    source.Append("    duk_context* ctx = vm->GetJSContext();\n");
+    source.Append("    duk_push_object(ctx);\n");
+    source.AppendWithFormat("    duk_put_global_string(ctx, \"%s\");\n", package_->GetName().CString());
+
     for (unsigned i = 0; i < package_->modules_.Size(); i++)
     for (unsigned i = 0; i < package_->modules_.Size(); i++)
     {
     {
         JSBModule* module = package_->modules_.At(i);
         JSBModule* module = package_->modules_.At(i);
 
 
-        String moduleLower = module->GetName().ToLower();
-
         if (module->Requires("3D"))
         if (module->Requires("3D"))
             source += "\n#ifdef ATOMIC_3D";
             source += "\n#ifdef ATOMIC_3D";
 
 
+        String moduleLower = module->GetName().ToLower();
+
         source.AppendWithFormat("\n   jsb_package_%s_preinit_%s(vm);", packageLower.CString(), moduleLower.CString());
         source.AppendWithFormat("\n   jsb_package_%s_preinit_%s(vm);", packageLower.CString(), moduleLower.CString());
 
 
         if (module->Requires("3D"))
         if (module->Requires("3D"))

+ 0 - 3
Source/ToolCoreJS/ToolCoreJS.cpp

@@ -103,9 +103,6 @@ void jsapi_init_toolcore(JSVM* vm)
 {
 {
     duk_context* ctx = vm->GetJSContext();
     duk_context* ctx = vm->GetJSContext();
 
 
-    duk_push_object(ctx);
-    duk_put_global_string(ctx, "ToolCore");
-
     jsb_package_toolcore_init(vm);
     jsb_package_toolcore_init(vm);
 
 
     duk_get_global_string(ctx, "ToolCore");
     duk_get_global_string(ctx, "ToolCore");