[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25718] trunk/blender/release/scripts/io/ netrender: netrender: reset server address on client when server is offline (on file load) as well as clear local caches (for slaves and jobs)

Martin Poirier theeth at yahoo.com
Mon Jan 4 22:05:52 CET 2010


Revision: 25718
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25718
Author:   theeth
Date:     2010-01-04 22:05:52 +0100 (Mon, 04 Jan 2010)

Log Message:
-----------
netrender: reset server address on client when server is offline (on file load) as well as clear local caches (for slaves and jobs)

Modified Paths:
--------------
    trunk/blender/release/scripts/io/netrender/__init__.py
    trunk/blender/release/scripts/io/netrender/ui.py
    trunk/blender/release/scripts/io/netrender/utils.py

Modified: trunk/blender/release/scripts/io/netrender/__init__.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/__init__.py	2010-01-04 20:53:52 UTC (rev 25717)
+++ trunk/blender/release/scripts/io/netrender/__init__.py	2010-01-04 21:05:52 UTC (rev 25718)
@@ -32,3 +32,6 @@
 slaves = []
 blacklist = []
 
+init_file = ""
+init_data = True
+init_address = True
\ No newline at end of file

Modified: trunk/blender/release/scripts/io/netrender/ui.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/ui.py	2010-01-04 20:53:52 UTC (rev 25717)
+++ trunk/blender/release/scripts/io/netrender/ui.py	2010-01-04 21:05:52 UTC (rev 25718)
@@ -36,6 +36,46 @@
 DONE = 2
 ERROR = 3
 
+def init_file():
+    if netrender.init_file != bpy.data.filename:
+        netrender.init_file = bpy.data.filename
+        netrender.init_data = True
+        netrender.init_address = True
+
+def init_data(netsettings):
+    init_file()
+    
+    if netrender.init_data:
+        netrender.init_data = False
+
+        netsettings.active_slave_index = 0
+        while(len(netsettings.slaves) > 0):
+            netsettings.slaves.remove(0)
+                
+        netsettings.active_blacklisted_slave_index = 0
+        while(len(netsettings.slaves_blacklist) > 0):
+            netsettings.slaves_blacklist.remove(0)
+
+        netsettings.active_job_index = 0
+        while(len(netsettings.jobs) > 0):
+            netsettings.jobs.remove(0)
+            
+def verify_address(netsettings):
+    init_file()
+
+    if netrender.init_address:
+        netrender.init_address = False
+        
+        try:
+            conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False)
+        except:
+            conn = None
+        
+        if conn:
+            conn.close()
+        else:
+            netsettings.server_address = "[default]"
+
 class RenderButtonsPanel(bpy.types.Panel):
     bl_space_type = "PROPERTIES"
     bl_region_type = "WINDOW"
@@ -56,7 +96,7 @@
         layout = self.layout
 
         scene = context.scene
-        rd = scene.render_data
+        netsettings = scene.network_render
 
         layout.active = True
 
@@ -64,17 +104,18 @@
 
         col = split.column()
 
-
-        if scene.network_render.mode in ("RENDER_MASTER", "RENDER_SLAVE"):
+        if netsettings.mode in ("RENDER_MASTER", "RENDER_SLAVE"):
             col.operator("screen.render", text="Start", icon='PLAY').animation = True
+            
+        verify_address(netsettings)
 
-        col.prop(scene.network_render, "mode")
-        col.prop(scene.network_render, "path")
-        col.prop(scene.network_render, "server_address")
-        col.prop(scene.network_render, "server_port")
+        col.prop(netsettings, "mode")
+        col.prop(netsettings, "path")
+        col.prop(netsettings, "server_address")
+        col.prop(netsettings, "server_port")
 
-        if scene.network_render.mode == "RENDER_MASTER":
-            col.prop(scene.network_render, "server_broadcast")
+        if netsettings.mode == "RENDER_MASTER":
+            col.prop(netsettings, "server_broadcast")
         else:
             col.operator("render.netclientscan", icon='FILE_REFRESH', text="")
 
@@ -94,23 +135,26 @@
         layout = self.layout
 
         scene = context.scene
-        rd = scene.render_data
+        netsettings = scene.network_render
 
         layout.active = True
 
         split = layout.split()
 
         col = split.column()
-        if scene.network_render.server_address != "[default]":
+
+        verify_address(netsettings)
+        
+        if netsettings.server_address != "[default]":
             col.operator("render.netclientanim", icon='RENDER_ANIMATION')
             col.operator("render.netclientsend", icon='FILE_BLEND')
-            if scene.network_render.job_id:
+            if netsettings.job_id:
                 col.operator("screen.render", text="Get Results", icon='RENDER_ANIMATION').animation = True
-        col.prop(scene.network_render, "job_name")
-        col.prop(scene.network_render, "job_category")
+        col.prop(netsettings, "job_name")
+        col.prop(netsettings, "job_category")
         row = col.row()
-        row.prop(scene.network_render, "priority")
-        row.prop(scene.network_render, "chunks")
+        row.prop(netsettings, "priority")
+        row.prop(netsettings, "chunks")
 
 @rnaType
 class RENDER_PT_network_slaves(RenderButtonsPanel):
@@ -119,9 +163,11 @@
 
     def poll(self, context):
         scene = context.scene
+        netsettings = scene.network_render
+        verify_address(netsettings)
         return (super().poll(context)
-                and scene.network_render.mode == "RENDER_CLIENT"
-                and scene.network_render.server_address != "[default]")
+                and netsettings.mode == "RENDER_CLIENT"
+                and netsettings.server_address != "[default]")
 
     def draw(self, context):
         layout = self.layout
@@ -136,9 +182,7 @@
         sub.operator("render.netclientslaves", icon='FILE_REFRESH', text="")
         sub.operator("render.netclientblacklistslave", icon='ZOOMOUT', text="")
 
-        if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0:
-            while(len(netsettings.slaves) > 0):
-                netsettings.slaves.remove(0)
+        init_data(netsettings)
 
         if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0:
             layout.separator()
@@ -157,9 +201,11 @@
 
     def poll(self, context):
         scene = context.scene
+        netsettings = scene.network_render
+        verify_address(netsettings)
         return (super().poll(context)
-                and scene.network_render.mode == "RENDER_CLIENT"
-                and scene.network_render.server_address != "[default]")
+                and netsettings.mode == "RENDER_CLIENT"
+                and netsettings.server_address != "[default]")
 
     def draw(self, context):
         layout = self.layout
@@ -173,9 +219,7 @@
         sub = row.column(align=True)
         sub.operator("render.netclientwhitelistslave", icon='ZOOMOUT', text="")
 
-        if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0:
-            while(len(netsettings.slaves_blacklist) > 0):
-                netsettings.slaves_blacklist.remove(0)
+        init_data(netsettings)
 
         if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0:
             layout.separator()
@@ -194,9 +238,11 @@
 
     def poll(self, context):
         scene = context.scene
+        netsettings = scene.network_render
+        verify_address(netsettings)
         return (super().poll(context)
-                and scene.network_render.mode == "RENDER_CLIENT"
-                and scene.network_render.server_address != "[default]")
+                and netsettings.mode == "RENDER_CLIENT"
+                and netsettings.server_address != "[default]")
 
     def draw(self, context):
         layout = self.layout
@@ -213,9 +259,7 @@
         sub.operator("render.netclientcancelall", icon='PANEL_CLOSE', text="")
         sub.operator("render.netclientdownload", icon='RENDER_ANIMATION', text="")
 
-        if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0:
-            while(len(netsettings.jobs) > 0):
-                netsettings.jobs.remove(0)
+        init_data(netsettings)
 
         if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0:
             layout.separator()

Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py	2010-01-04 20:53:52 UTC (rev 25717)
+++ trunk/blender/release/scripts/io/netrender/utils.py	2010-01-04 21:05:52 UTC (rev 25718)
@@ -96,15 +96,18 @@
 
         return ("", 8000) # return default values
 
-def clientConnection(address, port, report = None):
+def clientConnection(address, port, report = None, scan = True):
     if address == "[default]":
 #            calling operator from python is fucked, scene isn't in context
 #			if bpy:
 #				bpy.ops.render.netclientscan()
 #			else:
-            address, port = clientScan()
-            if address == "":
-                return None
+        if not scan:
+            return None
+        
+        address, port = clientScan()
+        if address == "":
+            return None
 
     try:
         conn = http.client.HTTPConnection(address, port)





More information about the Bf-blender-cvs mailing list