[Bf-blender-cvs] [5b1330e] master: Outliner: minor speedup for drawing, avoid 3 rna lookups per object

Campbell Barton noreply at git.blender.org
Thu Jan 16 22:42:43 CET 2014


Commit: 5b1330e99d5a281efa448b64880dfa24be67d8f2
Author: Campbell Barton
Date:   Fri Jan 17 08:37:45 2014 +1100
https://developer.blender.org/rB5b1330e99d5a281efa448b64880dfa24be67d8f2

Outliner: minor speedup for drawing, avoid 3 rna lookups per object

also for movie-clip dope-sheet

===================================================================

M	source/blender/editors/space_clip/clip_dopesheet_draw.c
M	source/blender/editors/space_outliner/outliner_draw.c

===================================================================

diff --git a/source/blender/editors/space_clip/clip_dopesheet_draw.c b/source/blender/editors/space_clip/clip_dopesheet_draw.c
index e85b055..d15a61d 100644
--- a/source/blender/editors/space_clip/clip_dopesheet_draw.c
+++ b/source/blender/editors/space_clip/clip_dopesheet_draw.c
@@ -293,6 +293,7 @@ void clip_draw_dopesheet_channels(const bContext *C, ARegion *ar)
 	int fontid = style->widget.uifont_id;
 	int height;
 	float y;
+	PropertyRNA *chan_prop_lock;
 
 	if (!clip)
 		return;
@@ -355,6 +356,10 @@ void clip_draw_dopesheet_channels(const bContext *C, ARegion *ar)
 	block = uiBeginBlock(C, ar, __func__, UI_EMBOSS);
 	y = (float) CHANNEL_FIRST;
 
+	/* get RNA properties (once) */
+	chan_prop_lock = RNA_struct_type_find_property(&RNA_MovieTrackingTrack, "lock");
+	BLI_assert(chan_prop_lock);
+
 	glEnable(GL_BLEND);
 	for (channel = dopesheet->channels.first; channel; channel = channel->next) {
 		float yminc = (float)(y - CHANNEL_HEIGHT_HALF);
@@ -371,9 +376,9 @@ void clip_draw_dopesheet_channels(const bContext *C, ARegion *ar)
 			RNA_pointer_create(&clip->id, &RNA_MovieTrackingTrack, track, &ptr);
 
 			uiBlockSetEmboss(block, UI_EMBOSSN);
-			uiDefIconButR(block, ICONTOG, 1, icon,
-			              v2d->cur.xmax - UI_UNIT_X - CHANNEL_PAD, y - UI_UNIT_Y / 2.0f,
-			              UI_UNIT_X, UI_UNIT_Y, &ptr, "lock", 0, 0, 0, 0, 0, NULL);
+			uiDefIconButR_prop(block, ICONTOG, 1, icon,
+			                   v2d->cur.xmax - UI_UNIT_X - CHANNEL_PAD, y - UI_UNIT_Y / 2.0f,
+			                   UI_UNIT_X, UI_UNIT_Y, &ptr, chan_prop_lock, 0, 0, 0, 0, 0, NULL);
 			uiBlockSetEmboss(block, UI_EMBOSS);
 		}
 
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index b5d4734..b4fdb1a 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -534,35 +534,44 @@ static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar
 	Object *ob = NULL;
 	Group  *gr = NULL;
 
+	PropertyRNA *object_prop_hide, *object_prop_hide_select, *object_prop_hide_render;
+
+	/* get RNA properties (once) */
+	object_prop_hide = RNA_struct_type_find_property(&RNA_Object, "hide");
+	object_prop_hide_select = RNA_struct_type_find_property(&RNA_Object, "hide_select");
+	object_prop_hide_render = RNA_struct_type_find_property(&RNA_Object, "hide_render");
+	BLI_assert(object_prop_hide && object_prop_hide_select  && object_prop_hide_render);
+
+
 	for (te = lb->first; te; te = te->next) {
 		tselem = TREESTORE(te);
 		if (te->ys + 2 * UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) {
 			/* objects have toggle-able restriction flags */
 			if (tselem->type == 0 && te->idcode == ID_OB) {
 				PointerRNA ptr;
-				
+
 				ob = (Object *)tselem->id;
 				RNA_pointer_create((ID *)ob, &RNA_Object, ob, &ptr);
-				
+
 				uiBlockSetEmboss(block, UI_EMBOSSN);
-				bt = uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF,
-				                   (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX), te->ys, UI_UNIT_X, UI_UNIT_Y,
-				                   &ptr, "hide", -1, 0, 0, -1, -1,
-				                   TIP_("Restrict viewport visibility (Ctrl - Recursive)"));
+				bt = uiDefIconButR_prop(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF,
+				                        (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX), te->ys, UI_UNIT_X, UI_UNIT_Y,
+				                        &ptr, object_prop_hide, -1, 0, 0, -1, -1,
+				                        TIP_("Restrict viewport visibility (Ctrl - Recursive)"));
 				uiButSetFunc(bt, restrictbutton_view_cb, scene, ob);
 				uiButSetFlag(bt, UI_BUT_DRAG_LOCK);
 				
-				bt = uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF,
-				                   (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_SELECTX), te->ys, UI_UNIT_X, UI_UNIT_Y,
-				                   &ptr, "hide_select", -1, 0, 0, -1, -1,
-				                   TIP_("Restrict viewport selection (Ctrl - Recursive)"));
+				bt = uiDefIconButR_prop(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF,
+				                        (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_SELECTX), te->ys, UI_UNIT_X, UI_UNIT_Y,
+				                        &ptr, object_prop_hide_select, -1, 0, 0, -1, -1,
+				                        TIP_("Restrict viewport selection (Ctrl - Recursive)"));
 				uiButSetFunc(bt, restrictbutton_sel_cb, scene, ob);
 				uiButSetFlag(bt, UI_BUT_DRAG_LOCK);
 				
-				bt = uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF,
-				                   (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_RENDERX), te->ys, UI_UNIT_X, UI_UNIT_Y,
-				                   &ptr, "hide_render", -1, 0, 0, -1, -1,
-				                   TIP_("Restrict rendering (Ctrl - Recursive)"));
+				bt = uiDefIconButR_prop(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF,
+				                        (int)(ar->v2d.cur.xmax - OL_TOG_RESTRICT_RENDERX), te->ys, UI_UNIT_X, UI_UNIT_Y,
+				                        &ptr, object_prop_hide_render, -1, 0, 0, -1, -1,
+				                        TIP_("Restrict rendering (Ctrl - Recursive)"));
 				uiButSetFunc(bt, restrictbutton_rend_cb, scene, ob);
 				uiButSetFlag(bt, UI_BUT_DRAG_LOCK);




More information about the Bf-blender-cvs mailing list