[Bf-blender-cvs] [1e36188] master: Fix T46469: Data Transfer Modifier don't work.

2015-11-13 Thread Bastien Montagne
Commit: 1e361880a9bcfba136a556c4201ca96dbdd88eb1
Author: Bastien Montagne
Date:   Fri Nov 13 20:31:34 2015 +0100
Branches: master
https://developer.blender.org/rB1e361880a9bcfba136a556c4201ca96dbdd88eb1

Fix T46469: Data Transfer Modifier don't work.

Pretty nice copy/paste typo in looptri work...

===

M   source/blender/blenkernel/intern/mesh_remap.c

===

diff --git a/source/blender/blenkernel/intern/mesh_remap.c 
b/source/blender/blenkernel/intern/mesh_remap.c
index 258131f..cb2d7ff 100644
--- a/source/blender/blenkernel/intern/mesh_remap.c
+++ b/source/blender/blenkernel/intern/mesh_remap.c
@@ -583,7 +583,7 @@ void BKE_mesh_remap_calc_verts_from_dm(
}
 
if 
(mesh_remap_bvhtree_query_nearest(, , tmp_co, max_dist_sq, 
_dist)) {
-   const MLoopTri *lt = 
[rayhit.index];
+   const MLoopTri *lt = 
[nearest.index];
MPoly *mp = 
_src[lt->poly];
 
if (mode == 
MREMAP_MODE_VERT_POLY_NEAREST) {
@@ -812,7 +812,7 @@ void BKE_mesh_remap_calc_edges_from_dm(
}
 
if (mesh_remap_bvhtree_query_nearest(, 
, tmp_co, max_dist_sq, _dist)) {
-   const MLoopTri *lt = 
[rayhit.index];
+   const MLoopTri *lt = 
[nearest.index];
MPoly *mp_src = _src[lt->poly];
MLoop *ml_src = 
_src[mp_src->loopstart];
int nloops = mp_src->totloop;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d7f0c33] decklink: Merge remote-tracking branch 'origin' into decklink

2015-11-13 Thread Benoit Bolsee
Commit: d7f0c33b3d708a6c4ce4aa342c0831ca086fa872
Author: Benoit Bolsee
Date:   Fri Nov 13 18:32:08 2015 +0100
Branches: decklink
https://developer.blender.org/rBd7f0c33b3d708a6c4ce4aa342c0831ca086fa872

Merge remote-tracking branch 'origin' into decklink

Conflicts:
source/gameengine/Ketsji/BL_Shader.cpp
source/gameengine/Ketsji/BL_Shader.h

===



===

diff --cc source/gameengine/Ketsji/BL_Shader.cpp
index 8c69e6a,4b229f5..0b4a48a
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@@ -81,22 -80,13 +82,22 @@@ bool BL_Uniform::Apply(class BL_Shader 
switch (mType) {
case UNI_FLOAT:
{
-   float *f = (float*)mData;
-   glUniform1fARB(mLoc,(GLfloat)*f);
+   float *f = (float *)mData;
+   glUniform1fARB(mLoc, (GLfloat)*f);
break;
}
 +  case UNI_FLOAT_EYE:
 +  {
 +  float *f = (float*)mData;
 +  ras = KX_GetActiveEngine()->GetRasterizer();
 +  *f = (ras->GetEye() == 
RAS_IRasterizer::RAS_STEREO_LEFTEYE) ? 0.0f : 0.5f;
 +  glUniform1fARB(mLoc, (GLfloat)*f);
 +  mDirty = (ras->Stereo()) ? true : false;
 +  break;
 +  }
case UNI_INT:
{
-   int *f = (int*)mData;
+   int *f = (int *)mData;
glUniform1iARB(mLoc, (GLint)*f);
break;
}
@@@ -278,13 -271,15 +282,13 @@@ void BL_Shader::SetUniformiv(int locati
  void BL_Shader::ApplyShader()
  {
  #ifdef SORT_UNIFORMS
-   if (!mDirty) 
+   if (!mDirty) {
return;
+   }
  
 -  for (unsigned int i = 0; i < mUniforms.size(); i++) {
 -  mUniforms[i]->Apply(this);
 -  }
 -
mDirty = false;
 +  for (unsigned int i=0; iApply(this);
  #endif
  }
  
@@@ -317,79 -314,74 +323,81 @@@ bool BL_Shader::LinkProgram(
spit("Vertex shaders not supported");
return false;
}
+ 
 -  // -- vertex shader --
 -  tmpVert = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
 -  glShaderSourceARB(tmpVert, 1, (const char **), 0);
 -  glCompileShaderARB(tmpVert);
 -  glGetObjectParameterivARB(tmpVert, GL_OBJECT_INFO_LOG_LENGTH_ARB, 
(GLint *));
 -
 -  // print info if any
 -  if (vertlen > 0 && vertlen < MAX_LOG_LEN) {
 -  logInf = (char *)MEM_mallocN(vertlen, "vert-log");
 -  glGetInfoLogARB(tmpVert, vertlen, (GLsizei *)_len, logInf);
 -
 -  if (char_len > 0) {
 -  spit(" Vertex Shader Error ");
 -  spit(logInf);
 +  if (vertProg[0] != 0)
 +  {
 +  // -- vertex shader --
 +  tmpVert = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
 +  glShaderSourceARB(tmpVert, 1, (const char**), 0);
 +  glCompileShaderARB(tmpVert);
 +  glGetObjectParameterivARB(tmpVert, 
GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint*));
 +
 +  // print info if any
 +  if (vertlen > 0 && vertlen < MAX_LOG_LEN) {
 +  logInf = (char*)MEM_mallocN(vertlen, "vert-log");
 +  glGetInfoLogARB(tmpVert, vertlen, (GLsizei*)_len, 
logInf);
 +  if (char_len > 0) {
 +  spit(" Vertex Shader Error ");
 +  spit(logInf);
 +  }
 +  MEM_freeN(logInf);
 +  logInf = 0;
 +  }
 +  // check for compile errors
 +  glGetObjectParameterivARB(tmpVert, 
GL_OBJECT_COMPILE_STATUS_ARB, (GLint*));
 +  if (!vertstatus) {
 +  spit(" Vertex shader failed to compile ");
 +  goto programError;
}
 -
 -  MEM_freeN(logInf);
 -  logInf = 0;
 -  }
 -
 -  // check for compile errors
 -  glGetObjectParameterivARB(tmpVert, GL_OBJECT_COMPILE_STATUS_ARB, (GLint 
*));
 -  if (!vertstatus) {
 -  spit(" Vertex shader failed to compile ");
 -  goto programError;
}
  
 -  // -- fragment shader 
 -  tmpFrag = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
 -  glShaderSourceARB(tmpFrag, 1, (const char **), 0);
 -  glCompileShaderARB(tmpFrag);
 -  glGetObjectParameterivARB(tmpFrag, GL_OBJECT_INFO_LOG_LENGTH_ARB, 
(GLint *));
 -
 -  if (fraglen > 0 && fraglen < MAX_LOG_LEN) {
 - 

[Bf-blender-cvs] [9281942] master: Fix T46762: UV transfer Object transform crash.

2015-11-13 Thread Bastien Montagne
Commit: 92819425d86017f371fa8e78db54d4fb976a0235
Author: Bastien Montagne
Date:   Fri Nov 13 20:54:07 2015 +0100
Branches: master
https://developer.blender.org/rB92819425d86017f371fa8e78db54d4fb976a0235

Fix T46762: UV transfer Object transform crash.

Own very stupid mistake this time... :|

===

M   source/blender/blenkernel/intern/mesh_remap.c

===

diff --git a/source/blender/blenkernel/intern/mesh_remap.c 
b/source/blender/blenkernel/intern/mesh_remap.c
index cb2d7ff..fcc01c8 100644
--- a/source/blender/blenkernel/intern/mesh_remap.c
+++ b/source/blender/blenkernel/intern/mesh_remap.c
@@ -1438,7 +1438,9 @@ void BKE_mesh_remap_calc_loops_from_dm(
 
if (mode == MREMAP_MODE_LOOP_NEAREST_POLYNOR) {
copy_v3_v3(pnor_dst, poly_nors_dst[pidx_dst]);
-   
BLI_space_transform_apply_normal(space_transform, pnor_dst);
+   if (space_transform) {
+   
BLI_space_transform_apply_normal(space_transform, pnor_dst);
+   }
}
 
if ((size_t)mp_dst->totloop > islands_res_buff_size) {
@@ -1473,7 +1475,9 @@ void BKE_mesh_remap_calc_loops_from_dm(
 
if (mode == 
MREMAP_MODE_LOOP_NEAREST_LOOPNOR) {

copy_v3_v3(tmp_no, loop_nors_dst[plidx_dst + mp_dst->loopstart]);
-   
BLI_space_transform_apply_normal(space_transform, tmp_no);
+   if 
(space_transform) {
+   
BLI_space_transform_apply_normal(space_transform, tmp_no);
+   }
nor_dst = 
_no;
nors_src = 
loop_nors_src;

vert_to_refelem_map_src = vert_to_loop_map_src;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a6413f2] wiggly-widgets: Cleanup: Add and use widget map context to store wmap runtime data

2015-11-13 Thread Julian Eisel
Commit: a6413f23cd1f0ec261e97584573d637370b56841
Author: Julian Eisel
Date:   Fri Nov 13 21:58:08 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBa6413f23cd1f0ec261e97584573d637370b56841

Cleanup: Add and use widget map context to store wmap runtime data

We might need this for a couple of other things and IMHO it's nicer to keep it 
a bit separated.

===

M   source/blender/editors/space_graph/graph_edit.c
M   source/blender/editors/space_sequencer/sequencer_view.c
M   source/blender/windowmanager/WM_types.h
M   source/blender/windowmanager/intern/wm_event_system.c
M   source/blender/windowmanager/intern/wm_widgets.c

===

diff --git a/source/blender/editors/space_graph/graph_edit.c 
b/source/blender/editors/space_graph/graph_edit.c
index dbf1ce1..c86c416 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -2651,7 +2651,7 @@ static int graph_widget_backdrop_transform_modal(bContext 
*C, wmOperator *op, co
SpaceIpo *sipo = CTX_wm_space_graph(C);
 
/* only end modal if we're not dragging a widget */
-   if (!wmap->active_widget && event->val == KM_PRESS) {
+   if (!wmap->wmap_context.active_widget && event->val == 
KM_PRESS) {
copy_v2_v2(sipo->backdrop_offset, 
data->init_offset);
sipo->backdrop_zoom = data->init_zoom;
 
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c 
b/source/blender/editors/space_sequencer/sequencer_view.c
index 3208a11..790fcc0 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -378,7 +378,7 @@ static int sequencer_overdrop_transform_modal(bContext *C, 
wmOperator *op, const
SpaceSeq *sseq = CTX_wm_space_seq(C);
 
/* only end modal if we're not dragging a widget */
-   if (!wmap->active_widget && event->val == KM_PRESS) {
+   if (!wmap->wmap_context.active_widget && event->val == 
KM_PRESS) {
copy_v2_v2(sseq->overdrop_offset, 
data->init_offset);
sseq->overdrop_zoom = data->init_zoom;
 
@@ -531,7 +531,7 @@ static int sequencer_image_transform_widget_modal(bContext 
*C, wmOperator *op, c
 
/* no offset needed in this case */
offset[0] = offset[1] = 0;
-   WM_widget_set_offset(wmap->active_widget, offset);
+   WM_widget_set_offset(wmap->wmap_context.active_widget, 
offset);
break;
}
 
diff --git a/source/blender/windowmanager/WM_types.h 
b/source/blender/windowmanager/WM_types.h
index 3e43047..0e09f2c 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -719,18 +719,25 @@ typedef struct wmWidgetGroupType {
 typedef struct wmWidgetMap {
struct wmWidgetMap *next, *prev;
 
-   struct wmWidgetMapType *type;
+   wmWidgetMapType *type;
ListBase widgetgroups;
 
-   /* highlighted widget for this map. We redraw the widgetmap when this 
changes  */
-   struct wmWidget *highlighted_widget;
-   /* active widget for this map. User has clicked currently this widget 
and it gets all input */
-   struct wmWidget *active_widget;
-   /* selected widget for this map. */
-   struct wmWidget *selected_widget;
-
-   /* active group - set while widget is highlighted/active */
-   struct wmWidgetGroup *activegroup;
+   /**
+* \brief Widget map runtime context
+*
+* Contains information about this widget map. Currently
+* highlighted widget, currently selected widget, ...
+*/
+   struct {
+   /* we redraw the widgetmap when this changes */
+   wmWidget *highlighted_widget;
+   /* user has clicked this widget and it gets all input */
+   wmWidget *active_widget;
+   wmWidget *selected_widget;
+
+   /* set while widget is highlighted/active */
+   wmWidgetGroup *activegroup;
+   } wmap_context;
 } wmWidgetMap;
 
 /* *** migrated stuff, clean later? ** */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c 
b/source/blender/windowmanager/intern/wm_event_system.c
index 58b413c..83137e9 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2092,9 +2092,9 @@ static int wm_handlers_do_intern(bContext *C, wmEvent 
*event, ListBase *handlers
}

[Bf-blender-cvs] [4d33c37] master: Fix T46726 shading issues in sculpt mode.

2015-11-13 Thread Antony Riakiotakis
Commit: 4d33c37c9eb4fc46482f7b2a7227b54c5cfda07a
Author: Antony Riakiotakis
Date:   Fri Nov 13 21:57:00 2015 +0100
Branches: master
https://developer.blender.org/rB4d33c37c9eb4fc46482f7b2a7227b54c5cfda07a

Fix T46726 shading issues in sculpt mode.

This fixes two issues:

* Normals were not being recalculated correctly when not using optimized
drawing for CDDerivedMesh (Multires actually handles that correctly).

* Loop normals (autosmooth option) were also not being calculated. Doing
this calculation is not desirable, since it can't be done correctly
without a severe performance hit. This is easy to test by doing a
dependency flush on the mesh after each scuplt stroke step. Instead they
are now disabled during sculpting.

===

M   source/blender/blenkernel/intern/cdderivedmesh.c
M   source/blender/blenkernel/intern/subsurf_ccg.c
M   source/blender/editors/sculpt_paint/sculpt.c

===

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c 
b/source/blender/blenkernel/intern/cdderivedmesh.c
index 3b86c42..be4f001 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -344,9 +344,6 @@ static void cdDM_update_normals_from_pbvh(DerivedMesh *dm)
CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
float (*face_nors)[3];
 
-   if (!cddm->pbvh || !cddm->pbvh_draw || !dm->numPolyData)
-   return;
-
face_nors = CustomData_get_layer(>polyData, CD_NORMAL);
 
BKE_pbvh_update(cddm->pbvh, PBVH_UpdateNormals, face_nors);
@@ -446,18 +443,18 @@ static void cdDM_drawFacesSolid(
CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
int a;
 
-   if (cddm->pbvh && cddm->pbvh_draw) {
-   if (BKE_pbvh_has_faces(cddm->pbvh)) {
+   if (cddm->pbvh) {
+   if (cddm->pbvh_draw && BKE_pbvh_has_faces(cddm->pbvh)) {
float (*face_nors)[3] = 
CustomData_get_layer(>faceData, CD_NORMAL);
 
-   cdDM_update_normals_from_pbvh(dm);
-
BKE_pbvh_draw(cddm->pbvh, partial_redraw_planes, 
face_nors,
  setMaterial, false, false);
glShadeModel(GL_FLAT);
+   return;
+   }
+   else {
+   cdDM_update_normals_from_pbvh(dm);
}
-
-   return;
}

GPU_vertex_setup(dm);
@@ -505,14 +502,18 @@ static void cdDM_drawFacesTex_common(
 *   textured view, but object itself will be displayed gray
 *   (the same as it'll display without UV maps in textured view)
 */
-   if (cddm->pbvh && cddm->pbvh_draw && BKE_pbvh_type(cddm->pbvh) == 
PBVH_BMESH) {
-   if (BKE_pbvh_has_faces(cddm->pbvh)) {
-   cdDM_update_normals_from_pbvh(dm);
+   if (cddm->pbvh) {
+   if (cddm->pbvh_draw &&
+   BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH &&
+   BKE_pbvh_has_faces(cddm->pbvh))
+   {
GPU_set_tpage(NULL, false, false);
BKE_pbvh_draw(cddm->pbvh, NULL, NULL, NULL, false, 
false);
+   return;
+   }
+   else {
+   cdDM_update_normals_from_pbvh(dm);
}
-
-   return;
}
 
colType = CD_TEXTURE_MLOOPCOL;
@@ -878,14 +879,18 @@ static void cdDM_drawMappedFacesGLSL(
 *   will skip using textures (dyntopo currently destroys UV 
anyway) and
 *   works fine for matcap
 */
-   if (cddm->pbvh && cddm->pbvh_draw && BKE_pbvh_type(cddm->pbvh) == 
PBVH_BMESH) {
-   if (BKE_pbvh_has_faces(cddm->pbvh)) {
-   cdDM_update_normals_from_pbvh(dm);
+   if (cddm->pbvh) {
+   if (cddm->pbvh_draw &&
+   BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH &&
+   BKE_pbvh_has_faces(cddm->pbvh))
+   {
setMaterial(1, );
BKE_pbvh_draw(cddm->pbvh, NULL, NULL, NULL, false, 
false);
+   return;
+   }
+   else {
+   cdDM_update_normals_from_pbvh(dm);
}
-
-   return;
}
 
matnr = -1;
@@ -1147,14 +1152,18 @@ static void cdDM_drawMappedFacesMat(
 *   works fine for matcap
 */
 
-   if (cddm->pbvh && cddm->pbvh_draw && BKE_pbvh_type(cddm->pbvh) == 
PBVH_BMESH) {
-   if (BKE_pbvh_has_faces(cddm->pbvh)) {
-   cdDM_update_normals_from_pbvh(dm);
+   if (cddm->pbvh) {
+   if (cddm->pbvh_draw &&
+   BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH &&
+   

[Bf-blender-cvs] [8a78bbc] wiggly-widgets: Fix widgets swallowing RMB events, reported by Psy-fi

2015-11-13 Thread Julian Eisel
Commit: 8a78bbc62e570efc95c8002e85c038a53894c5ae
Author: Julian Eisel
Date:   Fri Nov 13 23:06:39 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB8a78bbc62e570efc95c8002e85c038a53894c5ae

Fix widgets swallowing RMB events, reported by Psy-fi

===

M   source/blender/windowmanager/intern/wm_widgets.c

===

diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index aa1a197..4b7d7a0 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -628,6 +628,7 @@ static int widget_set_select_invoke(bContext *C, wmOperator 
*UNUSED(op), const w
if (widget) {
if (widget->flag & WM_WIDGET_SELECTABLE) {
wm_widgetmap_set_selected_widget(C, wmap, 
widget);
+   return OPERATOR_FINISHED;
}
break;
}
@@ -637,7 +638,7 @@ static int widget_set_select_invoke(bContext *C, wmOperator 
*UNUSED(op), const w
}
}
 
-   return OPERATOR_FINISHED;
+   return OPERATOR_PASS_THROUGH;
 }
 
 void WIDGETGROUP_OT_widget_set_select(wmOperatorType *ot)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1fbb124] wiggly-widgets: Fix crash reading .blend with bones that don't have Face Map object assigned

2015-11-13 Thread Julian Eisel
Commit: 1fbb124154b44aa91d35416409654d45a6668edd
Author: Julian Eisel
Date:   Fri Nov 13 23:01:04 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB1fbb124154b44aa91d35416409654d45a6668edd

Fix crash reading .blend with bones that don't have Face Map object assigned

===

M   source/blender/blenloader/intern/readfile.c

===

diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 1677bb1..50483c8 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3218,8 +3218,10 @@ static void lib_link_pose(FileData *fd, Main *bmain, 
Object *ob, bPose *pose)
pchan->bone = BKE_armature_find_bone_name(arm, pchan->name);
 
pchan->fmap_object = newlibadr_us(fd, arm->id.lib, 
pchan->fmap_object);
-   /* fix fmap pointer now that we've got updated fmap_object */
-   pchan->fmap = fmap_find_name(pchan->fmap_object, 
pchan->fmap->name);
+   if (pchan->fmap_object) {
+   /* fix fmap pointer now that we've got updated 
fmap_object */
+   pchan->fmap = fmap_find_name(pchan->fmap_object, 
pchan->fmap->name);
+   }
 
pchan->custom = newlibadr_us(fd, arm->id.lib, pchan->custom);
if (pchan->bone == NULL)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [c21cfbf] wiggly-widgets: Minor correction to Face Map registering

2015-11-13 Thread Julian Eisel
Commit: c21cfbfb506468f24313307a2f1ff5a7591b6602
Author: Julian Eisel
Date:   Fri Nov 13 22:04:07 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBc21cfbfb506468f24313307a2f1ff5a7591b6602

Minor correction to Face Map registering

(And whitespace cleanup)

===

M   source/blender/windowmanager/intern/wm_generic_widgets.c

===

diff --git a/source/blender/windowmanager/intern/wm_generic_widgets.c 
b/source/blender/windowmanager/intern/wm_generic_widgets.c
index 2790f37..b138d08 100644
--- a/source/blender/windowmanager/intern/wm_generic_widgets.c
+++ b/source/blender/windowmanager/intern/wm_generic_widgets.c
@@ -1366,7 +1366,7 @@ static bool widget_rect_transform_get_property(wmWidget 
*widget, const int slot,
 
 static int widget_rect_transform_invoke(bContext *UNUSED(C), const wmEvent 
*event, wmWidget *widget)
 {
-   RectTransformWidget *cage = (RectTransformWidget *) widget;
+   RectTransformWidget *cage = (RectTransformWidget *)widget;
RectTransformInteraction *data = MEM_callocN(sizeof 
(RectTransformInteraction), "cage_interaction");
 
copy_v2_v2(data->orig_offset, widget->offset);
@@ -1475,7 +1475,7 @@ static int widget_rect_transform_handler(bContext *C, 
const wmEvent *event, wmWi
 
 static void widget_rect_transform_bind_to_prop(wmWidget *widget, const int 
slot)
 {
-   RectTransformWidget *cage = (RectTransformWidget *) widget;
+   RectTransformWidget *cage = (RectTransformWidget *)widget;
 
if (slot == RECT_TRANSFORM_SLOT_OFFSET)
widget_rect_transform_get_property(widget, 
RECT_TRANSFORM_SLOT_OFFSET, widget->offset);
@@ -1485,7 +1485,7 @@ static void widget_rect_transform_bind_to_prop(wmWidget 
*widget, const int slot)
 
 static void widget_rect_transform_cancel(bContext *C, wmWidget *widget)
 {
-   RectTransformWidget *cage = (RectTransformWidget *) widget;
+   RectTransformWidget *cage = (RectTransformWidget *)widget;
RectTransformInteraction *data = widget->interaction_data;
 
/* reset properties */
@@ -1598,7 +1598,7 @@ wmWidget *WIDGET_facemap_new(
 wmWidgetGroup *wgroup, const char *name, const int style,
 Object *ob, const int facemap)
 {
-   FacemapWidget *fmap_widget = MEM_callocN(sizeof(FacemapWidget), 
"CageWidget");
+   FacemapWidget *fmap_widget = MEM_callocN(sizeof(FacemapWidget), name);
 
BLI_assert(facemap > -1);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1c89597] wiggly-widgets: Fix mistake with start offset of many facemaps

2015-11-13 Thread Antony Riakiotakis
Commit: 1c8959781e9db4e092a17a4a88bd89e72ec914b8
Author: Antony Riakiotakis
Date:   Sat Nov 14 01:25:09 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB1c8959781e9db4e092a17a4a88bd89e72ec914b8

Fix mistake with start offset of many facemaps

===

M   source/blender/editors/space_view3d/drawobject.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 8a928de..09effb8 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -8727,10 +8727,10 @@ void ED_draw_object_facemap(Scene *scene, struct Object 
*ob, int facemap)
if (dm->drawObject->facemapindices) {
if (dm->drawObject->facemapindices->use_vbo)
glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
-  (int *)NULL + 
dm->drawObject->facemap_start[facemap]);
+  (int *)NULL + 
dm->drawObject->facemap_start[facemap] * 3);
else
glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
-  (int 
*)dm->drawObject->facemapindices->pointer + 
dm->drawObject->facemap_start[facemap]);
+  (int 
*)dm->drawObject->facemapindices->pointer + 
dm->drawObject->facemap_start[facemap] * 3);
}
glPopAttrib();

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [b9132c0] wiggly-widgets: Fix widgetmap drawing.

2015-11-13 Thread Antony Riakiotakis
Commit: b9132c0be3a21d8dff545c48c5c245b24554368e
Author: Antony Riakiotakis
Date:   Sat Nov 14 00:38:51 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBb9132c0be3a21d8dff545c48c5c245b24554368e

Fix widgetmap drawing.

===

M   source/blender/blenkernel/intern/cdderivedmesh.c
M   source/blender/editors/space_view3d/drawobject.c

===

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c 
b/source/blender/blenkernel/intern/cdderivedmesh.c
index 54ee5c3..0177d36 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1619,7 +1619,7 @@ static void cdDM_buffer_copy_facemap(DerivedMesh *dm, 
unsigned int *varray)
 
facemap_offset[*facemap_iter] += numtri;
 
-   for (; numtri > 0; numtri--) {
+   for (; numtri > 0; numtri--, ltri_iter++) {
varray[fmap_offset++] = 
gdo->vert_points[mloop[ltri_iter->tri[0]].v].point_index;
varray[fmap_offset++] = 
gdo->vert_points[mloop[ltri_iter->tri[1]].v].point_index;
varray[fmap_offset++] = 
gdo->vert_points[mloop[ltri_iter->tri[2]].v].point_index;
diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index d7e1ca8..8a928de 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -8726,15 +8726,15 @@ void ED_draw_object_facemap(Scene *scene, struct Object 
*ob, int facemap)
 
if (dm->drawObject->facemapindices) {
if (dm->drawObject->facemapindices->use_vbo)
-   glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap], GL_UNSIGNED_INT,
+   glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
   (int *)NULL + 
dm->drawObject->facemap_start[facemap]);
else
-   glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap], GL_UNSIGNED_INT,
+   glDrawElements(GL_TRIANGLES, 
dm->drawObject->facemap_count[facemap] * 3, GL_UNSIGNED_INT,
   (int 
*)dm->drawObject->facemapindices->pointer + 
dm->drawObject->facemap_start[facemap]);
}
glPopAttrib();
 
-   GPU_buffer_unbind(dm->drawObject->facemapindices, GPU_BINDING_INDEX);
+   GPU_buffers_unbind();
 
glPolygonOffset(0.0, 0.0);
dm->release(dm);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [95b1a59] wiggly-widgets: Facemap support for subsurf modifier

2015-11-13 Thread Antony Riakiotakis
Commit: 95b1a590cd4429980ad78f31fd4dd962154ce40b
Author: Antony Riakiotakis
Date:   Sat Nov 14 01:20:08 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB95b1a590cd4429980ad78f31fd4dd962154ce40b

Facemap support for subsurf modifier

===

M   source/blender/blenkernel/intern/subsurf_ccg.c

===

diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c 
b/source/blender/blenkernel/intern/subsurf_ccg.c
index a2c625a..e0312d3 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -2102,6 +2102,73 @@ static void ccgDM_buffer_copy_triangles(
MEM_freeN(fc);
 }
 
+static void ccgDM_buffer_copy_facemaps(DerivedMesh *dm, unsigned int *varray)
+{
+   GPUDrawObject *gdo = dm->drawObject;
+   CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
+   CCGSubSurf *ss = ccgdm->ss;
+   CCGKey key;
+   int *facemap = DM_get_poly_data_layer(dm, CD_FACEMAP);
+   int gridSize = ccgSubSurf_getGridSize(ss);
+   int gridFaces = gridSize - 1;
+   int i, totface = ccgSubSurf_getNumFaces(ss);
+   int offset = 0;
+   int totloops = 0;
+   int *facemap_offset;
+
+   CCG_key_top_level(, ss);
+
+   gdo->totfacemaps = 0;
+
+   /* pretty crappy to iterate so many times but it's only being done on 
creation */
+   for (i = 0; i < totface; i++) {
+   gdo->totfacemaps = max_ii(facemap[ccgdm->faceMap[i].startFace], 
gdo->totfacemaps);
+   }
+   /* account for 0 - n -1 range */
+   gdo->totfacemaps++;
+
+   gdo->facemap_start = MEM_callocN(gdo->totfacemaps * 
sizeof(*gdo->facemap_start), "GDO_facemap_start");
+   gdo->facemap_count = MEM_callocN(gdo->totfacemaps * 
sizeof(*gdo->facemap_count), "GDO_facemap_count");
+   facemap_offset = MEM_callocN(gdo->totfacemaps * 
sizeof(*facemap_offset), "facemap_offset");
+
+   for (i = 0; i < totface; i++) {
+   CCGFace *f = ccgdm->faceMap[i].face;
+   int numVerts = ccgSubSurf_getFaceNumVerts(f);
+   gdo->facemap_count[facemap[ccgdm->faceMap[i].startFace]] += 
gridFaces * gridFaces * numVerts * 2;
+   }
+
+   for (i = 0; i < gdo->totfacemaps; i++) {
+   gdo->facemap_start[i] = offset;
+   offset += gdo->facemap_count[i];
+   }
+
+   for (i = 0; i < totface; i++) {
+   CCGFace *f = ccgdm->faceMap[i].face;
+   int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
+   int facemap_index = facemap[ccgdm->faceMap[i].startFace];
+   int fmap_offset = (gdo->facemap_start[facemap_index] + 
facemap_offset[facemap_index]) * 3;
+
+   facemap_offset[facemap_index] += gridFaces * gridFaces * 
numVerts * 2;
+
+   for (S = 0; S < numVerts; S++) {
+   for (y = 0; y < gridFaces; y++) {
+   for (x = 0; x < gridFaces; x++) {
+   varray[fmap_offset++] = totloops + 3;
+   varray[fmap_offset++] = totloops + 2;
+   varray[fmap_offset++] = totloops + 1;
+
+   varray[fmap_offset++] = totloops + 3;
+   varray[fmap_offset++] = totloops + 1;
+   varray[fmap_offset++] = totloops;
+
+   totloops += 4;
+   }
+   }
+   }
+   }
+
+   MEM_freeN(facemap_offset);
+}
 
 /* Only used by non-editmesh types */
 static void ccgDM_buffer_copy_vertex(
@@ -2529,6 +2596,9 @@ static void ccgDM_copy_gpu_data(
case GPU_BUFFER_TRIANGLES:
ccgDM_buffer_copy_triangles(dm, (unsigned int 
*)varray_p, mat_orig_to_new);
break;
+   case GPU_BUFFER_FACEMAP:
+   ccgDM_buffer_copy_facemaps(dm, (unsigned int 
*)varray_p);
+   break;
default:
break;
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9ac0884] master: Fix T46701: Sampled FCurve looks jagged when FModifiers (doing nothing) are present

2015-11-13 Thread Joshua Leung
Commit: 9ac08840ae7e9bd802329e9443da87d4e0dbe5a0
Author: Joshua Leung
Date:   Sat Nov 14 18:08:36 2015 +1300
Branches: master
https://developer.blender.org/rB9ac08840ae7e9bd802329e9443da87d4e0dbe5a0

Fix T46701: Sampled FCurve looks jagged when FModifiers (doing nothing) are 
present

This was caused by interpolation between samples being performed incorrectly
(i.e. wrong order of arguments) when sampling more than once per frame.

===

M   source/blender/blenkernel/intern/fcurve.c

===

diff --git a/source/blender/blenkernel/intern/fcurve.c 
b/source/blender/blenkernel/intern/fcurve.c
index 02b95c8..abf8472 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -2436,11 +2436,11 @@ static float fcurve_eval_samples(FCurve *fcu, FPoint 
*fpts, float evaltime)
float t = fabsf(evaltime - floorf(evaltime));

/* find the one on the right frame (assume that these are 
spaced on 1-frame intervals) */
-   fpt = prevfpt + (int)(evaltime - prevfpt->vec[0]);
+   fpt = prevfpt + ((int)evaltime - (int)prevfpt->vec[0]);

/* if not exactly on the frame, perform linear interpolation 
with the next one */
-   if (t != 0.0f) 
-   cvalue = interpf(fpt->vec[1], (fpt + 1)->vec[1], t);
+   if ((t != 0.0f) && (t < 1.0f))
+   cvalue = interpf(fpt->vec[1], (fpt + 1)->vec[1], 1.0f - 
t);
else
cvalue = fpt->vec[1];
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [400e8c6] master: Cleanup: readfile: cleanup a bit error messages.

2015-11-13 Thread Bastien Montagne
Commit: 400e8c6449c88d11187fda6ea880d0126bc7c26b
Author: Bastien Montagne
Date:   Fri Nov 13 15:26:22 2015 +0100
Branches: master
https://developer.blender.org/rB400e8c6449c88d11187fda6ea880d0126bc7c26b

Cleanup: readfile: cleanup a bit error messages.

Printing those twice is already not so nice, but at least let's try to print 
same thing,
and avoid repetition of 'ERROR' in it.

===

M   source/blender/blenkernel/BKE_report.h
M   source/blender/blenkernel/intern/report.c
M   source/blender/blenloader/intern/readfile.c

===

diff --git a/source/blender/blenkernel/BKE_report.h 
b/source/blender/blenkernel/BKE_report.h
index 2acfeca..70feff1 100644
--- a/source/blender/blenkernel/BKE_report.h
+++ b/source/blender/blenkernel/BKE_report.h
@@ -66,6 +66,8 @@ Report *BKE_reports_last_displayable(ReportList *reports);
 
 bool BKE_reports_contain(ReportList *reports, ReportType level);
 
+const char *BKE_report_type_str(ReportType type);
+
 bool BKE_report_write_file_fp(FILE *fp, ReportList *reports, const char 
*header);
 bool BKE_report_write_file(const char *filepath, ReportList *reports, const 
char *header);
 
diff --git a/source/blender/blenkernel/intern/report.c 
b/source/blender/blenkernel/intern/report.c
index 3b371ce..67b076c 100644
--- a/source/blender/blenkernel/intern/report.c
+++ b/source/blender/blenkernel/intern/report.c
@@ -43,7 +43,7 @@
 #include "BKE_report.h"
 #include "BKE_global.h" /* G.background only */
 
-static const char *report_type_str(int type)
+const char *BKE_report_type_str(ReportType type)
 {
switch (type) {
case RPT_DEBUG:
@@ -109,7 +109,7 @@ void BKE_report(ReportList *reports, ReportType type, const 
char *_message)
/* in background mode always print otherwise there are cases the errors 
wont be displayed,
 * but still add to the report list since this is used for python 
exception handling */
if (G.background || !reports || ((reports->flag & RPT_PRINT) && (type 
>= reports->printlevel))) {
-   printf("%s: %s\n", report_type_str(type), message);
+   printf("%s: %s\n", BKE_report_type_str(type), message);
fflush(stdout); /* this ensures the message is printed before a 
crash */
}
 
@@ -117,7 +117,7 @@ void BKE_report(ReportList *reports, ReportType type, const 
char *_message)
char *message_alloc;
report = MEM_callocN(sizeof(Report), "Report");
report->type = type;
-   report->typestr = report_type_str(type);
+   report->typestr = BKE_report_type_str(type);
 
len = strlen(message);
message_alloc = MEM_callocN(sizeof(char) * (len + 1), 
"ReportMessage");
@@ -136,7 +136,7 @@ void BKE_reportf(ReportList *reports, ReportType type, 
const char *_format, ...)
const char *format = TIP_(_format);
 
if (G.background || !reports || ((reports->flag & RPT_PRINT) && (type 
>= reports->printlevel))) {
-   printf("%s: ", report_type_str(type));
+   printf("%s: ", BKE_report_type_str(type));
va_start(args, _format);
vprintf(format, args);
va_end(args);
@@ -157,7 +157,7 @@ void BKE_reportf(ReportList *reports, ReportType type, 
const char *_format, ...)
BLI_dynstr_free(ds);
 
report->type = type;
-   report->typestr = report_type_str(type);
+   report->typestr = BKE_report_type_str(type);
 
BLI_addtail(>list, report);
}
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 4198568..1b79a6f 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -255,7 +255,7 @@ void blo_reportf_wrap(ReportList *reports, ReportType type, 
const char *format,
BKE_report(reports, type, fixed_buf);

if (G.background == 0) {
-   printf("%s\n", fixed_buf);
+   printf("%s: %s\n", BKE_report_type_str(type), fixed_buf);
}
 }
 
@@ -5578,7 +5578,7 @@ static void lib_link_scene(FileData *fd, Main *main)
base->object = newlibadr_us(fd, sce->id.lib, 
base->object);

if (base->object == NULL) {
-   blo_reportf_wrap(fd->reports, 
RPT_WARNING, TIP_("LIB ERROR: object lost from scene: '%s'"),
+   blo_reportf_wrap(fd->reports, 
RPT_WARNING, TIP_("LIB: object lost from scene: '%s'"),
 sce->id.name + 2);
BLI_remlink(>base, base);
if (base == sce->basact) sce->basact = 

[Bf-blender-cvs] [8ad2808] master: Tighten checks around unlinkable datablocks becoming LIB_EXTERN.

2015-11-13 Thread Bastien Montagne
Commit: 8ad2808fd74b4d74218deeb7e41e9d45e8fd5571
Author: Bastien Montagne
Date:   Fri Nov 13 15:34:07 2015 +0100
Branches: master
https://developer.blender.org/rB8ad2808fd74b4d74218deeb7e41e9d45e8fd5571

Tighten checks around unlinkable datablocks becoming LIB_EXTERN.

We have currently a gooseberry file 
(scenes/01_island/01_meet_franck/01_01_01_A/01_01_01_A.anim.blend)
that links against two -pre repo libs, which are hence not available for common 
mortals,
and generate warnings and placeholders during load step.

Issue is, among those missing (directly) linked datablocks, we have two 
shapekeys!

This should never happen nor be possible at all. I tried understanding how this 
could happen,
with no luck at all, best bet would be some wild/bad call to `id_us_plus()` 
over those skeys
at some point...

Anyway, this commit:
- Handles a bit better those 'cases that should never happen' at load time.
- Adds several checks in ID handling code (and save/load code) to try to detect 
where/when
  a non-linkable datablock becomes LIB_EXTERN (i.e. directly linked).

===

M   source/blender/blenkernel/intern/library.c
M   source/blender/blenloader/intern/readfile.c
M   source/blender/blenloader/intern/writefile.c

===

diff --git a/source/blender/blenkernel/intern/library.c 
b/source/blender/blenkernel/intern/library.c
index f7f4f1c..a315a1f 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -89,6 +89,7 @@
 #include "BKE_global.h"
 #include "BKE_group.h"
 #include "BKE_gpencil.h"
+#include "BKE_idcode.h"
 #include "BKE_idprop.h"
 #include "BKE_image.h"
 #include "BKE_ipo.h"
@@ -152,6 +153,7 @@ void BKE_id_lib_local_paths(Main *bmain, Library *lib, ID 
*id)
 void id_lib_extern(ID *id)
 {
if (id) {
+   BLI_assert(BKE_idcode_is_linkable(GS(id->name)));
if (id->flag & LIB_INDIRECT) {
id->flag -= LIB_INDIRECT;
id->flag |= LIB_EXTERN;
@@ -179,10 +181,7 @@ void id_us_plus(ID *id)
if (id) {
BLI_assert(id->us >= 0);
id->us++;
-   if (id->flag & LIB_INDIRECT) {
-   id->flag -= LIB_INDIRECT;
-   id->flag |= LIB_EXTERN;
-   }
+   id_lib_extern(id);
}
 }
 
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 1b79a6f..a7585a5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3382,6 +3382,8 @@ static void lib_link_key(FileData *fd, Main *main)
blo_do_versions_key_uidgen(key);
}

+   BLI_assert((key->id.flag & LIB_EXTERN) == 0);
+
if (key->id.flag & LIB_NEED_LINK) {
lib_link_animdata(fd, >id, key->adt);

@@ -9623,6 +9625,8 @@ static ID *link_named_part(Main *mainl, FileData *fd, 
const short idcode, const
BHead *bhead = find_bhead_from_code_name(fd, idcode, name);
ID *id;
 
+   BLI_assert(BKE_idcode_is_linkable(idcode) && 
BKE_idcode_is_valid(idcode));
+
if (bhead) {
id = is_yet_read(fd, mainl, bhead);
if (id == NULL) {
@@ -9762,6 +9766,7 @@ ID *BLO_library_link_named_part_ex(
 static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID 
*id, ID **r_id)
 {
BHead *bhead = NULL;
+   const bool is_valid = BKE_idcode_is_linkable(GS(id->name)) || 
((id->flag & LIB_EXTERN) == 0);
 
if (fd) {
bhead = find_bhead_from_idname(fd, id->name);
@@ -9769,6 +9774,16 @@ static void link_id_part(ReportList *reports, FileData 
*fd, Main *mainvar, ID *i
 
id->flag &= ~LIB_READ;
 
+   if (!is_valid) {
+   blo_reportf_wrap(
+   reports, RPT_ERROR,
+   TIP_("LIB: %s: '%s' is directly linked from '%s' 
(parent '%s'), but is a non-linkable datatype"),
+   BKE_idcode_to_name(GS(id->name)),
+   id->name + 2,
+   mainvar->curlib->filepath,
+   library_parent_filepath(mainvar->curlib));
+   }
+
if (bhead) {
id->flag |= LIB_NEED_EXPAND;
// printf("read lib block %s\n", id->name);
@@ -9785,7 +9800,7 @@ static void link_id_part(ReportList *reports, FileData 
*fd, Main *mainvar, ID *i
 
/* Generate a placeholder for this ID (simplified version of 
read_libblock actually...). */
if (r_id) {
-   *r_id = create_placeholder(mainvar, id->name, id->flag);
+   *r_id = is_valid ? create_placeholder(mainvar, 
id->name, id->flag) : NULL;
}

[Bf-blender-cvs] [6d497d4] master: Cleanup: readfile: avoid some verbose if() checks which are already done in called code.

2015-11-13 Thread Bastien Montagne
Commit: 6d497d4f3b874b29d61db63c27bfa252da00e388
Author: Bastien Montagne
Date:   Thu Nov 12 12:25:17 2015 +0100
Branches: master
https://developer.blender.org/rB6d497d4f3b874b29d61db63c27bfa252da00e388

Cleanup: readfile: avoid some verbose if() checks which are already done in 
called code.

===

M   source/blender/blenloader/intern/readfile.c

===

diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index e52db00..4198568 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2098,6 +2098,7 @@ static void _IDP_DirectLinkGroup_OrFree(IDProperty 
**prop, int switch_endian, Fi
 /* stub function */
 static void IDP_LibLinkProperty(IDProperty *UNUSED(prop), int 
UNUSED(switch_endian), FileData *UNUSED(fd))
 {
+   /* Should we do something here, prop should be ensured to be non-NULL 
first... */
 }
 
 /*  READ IMAGE PREVIEW *** */
@@ -2678,8 +2679,7 @@ static void lib_link_node_socket(FileData *fd, ID 
*UNUSED(id), bNodeSocket *sock
 {
/* Link ID Properties -- and copy this comment EXACTLY for easy finding
 * of library blocks that implement this.*/
-   if (sock->prop)
-   IDP_LibLinkProperty(sock->prop, (fd->flags & 
FD_FLAGS_SWITCH_ENDIAN), fd);
+   IDP_LibLinkProperty(sock->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), 
fd);
 }
 
 /* singe node tree (also used for material/scene trees), ntree is not NULL */
@@ -2688,15 +2688,14 @@ static void lib_link_ntree(FileData *fd, ID *id, 
bNodeTree *ntree)
bNode *node;
bNodeSocket *sock;

-   if (ntree->adt) lib_link_animdata(fd, >id, ntree->adt);
+   lib_link_animdata(fd, >id, ntree->adt);

ntree->gpd = newlibadr_us(fd, id->lib, ntree->gpd);

for (node = ntree->nodes.first; node; node = node->next) {
/* Link ID Properties -- and copy this comment EXACTLY for easy 
finding
 * of library blocks that implement this.*/
-   if (node->prop)
-   IDP_LibLinkProperty(node->prop, (fd->flags & 
FD_FLAGS_SWITCH_ENDIAN), fd);
+   IDP_LibLinkProperty(node->prop, (fd->flags & 
FD_FLAGS_SWITCH_ENDIAN), fd);

node->id= newlibadr_us(fd, id->lib, node->id);
 
@@ -3238,7 +3237,7 @@ static void lib_link_armature(FileData *fd, Main *main)

for (arm = main->armature.first; arm; arm = arm->id.next) {
if (arm->id.flag & LIB_NEED_LINK) {
-   if (arm->adt) lib_link_animdata(fd, >id, arm->adt);
+   lib_link_animdata(fd, >id, arm->adt);
arm->id.flag -= LIB_NEED_LINK;
}
}
@@ -3287,7 +3286,7 @@ static void lib_link_camera(FileData *fd, Main *main)

for (ca = main->camera.first; ca; ca = ca->id.next) {
if (ca->id.flag & LIB_NEED_LINK) {
-   if (ca->adt) lib_link_animdata(fd, >id, ca->adt);
+   lib_link_animdata(fd, >id, ca->adt);

ca->ipo = newlibadr_us(fd, ca->id.lib, ca->ipo); // XXX 
deprecated - old animation system

@@ -3315,7 +3314,7 @@ static void lib_link_lamp(FileData *fd, Main *main)

for (la = main->lamp.first; la; la = la->id.next) {
if (la->id.flag & LIB_NEED_LINK) {
-   if (la->adt) lib_link_animdata(fd, >id, la->adt);
+   lib_link_animdata(fd, >id, la->adt);

for (a = 0; a < MAX_MTEX; a++) {
mtex = la->mtex[a];
@@ -3384,7 +3383,7 @@ static void lib_link_key(FileData *fd, Main *main)
}

if (key->id.flag & LIB_NEED_LINK) {
-   if (key->adt) lib_link_animdata(fd, >id, key->adt);
+   lib_link_animdata(fd, >id, key->adt);

key->ipo = newlibadr_us(fd, key->id.lib, key->ipo); // 
XXX deprecated - old animation system
key->from = newlibadr(fd, key->id.lib, key->from);
@@ -3451,7 +3450,7 @@ static void lib_link_mball(FileData *fd, Main *main)

for (mb = main->mball.first; mb; mb = mb->id.next) {
if (mb->id.flag & LIB_NEED_LINK) {
-   if (mb->adt) lib_link_animdata(fd, >id, mb->adt);
+   lib_link_animdata(fd, >id, mb->adt);

for (a = 0; a < mb->totcol; a++) 
mb->mat[a] = newlibadr_us(fd, mb->id.lib, 
mb->mat[a]);
@@ -3489,7 +3488,7 @@ static void lib_link_world(FileData *fd, Main *main)

for 

[Bf-blender-cvs] [f9b7ae7] GPencil_Editing_Stage3: Fix small compile error noted by Sybren

2015-11-13 Thread Joshua Leung
Commit: f9b7ae71ff39abc4d185a06cc126062ca01df384
Author: Joshua Leung
Date:   Sat Nov 14 01:20:19 2015 +1300
Branches: GPencil_Editing_Stage3
https://developer.blender.org/rBf9b7ae71ff39abc4d185a06cc126062ca01df384

Fix small compile error noted by Sybren

===

M   source/blender/editors/gpencil/gpencil_select.c

===

diff --git a/source/blender/editors/gpencil/gpencil_select.c 
b/source/blender/editors/gpencil/gpencil_select.c
index 08975f0..83a1f24 100644
--- a/source/blender/editors/gpencil/gpencil_select.c
+++ b/source/blender/editors/gpencil/gpencil_select.c
@@ -74,6 +74,8 @@ static int gpencil_select_poll(bContext *C)
if (gpd->layers.first)
return true;
}
+   
+   return false;
 }
 
 /* ** */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs