sorry about the late reply... something resembling your patches is now integrated in VirtualBox (trunk only so far). The change should show up tomorrow or so. Used a slightly different approach, but the results should be the same.

Klaus

On 14.02.2011 02:42, Howard Su wrote:
Latest version of patch, tested in FreeBSD 8.1


Index: VBox/Main/src-server/xpcom/server.cpp
===================================================================
--- VBox/Main/src-server/xpcom/server.cpp       (revision 35941)
+++ VBox/Main/src-server/xpcom/server.cpp       (working copy)
@@ -662,23 +662,7 @@

  
////////////////////////////////////////////////////////////////////////////////

-static const nsModuleComponentInfoEx components[] =
-{
-    nsModuleComponentInfoEx(
-        "VirtualBox component",
-        CLSID_VirtualBox,
-        NS_VIRTUALBOX_CONTRACTID,
-        VirtualBoxConstructor, // constructor function
-        NULL, // registration function
-        NULL, // deregistration function
-        VirtualBoxClassFactory::FactoryDestructor, // factory
destructor function
-        NS_CI_INTERFACE_GETTER_NAME(VirtualBox),
-        NULL, // language helper
-&NS_CLASSINFO_NAME(VirtualBox),
-        0, // flags
-        VirtualBoxClassFactory::FactoryConstructor // factory
constructor function
-    )
-};
+static const nsModuleComponentInfoEx *components;

  /////////////////////////////////////////////////////////////////////////////

@@ -941,8 +925,24 @@
          }

          registrar->AutoRegister(nsnull);
-        rc = RegisterSelfComponents(registrar, components,
-                                    NS_ARRAY_LENGTH (components));
+
+       components = new nsModuleComponentInfoEx(
+        "VirtualBox component",
+        CLSID_VirtualBox,
+        NS_VIRTUALBOX_CONTRACTID,
+        VirtualBoxConstructor, // constructor function
+        NULL, // registration function
+        NULL, // deregistration function
+        VirtualBoxClassFactory::FactoryDestructor, // factory
destructor function
+        NS_CI_INTERFACE_GETTER_NAME(VirtualBox),
+        NULL, // language helper
+&NS_CLASSINFO_NAME(VirtualBox),
+        0, // flags
+               VirtualBoxClassFactory::FactoryConstructor // factory
constructor function
+       );
+
+       rc = RegisterSelfComponents(registrar, components,
+                                    1);
          if (NS_FAILED(rc))
          {
              RTMsgError("Failed to register server components! (rc=%Rhrc)", 
rc);
@@ -1098,5 +1098,7 @@
      if (g_pszPidFile)
          RTFileDelete(g_pszPidFile);

+    delete components;
+
      return 0;
  }
Index: VBox/Main/Makefile.kmk
===================================================================
--- VBox/Main/Makefile.kmk      (revision 35941)
+++ VBox/Main/Makefile.kmk      (working copy)
@@ -244,10 +244,6 @@
  VBoxSVC_DEFS.freebsd += VBOX_USE_LIBHAL

  VBoxSVC_CXXFLAGS = $(filter-out -Wno-unused,$(TEMPLATE_VBOXMAINEXE_CXXFLAGS))
-## @todo We're disabling optimizations on FreeBSD to work around strange linker
-#        errors in release builds. Figure out why and how to work
around it in a
-#        more optimal fashion.
-VBoxSVC_CXXFLAGS.freebsd = -O0

  VBoxSVC_INCS = \
         include \


_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to