[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32955] trunk/blender/release/scripts: [ #24602] Netrender master node IP information is reset to [Default] no matter what
Martin Poirier
theeth at yahoo.com
Tue Nov 9 04:37:52 CET 2010
Revision: 32955
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32955
Author: theeth
Date: 2010-11-09 04:37:51 +0100 (Tue, 09 Nov 2010)
Log Message:
-----------
[#24602] Netrender master node IP information is reset to [Default] no matter what
[#24601] Net rendering master node fails to send/retrieve files to/from slaves
Both Reported by Dan McGrath
The second might not actually be fixed with this, but now there is better error checking and reporting.
Misc: add poll method in Panel base class, to better support mixins with different inheritance order.
Modified Paths:
--------------
trunk/blender/release/scripts/io/netrender/__init__.py
trunk/blender/release/scripts/io/netrender/slave.py
trunk/blender/release/scripts/io/netrender/ui.py
trunk/blender/release/scripts/io/netrender/utils.py
trunk/blender/release/scripts/modules/bpy_types.py
Modified: trunk/blender/release/scripts/io/netrender/__init__.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/__init__.py 2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/__init__.py 2010-11-09 03:37:51 UTC (rev 32955)
@@ -49,7 +49,7 @@
blacklist = []
init_file = ""
-init_address = True
+valid_address = False
init_data = True
Modified: trunk/blender/release/scripts/io/netrender/slave.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/slave.py 2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/slave.py 2010-11-09 03:37:51 UTC (rev 32955)
@@ -281,12 +281,12 @@
# thumbnail first
if netsettings.use_slave_thumb:
thumbname = thumbnail(filename)
-
- f = open(thumbname, 'rb')
- conn.request("PUT", "/thumb", f, headers=headers)
- f.close()
- responseStatus(conn)
+ if thumbname:
+ f = open(thumbname, 'rb')
+ conn.request("PUT", "/thumb", f, headers=headers)
+ f.close()
+ responseStatus(conn)
f = open(filename, 'rb')
conn.request("PUT", "/render", f, headers=headers)
Modified: trunk/blender/release/scripts/io/netrender/ui.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/ui.py 2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/ui.py 2010-11-09 03:37:51 UTC (rev 32955)
@@ -36,6 +36,8 @@
DONE = 2
ERROR = 3
+LAST_ADDRESS_TEST = 0
+
def base_poll(cls, context):
rd = context.scene.render
return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
@@ -45,7 +47,7 @@
if netrender.init_file != bpy.data.filepath:
netrender.init_file = bpy.data.filepath
netrender.init_data = True
- netrender.init_address = True
+ netrender.valid_address = False
def init_data(netsettings):
init_file()
@@ -66,10 +68,11 @@
netsettings.jobs.remove(0)
def verify_address(netsettings):
+ global LAST_ADDRESS_TEST
init_file()
- if netrender.init_address:
- netrender.init_address = False
+ if LAST_ADDRESS_TEST + 5 < time.time():
+ LAST_ADDRESS_TEST = time.time()
try:
conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False)
@@ -77,10 +80,16 @@
conn = None
if conn:
+ netrender.valid_address = True
conn.close()
else:
- netsettings.server_address = "[default]"
+ netrender.valid_address = False
+class NeedValidAddress():
+ @classmethod
+ def poll(cls, context):
+ return netrender.valid_address and super(NeedValidAddress, cls).poll(context)
+
class RenderButtonsPanel():
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
@@ -90,16 +99,16 @@
@classmethod
def poll(cls, context):
rd = context.scene.render
- return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
+ return rd.use_game_engine == False and rd.engine in cls.COMPAT_ENGINES and super().poll(context)
# Setting panel, use in the scene for now.
-class RENDER_PT_network_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_settings(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Network Settings"
COMPAT_ENGINES = {'NET_RENDER'}
@classmethod
def poll(cls, context):
- return super(RENDER_PT_network_settings, cls).poll(context)
+ return super().poll(context)
def draw(self, context):
layout = self.layout
@@ -128,17 +137,20 @@
if netsettings.mode != "RENDER_MASTER":
layout.operator("render.netclientscan", icon='FILE_REFRESH', text="")
+
+ if not netrender.valid_address:
+ layout.label(text="No master at specified address")
layout.operator("render.netclientweb", icon='QUESTION')
-class RENDER_PT_network_slave_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slave_settings(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Slave Settings"
COMPAT_ENGINES = {'NET_RENDER'}
@classmethod
def poll(cls, context):
scene = context.scene
- return super(RENDER_PT_network_slave_settings, cls).poll(context) and scene.network_render.mode == "RENDER_SLAVE"
+ return super().poll(context) and scene.network_render.mode == "RENDER_SLAVE"
def draw(self, context):
layout = self.layout
@@ -156,14 +168,14 @@
sub.enabled = rd.threads_mode == 'FIXED'
sub.prop(rd, "threads")
-class RENDER_PT_network_master_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_master_settings(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Master Settings"
COMPAT_ENGINES = {'NET_RENDER'}
@classmethod
def poll(cls, context):
scene = context.scene
- return super(RENDER_PT_network_master_settings, cls).poll(context) and scene.network_render.mode == "RENDER_MASTER"
+ return super().poll(context) and scene.network_render.mode == "RENDER_MASTER"
def draw(self, context):
layout = self.layout
@@ -174,14 +186,14 @@
layout.prop(netsettings, "use_master_broadcast")
layout.prop(netsettings, "use_master_clear")
-class RENDER_PT_network_job(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_job(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Job Settings"
COMPAT_ENGINES = {'NET_RENDER'}
@classmethod
def poll(cls, context):
scene = context.scene
- return super(RENDER_PT_network_job, cls).poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+ return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
def draw(self, context):
layout = self.layout
@@ -216,14 +228,14 @@
row.prop(netsettings, "priority")
row.prop(netsettings, "chunks")
-class RENDER_PT_network_job_vcs(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_job_vcs(RenderButtonsPanel, bpy.types.Panel):
bl_label = "VCS Job Settings"
COMPAT_ENGINES = {'NET_RENDER'}
@classmethod
def poll(cls, context):
scene = context.scene
- return (super(RENDER_PT_network_job_vcs, cls).poll(context)
+ return (super().poll(context)
and scene.network_render.mode == "RENDER_CLIENT"
and scene.network_render.job_type == "JOB_VCS")
@@ -240,7 +252,7 @@
layout.prop(netsettings, "vcs_rpath")
layout.prop(netsettings, "vcs_wpath")
-class RENDER_PT_network_slaves(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slaves(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
bl_label = "Slaves Status"
COMPAT_ENGINES = {'NET_RENDER'}
@@ -251,7 +263,7 @@
if netsettings.mode != "RENDER_CLIENT":
return False
verify_address(netsettings)
- return super(RENDER_PT_network_slaves, cls).poll(context) and netsettings.server_address != "[default]"
+ return super().poll(context)
def draw(self, context):
layout = self.layout
@@ -278,7 +290,7 @@
layout.label(text="Seen: " + time.ctime(slave.last_seen))
layout.label(text="Stats: " + slave.stats)
-class RENDER_PT_network_slaves_blacklist(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
bl_label = "Slaves Blacklist"
COMPAT_ENGINES = {'NET_RENDER'}
@@ -289,7 +301,7 @@
if netsettings.mode != "RENDER_CLIENT":
return False
verify_address(netsettings)
- return super(RENDER_PT_network_slaves_blacklist, cls).poll(context) and netsettings.server_address != "[default]"
+ return super().poll(context)
def draw(self, context):
layout = self.layout
@@ -315,7 +327,7 @@
layout.label(text="Seen: " + time.ctime(slave.last_seen))
layout.label(text="Stats: " + slave.stats)
-class RENDER_PT_network_jobs(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_jobs(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
bl_label = "Jobs"
COMPAT_ENGINES = {'NET_RENDER'}
@@ -326,7 +338,7 @@
if netsettings.mode != "RENDER_CLIENT":
return False
verify_address(netsettings)
- return super(RENDER_PT_network_jobs, cls).poll(context) and netsettings.server_address != "[default]"
+ return super().poll(context)
def draw(self, context):
layout = self.layout
Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py 2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/utils.py 2010-11-09 03:37:51 UTC (rev 32955)
@@ -245,8 +245,9 @@
process = subprocess.Popen(["convert", thumbname, "-resize", "300x300", thumbname])
process.wait()
return thumbname
- except:
- pass
+ except Exception as exp:
+ print("Error while generating thumbnail")
+ print(exp)
return None
Modified: trunk/blender/release/scripts/modules/bpy_types.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_types.py 2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/modules/bpy_types.py 2010-11-09 03:37:51 UTC (rev 32955)
@@ -723,7 +723,13 @@
class Panel(StructRNA, _GenericUI, metaclass=RNAMeta):
__slots__ = ()
+ @classmethod
+ def poll(cls, context):
+ # super class might not have a poll function, better be careful
+ cls = super()
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list