[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57107] trunk/blender: scene render dimension panal: avoid re-creating the framerate string on every redraw, cache the string for reuse.

Campbell Barton ideasman42 at gmail.com
Wed May 29 16:55:06 CEST 2013


Revision: 57107
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57107
Author:   campbellbarton
Date:     2013-05-29 14:55:06 +0000 (Wed, 29 May 2013)
Log Message:
-----------
scene render dimension panal: avoid re-creating the framerate string on every redraw, cache the string for reuse.

also remove redundant returns from my last commit.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_render.py
    trunk/blender/source/blender/bmesh/operators/bmo_bridge.c

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_render.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_render.py	2013-05-29 13:41:35 UTC (rev 57106)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_render.py	2013-05-29 14:55:06 UTC (rev 57107)
@@ -76,6 +76,49 @@
     bl_label = "Dimensions"
     COMPAT_ENGINES = {'BLENDER_RENDER'}
 
+    _frame_rate_args_prev = None
+    _preset_class = None
+    @staticmethod
+    def _draw_framerate_label(*args):
+        # avoids re-creating text string each draw
+        if RENDER_PT_dimensions._frame_rate_args_prev == args:
+            return RENDER_PT_dimensions._frame_rate_ret
+
+        fps, fps_base, preset_label = args
+        
+        if fps_base == 1.0:
+            fps_rate = round(fps)
+        else:
+            fps_rate = round(fps / fps_base, 2)
+
+        # TODO: Change the following to iterate over existing presets
+        custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
+
+        if custom_framerate is True:
+            fps_label_text = "Custom (%r fps)" % fps_rate
+            show_framerate = True
+        else:
+            fps_label_text = "%r fps" % fps_rate
+            show_framerate = (preset_label == "Custom")
+
+        RENDER_PT_dimensions._frame_rate_args_prev = args
+        RENDER_PT_dimensions._frame_rate_ret = args = (fps_label_text, show_framerate)
+        return args
+
+    @staticmethod
+    def draw_framerate(sub, rd):
+        if RENDER_PT_dimensions._preset_class is None:
+            RENDER_PT_dimensions._preset_class = bpy.types.RENDER_MT_framerate_presets
+
+        args = rd.fps, rd.fps_base, RENDER_PT_dimensions._preset_class.bl_label
+        fps_label_text, show_framerate = RENDER_PT_dimensions._draw_framerate_label(*args)
+
+        sub.menu("RENDER_MT_framerate_presets", text=fps_label_text)
+
+        if show_framerate:
+            sub.prop(rd, "fps")
+            sub.prop(rd, "fps_base", text="/")
+
     def draw(self, context):
         layout = self.layout
 
@@ -114,24 +157,9 @@
         sub.prop(scene, "frame_step")
 
         sub.label(text="Frame Rate:")
-        if rd.fps_base == 1:
-            fps_rate = round(rd.fps / rd.fps_base)
-        else:
-            fps_rate = round(rd.fps / rd.fps_base, 2)
 
-        # TODO: Change the following to iterate over existing presets
-        custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
+        self.draw_framerate(sub, rd)
 
-        if custom_framerate is True:
-            fps_label_text = "Custom (" + str(fps_rate) + " fps)"
-        else:
-            fps_label_text = str(fps_rate) + " fps"
-
-        sub.menu("RENDER_MT_framerate_presets", text=fps_label_text)
-
-        if custom_framerate or (bpy.types.RENDER_MT_framerate_presets.bl_label == "Custom"):
-            sub.prop(rd, "fps")
-            sub.prop(rd, "fps_base", text="/")
         subrow = sub.row(align=True)
         subrow.label(text="Time Remapping:")
         subrow = sub.row(align=True)

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bridge.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-05-29 13:41:35 UTC (rev 57106)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-05-29 14:55:06 UTC (rev 57107)
@@ -75,12 +75,10 @@
 		if (l->v == v1) {
 			*l1 = l;
 			*l2 = l->next;
-			return;
 		}
 		else {
 			*l2 = l;
 			*l1 = l->next;
-			return;
 		}
 	}
 	else {




More information about the Bf-blender-cvs mailing list