Index: mono.cpp =================================================================== --- mono.cpp (revision 80361) +++ mono.cpp (working copy) @@ -28,15 +28,22 @@ gboolean vm_init () { - const char *home = g_get_home_dir (); gboolean result = FALSE; - boot_assembly = g_build_path ("/", home, ".mozilla", "plugins", "moonlight.exe", NULL); - mono_config_parse (NULL); - moon_domain = mono_jit_init (boot_assembly); - mono_debug_init (MONO_DEBUG_FORMAT_MONO); - mono_debug_init_1 (moon_domain); - moon_boot_assembly = mono_domain_assembly_open (moon_domain, boot_assembly); + /* grovel around looking for an existing app domain before we create a new one */ + moon_domain = mono_get_root_domain (); + + if (moon_domain == NULL) { + const char *home = g_get_home_dir (); + + boot_assembly = g_build_path ("/", home, ".mozilla", "plugins", "moonlight.exe", NULL); + mono_config_parse (NULL); + moon_domain = mono_jit_init (boot_assembly); + mono_debug_init (MONO_DEBUG_FORMAT_MONO); + mono_debug_init_1 (moon_domain); + moon_boot_assembly = mono_domain_assembly_open (moon_domain, boot_assembly); + } + if (moon_boot_assembly){ char *argv [2]; Index: plugin-glue.cpp =================================================================== --- plugin-glue.cpp (revision 80361) +++ plugin-glue.cpp (working copy) @@ -225,7 +225,6 @@ } runtime_init (); - TimeManager::Instance()->Start(); return NPERR_NO_ERROR; } @@ -237,6 +236,5 @@ // runtime_shutdown is broken at moment so let us just shutdown TimeManager, // when fixed please uncomment above line and remove time manger shutdown. - //runtime_shutdown (); - TimeManager::Instance()->Shutdown (); + runtime_shutdown (); }