[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22947] branches/itasc: svn merge -r 22933 :22946 https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/ blender
Benoit Bolsee
benoit.bolsee at online.be
Wed Sep 2 12:14:03 CEST 2009
Revision: 22947
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22947
Author: ben2610
Date: 2009-09-02 12:14:03 +0200 (Wed, 02 Sep 2009)
Log Message:
-----------
svn merge -r 22933:22946 https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/blender
Modified Paths:
--------------
branches/itasc/config/win32-vc-config.py
branches/itasc/config/win64-vc-config.py
branches/itasc/release/datafiles/splash.jpg
branches/itasc/release/io/netrender/client.py
branches/itasc/release/io/netrender/master.py
branches/itasc/release/io/netrender/slave.py
branches/itasc/release/io/netrender/utils.py
branches/itasc/source/blender/blenlib/BLI_arithb.h
branches/itasc/source/blender/blenlib/intern/arithb.c
branches/itasc/source/blender/editors/animation/keyframing.c
branches/itasc/source/blender/editors/armature/poseobject.c
branches/itasc/source/blender/editors/interface/view2d_ops.c
branches/itasc/source/blender/editors/space_view3d/SConscript
branches/itasc/source/blender/editors/space_view3d/view3d_buttons.c
branches/itasc/source/blender/editors/space_view3d/view3d_draw.c
branches/itasc/source/blender/editors/space_view3d/view3d_view.c
branches/itasc/source/blender/editors/transform/transform.c
branches/itasc/source/blender/editors/transform/transform.h
branches/itasc/source/blender/editors/transform/transform_conversions.c
branches/itasc/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
branches/itasc/source/gameengine/BlenderRoutines/KX_BlenderGL.h
branches/itasc/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
branches/itasc/source/gameengine/BlenderRoutines/SConscript
branches/itasc/source/gameengine/Converter/SConscript
branches/itasc/source/gameengine/Expressions/PyObjectPlus.cpp
branches/itasc/source/gameengine/Expressions/SConscript
branches/itasc/source/gameengine/GameLogic/SConscript
branches/itasc/source/gameengine/GamePlayer/common/SConscript
branches/itasc/source/gameengine/GamePlayer/ghost/SConscript
branches/itasc/source/gameengine/Ketsji/KXNetwork/SConscript
branches/itasc/source/gameengine/Ketsji/KX_GameObject.cpp
branches/itasc/source/gameengine/Ketsji/KX_PolyProxy.cpp
branches/itasc/source/gameengine/Ketsji/SConscript
branches/itasc/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
branches/itasc/source/gameengine/Physics/Bullet/SConscript
branches/itasc/source/gameengine/Physics/common/SConscript
branches/itasc/source/gameengine/Rasterizer/RAS_MaterialBucket.h
branches/itasc/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
branches/itasc/source/gameengine/Rasterizer/RAS_Polygon.cpp
branches/itasc/source/gameengine/Rasterizer/RAS_Polygon.h
branches/itasc/source/gameengine/Rasterizer/SConscript
branches/itasc/source/gameengine/SceneGraph/SConscript
branches/itasc/source/gameengine/VideoTexture/SConscript
branches/itasc/tools/btools.py
Modified: branches/itasc/config/win32-vc-config.py
===================================================================
--- branches/itasc/config/win32-vc-config.py 2009-09-02 04:55:33 UTC (rev 22946)
+++ branches/itasc/config/win32-vc-config.py 2009-09-02 10:14:03 UTC (rev 22947)
@@ -149,6 +149,7 @@
CCFLAGS = ['/nologo', '/Ob1', '/J', '/W3', '/Gd', '/wd4244', '/wd4305', '/wd4800', '/wd4065', '/wd4267']
CXXFLAGS = ['/EHsc']
+BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast', '/arch:SSE']
BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr']
Modified: branches/itasc/config/win64-vc-config.py
===================================================================
--- branches/itasc/config/win64-vc-config.py 2009-09-02 04:55:33 UTC (rev 22946)
+++ branches/itasc/config/win64-vc-config.py 2009-09-02 10:14:03 UTC (rev 22947)
@@ -163,6 +163,7 @@
CFLAGS = []
CCFLAGS = ['/nologo', '/Ob1', '/J', '/W3', '/Gd', '/wd4244', '/wd4305', '/wd4800', '/wd4065', '/wd4267']
CXXFLAGS = ['/EHsc']
+BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast', '/arch:SSE2']
BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr']
Modified: branches/itasc/release/datafiles/splash.jpg
===================================================================
(Binary files differ)
Modified: branches/itasc/release/io/netrender/client.py
===================================================================
--- branches/itasc/release/io/netrender/client.py 2009-09-02 04:55:33 UTC (rev 22946)
+++ branches/itasc/release/io/netrender/client.py 2009-09-02 10:14:03 UTC (rev 22947)
@@ -69,7 +69,7 @@
x= int(r.resolution_x*r.resolution_percentage*0.01)
y= int(r.resolution_y*r.resolution_percentage*0.01)
- f = open(netsetting.path + "output.exr", "wb")
+ f = open(netsettings.path + "output.exr", "wb")
buf = response.read(1024)
while buf:
Modified: branches/itasc/release/io/netrender/master.py
===================================================================
--- branches/itasc/release/io/netrender/master.py 2009-09-02 04:55:33 UTC (rev 22946)
+++ branches/itasc/release/io/netrender/master.py 2009-09-02 10:14:03 UTC (rev 22947)
@@ -46,8 +46,6 @@
self.id = job_id
self.name = name
self.files = files
- self.render_files = [MRenderFile(path) for path in files]
- self.status = JOB_WAITING
self.frames = []
self.chunks = chunks
self.priority = priority
@@ -55,8 +53,19 @@
self.blacklist = blacklist
self.last_dispatched = time.time()
+ # special server properties
+ self.save_path = ""
+ self.files_map = {path: MRenderFile(path) for path in files}
+ self.status = JOB_WAITING
+
+ def save(self):
+ if self.save_path:
+ f = open(self.save_path + "job.txt", "w")
+ f.write(repr(self.serialize()))
+ f.close()
+
def testStart(self):
- for f in self.render_files:
+ for f in self.files_map.values():
if not f.test():
return False
@@ -184,7 +193,7 @@
self.send_head(http.client.ACCEPTED)
elif frame.status == DONE:
self.server.stats("", "Sending result back to client")
- f = open(self.server.path + job_id + "%04d" % job_frame + ".exr", 'rb')
+ f = open(job.save_path + "%04d" % job_frame + ".exr", 'rb')
self.send_head()
@@ -215,7 +224,7 @@
self.send_head(http.client.PROCESSING)
else:
self.server.stats("", "Sending log back to client")
- f = open(self.server.path + job_id + "%04d" % job_frame + ".log", 'rb')
+ f = open(job.save_path + "%04d" % job_frame + ".log", 'rb')
self.send_head()
@@ -270,8 +279,6 @@
print("slave-id", slave_id)
- self.server.getSlave(slave_id)
-
slave = self.server.updateSlave(slave_id)
if slave: # only if slave id is valid
@@ -297,22 +304,35 @@
self.send_head(http.client.NO_CONTENT)
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "file":
- job_id = self.headers['job-id']
- print("file:", job_id, "\n")
+ slave_id = self.headers['slave-id']
- job = self.server.getJobByID(job_id)
+ slave = self.server.updateSlave(slave_id)
- if job:
- self.send_head(headers={"job-id": job.id})
+ if slave: # only if slave id is valid
+ job_id = self.headers['job-id']
+ job_file = self.headers['job-file']
+ print("job:", job_id, "\n")
+ print("file:", job_file, "\n")
- self.server.stats("", "Sending file to render node")
- f = open(self.server.path + job.id + ".blend", 'rb')
+ job = self.server.getJobByID(job_id)
- shutil.copyfileobj(f, self.wfile)
-
- f.close()
- else:
- # no such job id
+ if job:
+ render_file = job.files_map.get(job_file, None)
+
+ if render_file:
+ self.server.stats("", "Sending file to render node")
+ f = open(render_file.path, 'rb')
+
+ shutil.copyfileobj(f, self.wfile)
+
+ f.close()
+ else:
+ # no such file
+ self.send_head(http.client.NO_CONTENT)
+ else:
+ # no such job id
+ self.send_head(http.client.NO_CONTENT)
+ else: # invalid slave id
self.send_head(http.client.NO_CONTENT)
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "slave":
@@ -345,14 +365,15 @@
job_id = self.server.nextJobID()
- print("chunks", job_info.chunks)
+ print(job_info.files)
job = MRenderJob(job_id, job_info.name, job_info.files, chunks = job_info.chunks, priority = job_info.priority, blacklist = job_info.blacklist)
- self.server.addJob(job)
for frame in job_info.frames:
frame = job.addFrame(frame.number)
-
+
+ self.server.addJob(job)
+
headers={"job-id": job_id}
if job.testStart():
@@ -411,87 +432,101 @@
self.server.stats("", "Receiving job")
length = int(self.headers['content-length'])
- job_frame_string = self.headers['job-frame']
- job_name = self.headers.get('job-name', "")
- job_chunks = int(self.headers.get('job-chunks', "1"))
- blacklist = self.headers.get('slave-blacklist', '').split()
+ job_id = self.headers['job-id']
+ job_file = self.headers['job-file']
- job_id = self.server.nextJobID()
+ job = self.server.getJobByID(job_id)
- buf = self.rfile.read(length)
-
- job_path = job_id + ".blend"
-
- f = open(self.server.path + job_path, "wb")
- f.write(buf)
- f.close()
- del buf
-
- job = MRenderJob(job_id, job_name, job_path, chunks = job_chunks, blacklist = blacklist)
- self.server.addJob(job)
+ if job:
- if ":" in job_frame_string:
- frame_start, frame_end = [int(x) for x in job_frame_string.split(":")]
+ render_file = job.files_map.get(job_file, None)
- for job_frame in range(frame_start, frame_end + 1):
- frame = job.addFrame(job_frame)
- else:
- job_frame = int(job_frame_string)
- frame = job.addFrame(job_frame)
-
- job.start()
-
- self.send_head(headers={"job-id": job_id})
+ if render_file:
+ main_file = job.files[0]
+
+ main_path, main_name = os.path.split(main_file)
+
+ if job_file != main_file:
+ file_path = prefixPath(job.save_path, job_file, main_path)
+ else:
+ file_path = job.save_path + main_name
+
+ buf = self.rfile.read(length)
+
+ f = open(file_path, "wb")
+ f.write(buf)
+ f.close()
+ del buf
+
+ render_file.path = file_path # set the new path
+
+ if job.testStart():
+ self.send_head(headers=headers)
+ else:
+ self.send_head(http.client.ACCEPTED, headers=headers)
+ else: # invalid file
+ self.send_head(http.client.NO_CONTENT)
+ else: # job not found
+ self.send_head(http.client.NO_CONTENT)
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "render":
print("writing result file")
self.server.stats("", "Receiving render result")
job_id = self.headers['job-id']
- job_frame = int(self.headers['job-frame'])
- job_result = int(self.headers['job-result'])
- job_time = float(self.headers['job-time'])
- if job_result == DONE:
- length = int(self.headers['content-length'])
- buf = self.rfile.read(length)
- f = open(self.server.path + job_id + "%04d" % job_frame + ".exr", 'wb')
- f.write(buf)
- f.close()
+ job = self.server.getJobByID(job_id)
+
+ if job:
+ job_frame = int(self.headers['job-frame'])
+ job_result = int(self.headers['job-result'])
+ job_time = float(self.headers['job-time'])
- del buf
+ if job_result == DONE:
+ length = int(self.headers['content-length'])
+ buf = self.rfile.read(length)
+ f = open(job.save_path + "%04d" % job_frame + ".exr", 'wb')
+ f.write(buf)
+ f.close()
+
+ del buf
+
+ job = self.server.getJobByID(job_id)
+ frame = job[job_frame]
+ frame.status = job_result
+ frame.time = job_time
+
+ self.server.updateSlave(self.headers['slave-id'])
- job = self.server.getJobByID(job_id)
- frame = job[job_frame]
- frame.status = job_result
- frame.time = job_time
-
- self.server.updateSlave(self.headers['slave-id'])
-
- self.send_head()
+ self.send_head()
+ else: # job not found
+ self.send_head(http.client.NO_CONTENT)
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "log":
print("writing log file")
self.server.stats("", "Receiving log file")
- length = int(self.headers['content-length'])
job_id = self.headers['job-id']
- job_frame = int(self.headers['job-frame'])
- print("log length:", length)
+ job = self.server.getJobByID(job_id)
- buf = self.rfile.read(length)
- f = open(self.server.path + job_id + "%04d" % job_frame + ".log", 'wb')
- f.write(buf)
- f.close()
+ if job:
+ length = int(self.headers['content-length'])
+ job_frame = int(self.headers['job-frame'])
- del buf
-
- self.server.updateSlave(self.headers['slave-id'])
-
- self.send_head()
+ buf = self.rfile.read(length)
+ f = open(job.save_path + "%04d" % job_frame + ".log", 'wb')
+ f.write(buf)
+ f.close()
+
+ del buf
+
+ self.server.updateSlave(self.headers['slave-id'])
+
+ self.send_head()
+ else: # job not found
+ self.send_head(http.client.NO_CONTENT)
-
class RenderMasterServer(http.server.HTTPServer):
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list