Merging r58144 through r58147 form trunk into soc-2013-depsgraph_mt
authorSergey Sharybin <sergey.vfx@gmail.com>
Wed, 10 Jul 2013 10:31:59 +0000 (10:31 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 10 Jul 2013 10:31:59 +0000 (10:31 +0000)
build_files/cmake/Modules/FindPythonLibsUnix.cmake
source/blender/blenkernel/intern/mball.c
source/blender/editors/armature/armature_relations.c
source/blender/editors/curve/editcurve.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/render/render_internal.c

index 1dffd54fed120421eb8c3640017e07724f1521b4..82f74373b8bc37886aa8444cc42f078f0c5122ec 100644 (file)
@@ -2,9 +2,11 @@
 # Find the native Python includes and library
 #
 # Note:, This is not _yet_ intended to be a general python module for other
-#  projects to use since its hard coded to python 3.2 as blender only supports
-#  a single python version.
-#  This is for blender/unix python only.
+#  projects to use since its hard coded to fixed Python version
+#  as Blender only supports a single Python version at the moment.
+#
+# Note:
+#  this is for Blender/Unix Python only.
 #
 # This module defines
 #  PYTHON_VERSION
index e10dbe7f41b6595e8bace2cf74a745575535490b..12160054e40dbff71cd40bfb026acafff00c284c 100644 (file)
@@ -1647,6 +1647,14 @@ BLI_INLINE void copy_v3_fl3(float v[3], float x, float y, float z)
        v[2] = z;
 }
 
+/* TODO(sergey): Perhaps it could be general utility function in mathutils. */
+static bool has_zero_axis_m4(float matrix[4][4])
+{
+       return len_squared_v3(matrix[0]) < FLT_EPSILON ||
+              len_squared_v3(matrix[1]) < FLT_EPSILON ||
+              len_squared_v3(matrix[2]) < FLT_EPSILON;
+}
+
 static float init_meta(PROCESS *process, Scene *scene, Object *ob)    /* return totsize */
 {
        Scene *sce_iter = scene;
@@ -1695,13 +1703,13 @@ static float init_meta(PROCESS *process, Scene *scene, Object *ob)    /* return
 
                        /* when metaball object has zero scale, then MetaElem to this MetaBall
                         * will not be put to mainb array */
-                       if (bob->size[0] == 0.0f || bob->size[1] == 0.0f || bob->size[2] == 0.0f) {
+                       if (has_zero_axis_m4(bob->obmat)) {
                                zero_size = 1;
                        }
                        else if (bob->parent) {
                                struct Object *pob = bob->parent;
                                while (pob) {
-                                       if (pob->size[0] == 0.0f || pob->size[1] == 0.0f || pob->size[2] == 0.0f) {
+                                       if (has_zero_axis_m4(pob->obmat)) {
                                                zero_size = 1;
                                                break;
                                        }
index d5dbe80538ff6fae3767b8f1d825e4ab676e1734..289901076a17efb90227d526a34077822cd468e9 100644 (file)
@@ -170,7 +170,7 @@ static void joined_armature_fix_links(Object *tarArm, Object *srcArm, bPoseChann
 }
 
 /* join armature exec is exported for use in object->join objects operator... */
-int join_armature_exec(bContext *C, wmOperator *UNUSED(op))
+int join_armature_exec(bContext *C, wmOperator *op)
 {
        Main *bmain = CTX_data_main(C);
        Scene *scene = CTX_data_scene(C);
@@ -180,6 +180,7 @@ int join_armature_exec(bContext *C, wmOperator *UNUSED(op))
        bPoseChannel *pchan, *pchann;
        EditBone *curbone;
        float mat[4][4], oimat[4][4];
+       bool ok = false;
        
        /*      Ensure we're not in editmode and that the active object is an armature*/
        if (!ob || ob->type != OB_ARMATURE)
@@ -187,6 +188,21 @@ int join_armature_exec(bContext *C, wmOperator *UNUSED(op))
        if (!arm || arm->edbo)
                return OPERATOR_CANCELLED;
        
+       CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases)
+       {
+               if (base->object == ob) {
+                       ok = true;
+                       break;
+               }
+       }
+       CTX_DATA_END;
+
+       /* that way the active object is always selected */
+       if (ok == false) {
+               BKE_report(op->reports, RPT_WARNING, "Active object is not a selected armature");
+               return OPERATOR_CANCELLED;
+       }
+
        /* Get editbones of active armature to add editbones to */
        ED_armature_to_edit(ob);
        
index 0f96e886ef3b069c85bc6cab7c667f761cee5796..75de4e137071ffa307b1057be3a64e9c17449492 100644 (file)
@@ -6100,7 +6100,7 @@ void CURVE_OT_shade_flat(wmOperatorType *ot)
 
 /************** join operator, to be used externally? ****************/
 /* TODO: shape keys - as with meshes */
-int join_curve_exec(bContext *C, wmOperator *UNUSED(op))
+int join_curve_exec(bContext *C, wmOperator *op)
 {
        Main *bmain = CTX_data_main(C);
        Scene *scene = CTX_data_scene(C);
@@ -6112,6 +6112,22 @@ int join_curve_exec(bContext *C, wmOperator *UNUSED(op))
        ListBase tempbase;
        float imat[4][4], cmat[4][4];
        int a;
+       bool ok = false;
+
+       CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases)
+       {
+               if (base->object == ob) {
+                       ok = true;
+                       break;
+               }
+       }
+       CTX_DATA_END;
+
+       /* that way the active object is always selected */
+       if (ok == false) {
+               BKE_report(op->reports, RPT_WARNING, "Active object is not a selected curve");
+               return OPERATOR_CANCELLED;
+       }
 
        tempbase.first = tempbase.last = NULL;
        
index 51b5e30bc3fb63baaf377d97f3d28fb2177c3fc8..950482df55577cf2e83b0cfc5dfadf4508554d09 100644 (file)
@@ -88,9 +88,10 @@ int join_mesh_exec(bContext *C, wmOperator *op)
        Key *key, *nkey = NULL;
        KeyBlock *kb, *okb, *kbn;
        float imat[4][4], cmat[4][4], *fp1, *fp2;
-       int a, b, totcol, totmat = 0, totedge = 0, totvert = 0, ok = 0;
+       int a, b, totcol, totmat = 0, totedge = 0, totvert = 0;
        int totloop = 0, totpoly = 0, vertofs, *matmap = NULL;
        int i, j, index, haskey = 0, edgeofs, loopofs, polyofs;
+       bool ok = false;
        bDeformGroup *dg, *odg;
        MDeformVert *dvert;
        CustomData vdata, edata, fdata, ldata, pdata;
@@ -119,7 +120,7 @@ int join_mesh_exec(bContext *C, wmOperator *op)
                        totmat += base->object->totcol;
                        
                        if (base->object == ob)
-                               ok = 1;
+                               ok = true;
                        
                        /* check for shapekeys */
                        if (me->key)
@@ -129,7 +130,7 @@ int join_mesh_exec(bContext *C, wmOperator *op)
        CTX_DATA_END;
        
        /* that way the active object is always selected */ 
-       if (ok == 0) {
+       if (ok == false) {
                BKE_report(op->reports, RPT_WARNING, "Active object is not a selected mesh");
                return OPERATOR_CANCELLED;
        }
index 971dc49577c57c7b50bf7d12f983b581982ca025..0d368fe44f1816d220fee1554e748ca4dda84a58 100644 (file)
@@ -904,7 +904,7 @@ static void render_view3d_startjob(void *customdata, short *stop, short *do_upda
        
        rstats = RE_GetStats(re);
 
-       if ((update_flag & (PR_UPDATE_RENDERSIZE|PR_UPDATE_DATABASE)) || rstats->convertdone == 0) {
+       if ((update_flag & (PR_UPDATE_RENDERSIZE | PR_UPDATE_DATABASE)) || rstats->convertdone == 0) {
                /* no osa, blur, seq, layers, etc for preview render */
                rdata = rp->scene->r;
                rdata.mode &= ~(R_OSA | R_MBLUR | R_BORDER | R_PANORAMA);