From 72fe34efb2a9787598fe10c3aefae3f523bd036f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Mar 2011 13:04:35 +0000 Subject: [PATCH] tweaks not to load webbrowser or math modules on startup. --- .../startup/bl_operators/uvcalc_lightmap.py | 4 +- release/scripts/startup/bl_operators/wm.py | 64 +++++++++++++++++++ source/blender/makesrna/intern/rna_particle.c | 4 +- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index fedc8b15161..3893612437a 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -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 diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 0563cd409ca..5d222168046 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -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 diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index f48a575951f..55882f0acee 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -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;