tweaks not to load webbrowser or math modules on startup.
authorCampbell Barton <ideasman42@gmail.com>
Wed, 23 Mar 2011 13:04:35 +0000 (13:04 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 23 Mar 2011 13:04:35 +0000 (13:04 +0000)
release/scripts/startup/bl_operators/uvcalc_lightmap.py
release/scripts/startup/bl_operators/wm.py
source/blender/makesrna/intern/rna_particle.c

index fedc8b1516172c932c88eed7685302ff61d811c2..3893612437ad5ba34dc70db4e5ff313cec613ae4 100644 (file)
@@ -21,8 +21,6 @@
 import bpy
 import mathutils
 
-from math import sqrt, pi
-
 
 class prettyface(object):
     __slots__ = "uv", "width", "height", "children", "xoff", "yoff", "has_parent", "rot"
@@ -104,6 +102,7 @@ class prettyface(object):
             pf.spin()
 
     def place(self, xoff, yoff, xfac, yfac, margin_w, margin_h):
+        from math import pi
 
         xoff += self.xoff
         yoff += self.yoff
@@ -196,6 +195,7 @@ def lightmap_uvpack(meshes,
     and a higher value will have more clumpy boxes but more waisted space
     '''
     import time
+    from math import sqrt
 
     if not meshes:
         return
index 0563cd409cae2da48cffe0346ead8e9bf56d2044..5d222168046aabfc7407b75656529c2c2743fc2f 100644 (file)
@@ -552,6 +552,7 @@ class WM_OT_url_open(bpy.types.Operator):
 
     def execute(self, context):
         import webbrowser
+        _webbrowser_bug_fix()
         webbrowser.open(self.url)
         return {'FINISHED'}
 
@@ -625,6 +626,7 @@ class WM_OT_doc_view(bpy.types.Operator):
             return {'PASS_THROUGH'}
 
         import webbrowser
+        _webbrowser_bug_fix()
         webbrowser.open(url)
 
         return {'FINISHED'}
@@ -855,3 +857,65 @@ class WM_OT_sysinfo(bpy.types.Operator):
         import sys_info
         sys_info.write_sysinfo(self)
         return {'FINISHED'}
+
+
+def _webbrowser_bug_fix():
+    # test for X11
+    import os
+
+    if os.environ.get("DISPLAY"):
+
+        # BSD licenced code copied from python, temp fix for bug
+        # http://bugs.python.org/issue11432, XXX == added code
+        def _invoke(self, args, remote, autoraise):
+            # XXX, added imports
+            import io
+            import subprocess
+            import time
+
+            raise_opt = []
+            if remote and self.raise_opts:
+                # use autoraise argument only for remote invocation
+                autoraise = int(autoraise)
+                opt = self.raise_opts[autoraise]
+                if opt:
+                    raise_opt = [opt]
+
+            cmdline = [self.name] + raise_opt + args
+
+            if remote or self.background:
+                inout = io.open(os.devnull, "r+")
+            else:
+                # for TTY browsers, we need stdin/out
+                inout = None
+            # if possible, put browser in separate process group, so
+            # keyboard interrupts don't affect browser as well as Python
+            setsid = getattr(os, 'setsid', None)
+            if not setsid:
+                setsid = getattr(os, 'setpgrp', None)
+
+            p = subprocess.Popen(cmdline, close_fds=True,  # XXX, stdin=inout,
+                                 stdout=(self.redirect_stdout and inout or None),
+                                 stderr=inout, preexec_fn=setsid)
+            if remote:
+                # wait five secons. If the subprocess is not finished, the
+                # remote invocation has (hopefully) started a new instance.
+                time.sleep(1)
+                rc = p.poll()
+                if rc is None:
+                    time.sleep(4)
+                    rc = p.poll()
+                    if rc is None:
+                        return True
+                # if remote call failed, open() will try direct invocation
+                return not rc
+            elif self.background:
+                if p.poll() is None:
+                    return True
+                else:
+                    return False
+            else:
+                return not p.wait()
+
+        import webbrowser
+        webbrowser.UnixBrowser._invoke = _invoke
\ No newline at end of file
index f48a575951fceddcdccef33af9e03a598fb768e2..55882f0acee1719b808418f0ad07927f345ba5dc 100644 (file)
@@ -219,7 +219,7 @@ static void rna_ParticleHairKey_location_object_set(PointerRNA *ptr, const float
 static void rna_ParticleHairKey_dynamic_location_object_get(PointerRNA *ptr, float *values)
 {
        HairKey *hkey= (HairKey *)ptr->data;
-       Object *ob = (Object *)ptr->id.data;
+       // Object *ob = (Object *)ptr->id.data;
        ParticleSystemModifierData *psmd;
        ParticleData *pa;
 
@@ -245,7 +245,7 @@ static void rna_ParticleHairKey_dynamic_location_object_get(PointerRNA *ptr, flo
 static void rna_ParticleHairKey_dynamic_location_object_set(PointerRNA *ptr, const float *values)
 {
        HairKey *hkey= (HairKey *)ptr->data;
-       Object *ob = (Object *)ptr->id.data;
+       // Object *ob = (Object *)ptr->id.data;
        ParticleSystemModifierData *psmd;
        ParticleData *pa;