Skip to content

Commit

Permalink
Split the printing of the export stats into its own function and thread.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian Hsieh committed Jan 4, 2022
1 parent 9715259 commit eb88a08
Showing 1 changed file with 21 additions and 12 deletions.
33 changes: 21 additions & 12 deletions rman_render.py
Expand Up @@ -176,14 +176,12 @@ def draw_threading_func(db):
else:
time.sleep(1.0)

def call_stats_update_payloads(db):

if db.rman_is_exporting:
while db.rman_is_exporting:
db.stats_mgr.update_payloads()
time.sleep(0.1)
return
def call_stats_export_payloads(db):
while db.rman_is_exporting:
db.stats_mgr.update_payloads()
time.sleep(0.1)

def call_stats_update_payloads(db):
while db.rman_running:
if not db.bl_engine:
break
Expand Down Expand Up @@ -428,11 +426,20 @@ def do_draw_buckets(self):
return get_pref('rman_viewport_draw_bucket', default=True) and self.rman_is_refining

def do_draw_progressbar(self):
return get_pref('rman_viewport_draw_progress') and self.stats_mgr.is_connected() and self.stats_mgr._progress < 100
return get_pref('rman_viewport_draw_progress') and self.stats_mgr.is_connected() and self.stats_mgr._progress < 100

def start_export_stats_thread(self):
# start an export stats thread
global __RMAN_STATS_THREAD__
__RMAN_STATS_THREAD__ = threading.Thread(target=call_stats_export_payloads, args=(self, ))
__RMAN_STATS_THREAD__.start()

def start_stats_thread(self):
# start a stats thread so we can periodically call update_payloads
global __RMAN_STATS_THREAD__
global __RMAN_STATS_THREAD__
if __RMAN_STATS_THREAD__:
__RMAN_STATS_THREAD__.join()
__RMAN_STATS_THREAD__ = None
__RMAN_STATS_THREAD__ = threading.Thread(target=call_stats_update_payloads, args=(self, ))
__RMAN_STATS_THREAD__.start()

Expand Down Expand Up @@ -508,7 +515,7 @@ def start_render(self, depsgraph, for_background=False):
bl_layer = depsgraph.view_layer
self.rman_is_exporting = True
self.rman_running = True
self.start_stats_thread()
self.start_export_stats_thread()
self.rman_scene.export_for_final_render(depsgraph, self.sg_scene, bl_layer, is_external=is_external)
self.rman_is_exporting = False
self.stats_mgr.reset_progress()
Expand Down Expand Up @@ -754,7 +761,7 @@ def start_bake_render(self, depsgraph, for_background=False):
bl_layer = depsgraph.view_layer
self.rman_is_exporting = True
self.rman_running = True
self.start_stats_thread()
self.start_export_stats_thread()
self.rman_scene.export_for_bake_render(depsgraph, self.sg_scene, bl_layer, is_external=is_external)
self.rman_is_exporting = False

Expand All @@ -763,6 +770,7 @@ def start_bake_render(self, depsgraph, for_background=False):
render_cmd = "prman -blocking"
render_cmd = self._append_render_cmd(render_cmd)
self.sg_scene.Render(render_cmd)
self.start_stats_thread()
except Exception as e:
self.bl_engine.report({'ERROR'}, 'Export failed: %s' % str(e))
self.stop_render(stop_draw_thread=False)
Expand Down Expand Up @@ -910,7 +918,7 @@ def start_interactive_render(self, context, depsgraph):
self.rman_scene_sync.sg_scene = self.sg_scene
rfb_log().info("Parsing scene...")
self.rman_is_exporting = True
self.start_stats_thread()
self.start_export_stats_thread()
self.rman_scene.export_for_interactive_render(context, depsgraph, self.sg_scene)
self.rman_is_exporting = False

Expand All @@ -920,6 +928,7 @@ def start_interactive_render(self, context, depsgraph):
render_cmd = "prman -live"
render_cmd = self._append_render_cmd(render_cmd)
self.sg_scene.Render(render_cmd)
self.start_stats_thread()

rfb_log().info("RenderMan Viewport Render Started.")

Expand Down

0 comments on commit eb88a08

Please sign in to comment.