evas: Evas_3D - fix bug with pack meshes data.
authorDmytro Dadyka <d.dadyka@samsung.com>
Fri, 20 Feb 2015 17:40:11 +0000 (18:40 +0100)
committerCedric BAIL <cedric@osg.samsung.com>
Fri, 20 Feb 2015 17:40:13 +0000 (18:40 +0100)
Reviewers: cedric

@fix

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2015

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
src/lib/evas/canvas/evas_3d_node.c

index 41298f5..84f6204 100644 (file)
@@ -432,7 +432,9 @@ _pack_meshes_vertex_data(Evas_3D_Node *node, Evas_Vec3 **vertices, int *count)
         eo_do(node, frame = evas_3d_node_mesh_frame_get(mesh));
         mpd = eo_data_scope_get(mesh, EVAS_3D_MESH_CLASS);
         f = evas_3d_mesh_frame_find(mpd, frame);
-        if (f) *count += mpd->vertex_count;
+        if (f)
+          if (f->vertices[EVAS_3D_VERTEX_POSITION].data)
+            *count += mpd->vertex_count;
      }
 
    *vertices = (Evas_Vec3*)malloc(*count * sizeof(Evas_Vec3));
@@ -451,6 +453,7 @@ _pack_meshes_vertex_data(Evas_3D_Node *node, Evas_Vec3 **vertices, int *count)
         if (f)
           {
              float *src = (float *)f->vertices[EVAS_3D_VERTEX_POSITION].data;
+             if (!src) continue;
              int stride = f->vertices[EVAS_3D_VERTEX_POSITION].stride;
              if (!stride) stride = sizeof(float) * 3;
              for (j = 0; j < mpd->vertex_count; j++)