Revision: 28571
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28571
Author:   joeedh
Date:     2010-05-04 14:31:24 +0200 (Tue, 04 May 2010)

Log Message:
-----------
merging revisions 28564-28569 from render branch into trunk

Modified Paths:
--------------
    trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
    trunk/blender/intern/guardedalloc/intern/mallocn.c
    trunk/blender/release/scripts/ui/properties_data_mesh.py
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/object/object_vgroup.c
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/makesdna/DNA_action_types.h
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesdna/DNA_object_types.h
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
===================================================================
--- trunk/blender/intern/guardedalloc/MEM_guardedalloc.h        2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/intern/guardedalloc/MEM_guardedalloc.h        2010-05-04 
12:31:24 UTC (rev 28571)
@@ -144,6 +144,12 @@
        uintptr_t MEM_get_mapped_memory_in_use(void);
        int MEM_get_memory_blocks_in_use(void);
 
+       /*reset the peak memory statistic to zero*/
+       void MEM_reset_peak_memory(void);
+
+       /*get the peak memory usage in bytes, including mmap allocations*/
+       uintptr_t MEM_get_peak_memory(void);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/intern/guardedalloc/intern/mallocn.c
===================================================================
--- trunk/blender/intern/guardedalloc/intern/mallocn.c  2010-05-04 12:26:00 UTC 
(rev 28570)
+++ trunk/blender/intern/guardedalloc/intern/mallocn.c  2010-05-04 12:31:24 UTC 
(rev 28571)
@@ -138,7 +138,7 @@
        
 
 static volatile int totblock= 0;
-static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0;
+static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0, peak_mem = 0;
 
 static volatile struct localListBase _membase;
 static volatile struct localListBase *membase = &_membase;
@@ -293,6 +293,8 @@
        
        totblock++;
        mem_in_use += len;
+
+       peak_mem = mem_in_use > peak_mem ? mem_in_use : peak_mem;
 }
 
 void *MEM_mallocN(size_t len, const char *str)
@@ -377,6 +379,7 @@
                make_memhead_header(memh, len, str);
                memh->mmap= 1;
                mmap_in_use += len;
+               peak_mem = mmap_in_use > peak_mem ? mmap_in_use : peak_mem;
                mem_unlock_thread();
 #ifdef DEBUG_MEMCOUNTER
                if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL)
@@ -802,6 +805,24 @@
        return(name);
 }
 
+uintptr_t MEM_get_peak_memory(void)
+{
+       uintptr_t _peak_mem;
+
+       mem_lock_thread();
+       _peak_mem = peak_mem;
+       mem_unlock_thread();
+
+       return _peak_mem;
+}
+
+void MEM_reset_peak_memory(void)
+{
+       mem_lock_thread();
+       peak_mem = 0;
+       mem_unlock_thread();
+}
+
 uintptr_t MEM_get_memory_in_use(void)
 {
        uintptr_t _mem_in_use;

Modified: trunk/blender/release/scripts/ui/properties_data_mesh.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_mesh.py    2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/release/scripts/ui/properties_data_mesh.py    2010-05-04 
12:31:24 UTC (rev 28571)
@@ -155,6 +155,9 @@
         col.operator("object.vertex_group_add", icon='ZOOMIN', text="")
         col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="")
         col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', 
text="")
+        if group:
+            col.operator("object.vertex_group_move", icon='TRIA_UP', 
text="").direction = 'UP'
+            col.operator("object.vertex_group_move", icon='TRIA_DOWN', 
text="").direction = 'DOWN'
 
         if group:
             row = layout.row()

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c   2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c   2010-05-04 
12:31:24 UTC (rev 28571)
@@ -2950,7 +2950,7 @@
        float birthtime = 0.0, dietime = 0.0;
        float t, time = 0.0, keytime = 0.0, frs_sec;
        float hairmat[4][4], rotmat[3][3], prev_tangent[3];
-       int k,i;
+       int k, i;
        int steps = (int)pow(2.0, (double)pset->draw_step);
        int totpart = edit->totpoint, recalc_set=0;
        float sel_col[3];
@@ -3097,17 +3097,26 @@
 
                        /* selection coloring in edit mode */
                        if(pset->brushtype==PE_BRUSH_WEIGHT){
-                               if(k==0)
+                               float t2;
+
+                               if(k==0) {
                                        weight_to_rgb(pind.hkey[1]->weight, 
ca->col, ca->col+1, ca->col+2);
-                               else if(k >= steps - 1)
-                                       weight_to_rgb(pind.hkey[0]->weight, 
ca->col, ca->col+1, ca->col+2);
-                               else
-                                       weight_to_rgb((1.0f - keytime) * 
pind.hkey[0]->weight + keytime * pind.hkey[1]->weight, ca->col, ca->col+1, 
ca->col+2);
+                               } else {
+                                       float w1[3], w2[3];
+                                       keytime = (t - 
(*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time));
 
+                                       weight_to_rgb(pind.hkey[0]->weight, w1, 
w1+1, w1+2);
+                                       weight_to_rgb(pind.hkey[1]->weight, w2, 
w2+1, w2+2);
+
+                                       interp_v3_v3v3(ca->col, w1, w2, 
keytime);
+                               }
+
                                /* at the moment this is only used for weight 
painting.
                                 * will need to move out of this check if its 
used elsewhere. */
-                               pind.hkey[0] = pind.hkey[1];
-                               pind.hkey[1]++;
+                               t2 = birthtime + ((float)(k+1)/(float)steps) * 
(dietime - birthtime);
+
+                               while (pind.hkey[1]->time < t2) pind.hkey[1]++;
+                               pind.hkey[0] = pind.hkey[1] - 1;
                        }
                        else {
                                if((ekey + (pind.ekey[0] - point->keys))->flag 
& PEK_SELECT){

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2010-05-04 
12:31:24 UTC (rev 28571)
@@ -2221,6 +2221,12 @@
        /* always rebuild to match proxy or lib changes */
        rebuild= ob->proxy || (ob->id.lib==NULL && arm->id.lib);
 
+       if (ob->proxy && pose->proxy_act_bone[0]) {
+               Bone *bone = get_named_bone(arm, pose->proxy_act_bone);
+               if (bone)
+                       arm->act_bone = bone;
+       }
+
        for (pchan = pose->chanbase.first; pchan; pchan=pchan->next) {
                lib_link_constraints(fd, (ID *)ob, &pchan->constraints);
                
@@ -11579,7 +11585,6 @@
        PartEff *paf;
        int a;
 
-
        expand_doit(fd, mainvar, ob->data);
        
        for (md=ob->modifiers.first; md; md=md->next) {

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c  2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c  2010-05-04 
12:31:24 UTC (rev 28571)
@@ -1266,6 +1266,14 @@
                        write_sensors(wd, &ob->sensors);
                        write_controllers(wd, &ob->controllers);
                        write_actuators(wd, &ob->actuators);
+
+                       if (ob->type == OB_ARMATURE) {
+                               bArmature *arm = ob->data;
+                               if (arm && ob->pose && arm->act_bone) {
+                                       strcpy(ob->pose->proxy_act_bone, 
arm->act_bone->name);
+                               }
+                       }
+
                        write_pose(wd, ob->pose);
                        write_defgroups(wd, &ob->defbase);
                        write_constraints(wd, &ob->constraints);

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h 2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_intern.h 2010-05-04 
12:31:24 UTC (rev 28571)
@@ -196,6 +196,7 @@
 void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_sort(struct wmOperatorType *ot);
+void OBJECT_OT_vertex_group_move(struct wmOperatorType *ot);
 
 void OBJECT_OT_game_property_new(struct wmOperatorType *ot);
 void OBJECT_OT_game_property_remove(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c    2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_ops.c    2010-05-04 
12:31:24 UTC (rev 28571)
@@ -176,6 +176,7 @@
        WM_operatortype_append(OBJECT_OT_vertex_group_mirror);
        WM_operatortype_append(OBJECT_OT_vertex_group_set_active);
        WM_operatortype_append(OBJECT_OT_vertex_group_sort);
+       WM_operatortype_append(OBJECT_OT_vertex_group_move);
 
        WM_operatortype_append(OBJECT_OT_game_property_new);
        WM_operatortype_append(OBJECT_OT_game_property_remove);

Modified: trunk/blender/source/blender/editors/object/object_vgroup.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_vgroup.c 2010-05-04 
12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_vgroup.c 2010-05-04 
12:31:24 UTC (rev 28571)
@@ -122,6 +122,72 @@
        }
 }
 
+int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot)
+{
+       if(id) {
+               switch(GS(id->name)) {
+                       case ID_ME:
+                       {
+                               Mesh *me = (Mesh *)id;
+                               *dvert_tot= me->totvert;
+
+                               if (!me->edit_mesh) {
+                                       int i;
+
+                                       *dvert_arr= 
MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me");
+
+                                       for (i=0; i<me->totvert; i++) {
+                                               (*dvert_arr)[i] = me->dvert + i;
+                                       }
+                               } else {
+                                       EditMesh *em = me->edit_mesh;
+                                       EditVert *eve;
+                                       int i;
+
+                                       if (!CustomData_has_layer(&em->vdata, 
CD_MDEFORMVERT)) {
+                                               *dvert_tot = 0;
+                                               *dvert_arr = NULL;
+                                               return 0;
+                                       }
+
+                                       i = 0;
+                                       for (eve=em->verts.first; eve; 
eve=eve->next) i++;
+
+                                       *dvert_arr= 
MEM_mallocN(sizeof(void*)*i, "vgroup parray from me");
+                                       *dvert_tot = i;
+
+                                       i = 0;
+                                       for (eve=em->verts.first; eve; 
eve=eve->next, i++) {
+                                               (*dvert_arr)[i] = 
CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
+                                       }
+
+                               }
+                               return 1;
+                       }
+                       case ID_LT:
+                       {
+                               int i=0;
+
+                               Lattice *lt= (Lattice *)id;
+                               lt= (lt->editlatt)? lt->editlatt: lt;
+
+                               *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+                               *dvert_arr= 
MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me");
+
+                               for (i=0; i<*dvert_tot; i++) {
+                                       (*dvert_arr)[i] = lt->dvert + i;
+                               }
+
+                               return 1;
+                       }
+               }
+       }
+
+       *dvert_arr= NULL;
+       *dvert_tot= 0;
+       return 0;
+}
+
 /* returns true if the id type supports weights */
 int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
 {
@@ -153,20 +219,22 @@
 /* matching index only */
 int ED_vgroup_copy_array(Object *ob, Object *ob_from)
 {
-       MDeformVert *dvert_array_from, *dvf;
-       MDeformVert *dvert_array, *dv;
-
+       MDeformVert **dvert_array_from, **dvf;
+       MDeformVert **dvert_array, **dv;
        int dvert_tot_from;
        int dvert_tot;
        int i;
        int totdef_from= BLI_countlist(&ob_from->defbase);
        int totdef= BLI_countlist(&ob->defbase);
 
-       ED_vgroup_give_array(ob_from->data, &dvert_array_from, &dvert_tot_from);
-       ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot);
+       ED_vgroup_give_parray(ob_from->data, &dvert_array_from, 
&dvert_tot_from);
+       ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot);
 

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to