[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35723] trunk/blender: tweaks not to load webbrowser or math modules on startup.

Campbell Barton ideasman42 at gmail.com
Wed Mar 23 14:04:35 CET 2011


Revision: 35723
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35723
Author:   campbellbarton
Date:     2011-03-23 13:04:35 +0000 (Wed, 23 Mar 2011)
Log Message:
-----------
tweaks not to load webbrowser or math modules on startup.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_operators/uvcalc_lightmap.py
    trunk/blender/release/scripts/startup/bl_operators/wm.py
    trunk/blender/source/blender/makesrna/intern/rna_particle.c

Modified: trunk/blender/release/scripts/startup/bl_operators/uvcalc_lightmap.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/uvcalc_lightmap.py	2011-03-23 12:44:22 UTC (rev 35722)
+++ trunk/blender/release/scripts/startup/bl_operators/uvcalc_lightmap.py	2011-03-23 13:04:35 UTC (rev 35723)
@@ -21,9 +21,7 @@
 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 @@
             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 @@
     and a higher value will have more clumpy boxes but more waisted space
     '''
     import time
+    from math import sqrt
 
     if not meshes:
         return

Modified: trunk/blender/release/scripts/startup/bl_operators/wm.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/wm.py	2011-03-23 12:44:22 UTC (rev 35722)
+++ trunk/blender/release/scripts/startup/bl_operators/wm.py	2011-03-23 13:04:35 UTC (rev 35723)
@@ -552,6 +552,7 @@
 
     def execute(self, context):
         import webbrowser
+        _webbrowser_bug_fix()
         webbrowser.open(self.url)
         return {'FINISHED'}
 
@@ -625,6 +626,7 @@
             return {'PASS_THROUGH'}
 
         import webbrowser
+        _webbrowser_bug_fix()
         webbrowser.open(url)
 
         return {'FINISHED'}
@@ -855,3 +857,65 @@
         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

Modified: trunk/blender/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-03-23 12:44:22 UTC (rev 35722)
+++ trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-03-23 13:04:35 UTC (rev 35723)
@@ -219,7 +219,7 @@
 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_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;
 




More information about the Bf-blender-cvs mailing list