Commit: 7b30e2386bea9a085f91e5454a5cc3a451d0b249
Author: Campbell Barton
Date:   Sat Jul 18 05:39:01 2015 +1000
Branches: master
https://developer.blender.org/rB7b30e2386bea9a085f91e5454a5cc3a451d0b249

Only use material callback when enabled

Vert/Face select in painting modes weren't drawing after recent changes.

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

M       source/blender/editors/space_view3d/drawmesh.c
M       source/blender/gpu/intern/gpu_draw.c

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

diff --git a/source/blender/editors/space_view3d/drawmesh.c 
b/source/blender/editors/space_view3d/drawmesh.c
index 9ccacba..757eecf 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -1236,17 +1236,18 @@ void draw_mesh_paint_vcolor_faces(DerivedMesh *dm, 
const bool use_light,
                                   void *facemask_cb, void *user_data,
                                   const Mesh *me)
 {
+       DMSetMaterial setMaterial = GPU_object_materials_check() ? 
GPU_enable_material : NULL;
+
        if (use_light) {
                draw_mesh_paint_light_begin();
        }
 
        if (me->mloopcol) {
-               dm->drawMappedFaces(dm, facemask_cb, GPU_enable_material, NULL, 
user_data,
-                                   DM_DRAW_USE_COLORS);
+               dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, 
user_data, DM_DRAW_USE_COLORS);
        }
        else {
                glColor3f(1.0f, 1.0f, 1.0f);
-               dm->drawMappedFaces(dm, facemask_cb, GPU_enable_material, NULL, 
user_data, 0);
+               dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, 
user_data, 0);
        }
 
        if (use_light) {
diff --git a/source/blender/gpu/intern/gpu_draw.c 
b/source/blender/gpu/intern/gpu_draw.c
index 79f92b7..04441fc 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -1407,7 +1407,9 @@ static struct GPUMaterialState {
        GPUMaterialFixed (*matbuf);
        GPUMaterialFixed matbuf_fixed[FIXEDMAT];
        int totmat;
-       /* set when called inside GPU_begin_object_materials / 
GPU_end_object_materials */
+
+       /* set when called inside GPU_begin_object_materials / 
GPU_end_object_materials
+        * otherwise calling GPU_enable_material returns zero */
        bool is_enabled;
 
        Material **gmatbuf;

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

Reply via email to