more mini optimizations - don't call UI_ThemeColor 4 times per curve handle, instead...
authorCampbell Barton <ideasman42@gmail.com>
Sat, 17 Sep 2011 07:14:39 +0000 (07:14 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 17 Sep 2011 07:14:39 +0000 (07:14 +0000)
also remove redundant NULL check.

source/blender/blenkernel/intern/screen.c
source/blender/editors/sculpt_paint/paint_image.c
source/blender/editors/space_view3d/drawobject.c

index 50b3e32..ef1b75e 100644 (file)
@@ -277,8 +277,7 @@ void BKE_area_region_free(SpaceType *st, ARegion *ar)
                ar->v2d.tab_offset= NULL;
        }
 
-       if(ar)
-               BLI_freelistN(&ar->panels);
+       BLI_freelistN(&ar->panels);
 }
 
 /* not area itself */
index 7f563b1..784c35c 100644 (file)
@@ -717,7 +717,7 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
  *  1  : occluded
        2       : occluded with w[3] weights set (need to know in some cases) */
 
-static int project_paint_occlude_ptv(float pt[3], float v1[3], float v2[3], float v3[3], float w[3], int is_ortho)
+static int project_paint_occlude_ptv(float pt[3], float v1[4], float v2[4], float v3[4], float w[3], int is_ortho)
 {
        /* if all are behind us, return false */
        if(v1[2] > pt[2] && v2[2] > pt[2] && v3[2] > pt[2])
index 358df1d..af9c7ef 100644 (file)
@@ -4538,16 +4538,22 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles)
 {
        BezTriple *bezt;
        float *fp;
-       int basecol;
        int a;
-       
+
        if(nu->hide || hide_handles) return;
 
        glBegin(GL_LINES); 
-       
+
        if(nu->type == CU_BEZIER) {
-               if(sel) basecol= TH_HANDLE_SEL_FREE;
-               else basecol= TH_HANDLE_FREE;
+
+#define TH_HANDLE_COL_TOT ((TH_HANDLE_SEL_FREE - TH_HANDLE_FREE) + 1)
+               /* use MIN2 when indexing to ensure newer files dont read outside the array */
+               unsigned char handle_cols[TH_HANDLE_COL_TOT][3];
+               const int basecol= sel ? TH_HANDLE_SEL_FREE : TH_HANDLE_FREE;
+
+               for (a=0; a < TH_HANDLE_COL_TOT; a++) {
+                       UI_GetThemeColor3ubv(basecol + a, handle_cols[a]);
+               }
 
                bezt= nu->bezt;
                a= nu->pntsu;
@@ -4556,31 +4562,34 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles)
                                if( (bezt->f2 & SELECT)==sel) {
                                        fp= bezt->vec[0];
 
-                                       UI_ThemeColor(basecol + bezt->h1);
+                                       glColor3ubv(handle_cols[MIN2(bezt->h1, TH_HANDLE_COL_TOT-1)]);
                                        glVertex3fv(fp);
                                        glVertex3fv(fp+3); 
 
-                                       UI_ThemeColor(basecol + bezt->h2);
+                                       glColor3ubv(handle_cols[MIN2(bezt->h2, TH_HANDLE_COL_TOT-1)]);
                                        glVertex3fv(fp+3); 
                                        glVertex3fv(fp+6); 
                                }
                                else if( (bezt->f1 & SELECT)==sel) {
                                        fp= bezt->vec[0];
 
-                                       UI_ThemeColor(basecol + bezt->h1);
+                                       glColor3ubv(handle_cols[MIN2(bezt->h1, TH_HANDLE_COL_TOT-1)]);
                                        glVertex3fv(fp); 
                                        glVertex3fv(fp+3); 
                                }
                                else if( (bezt->f3 & SELECT)==sel) {
                                        fp= bezt->vec[1];
 
-                                       UI_ThemeColor(basecol + bezt->h2);
+                                       glColor3ubv(handle_cols[MIN2(bezt->h2, TH_HANDLE_COL_TOT-1)]);
                                        glVertex3fv(fp); 
                                        glVertex3fv(fp+3); 
                                }
                        }
                        bezt++;
                }
+
+#undef TH_HANDLE_COL_TOT
+
        }
        glEnd();
 }