Commit: 9567529b8f854449e10d59f793f0a225b9a4c495
Author: Campbell Barton
Date:   Sat Aug 12 00:23:49 2017 +1000
Branches: blender2.8
https://developer.blender.org/rB9567529b8f854449e10d59f793f0a225b9a4c495

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/makesrna/intern/rna_curve_api.c
index 4da262daf8d,be6808567bb..b518b0cb5b0
--- a/source/blender/makesrna/intern/rna_curve_api.c
+++ b/source/blender/makesrna/intern/rna_curve_api.c
@@@ -45,16 -45,10 +45,16 @@@
  #ifdef RNA_RUNTIME
  static void rna_Curve_transform(Curve *cu, float *mat, int shape_keys)
  {
-       BKE_curve_transform(cu, (float (*)[4])mat, shape_keys);
+       BKE_curve_transform(cu, (float (*)[4])mat, shape_keys, true);
  
 -      DAG_id_tag_update(&cu->id, 0);
 +      DEG_id_tag_update(&cu->id, 0);
  }
 +
 +static void rna_Curve_update_gpu_tag(Curve *cu)
 +{
 +      BKE_curve_batch_cache_dirty(cu, BKE_CURVE_BATCH_DIRTY_ALL);
 +}
 +
  #else
  
  void RNA_api_curve(StructRNA *srna)
diff --cc source/blender/makesrna/intern/rna_meta_api.c
index 117162babd5,4c3fa787b94..46547677dfd
--- a/source/blender/makesrna/intern/rna_meta_api.c
+++ b/source/blender/makesrna/intern/rna_meta_api.c
@@@ -45,9 -45,9 +45,9 @@@
  #ifdef RNA_RUNTIME
  static void rna_Meta_transform(struct MetaBall *mb, float *mat)
  {
-       BKE_mball_transform(mb, (float (*)[4])mat);
+       BKE_mball_transform(mb, (float (*)[4])mat, true);
  
 -      DAG_id_tag_update(&mb->id, 0);
 +      DEG_id_tag_update(&mb->id, 0);
  }
  #else
  
diff --cc source/blender/python/intern/bpy_manipulator_wrap.c
index db9fcdb377a,00000000000..3aca0cda224
mode 100644,000000..100644
--- a/source/blender/python/intern/bpy_manipulator_wrap.c
+++ b/source/blender/python/intern/bpy_manipulator_wrap.c
@@@ -1,247 -1,0 +1,247 @@@
 +/*
 + * ***** BEGIN GPL LICENSE BLOCK *****
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software Foundation,
 + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 + *
 + * ***** END GPL LICENSE BLOCK *****
 + */
 +
 +/** \file blender/python/intern/bpy_manipulator_wrap.c
 + *  \ingroup pythonintern
 + *
 + * This file is so Python can define widget-group's that C can call into.
 + * The generic callback functions for Python widget-group are defines in
 + * 'rna_wm.c', some calling into functions here to do python specific
 + * functionality.
 + *
 + * \note This follows 'bpy_operator_wrap.c' very closely.
 + * Keep in sync unless there is good reason not to!
 + */
 +
 +#include <Python.h>
 +
 +#include "BLI_utildefines.h"
 +
 +#include "WM_api.h"
 +#include "WM_types.h"
 +
 +#include "RNA_access.h"
 +#include "RNA_define.h"
 +#include "RNA_enum_types.h"
 +
 +#include "bpy_rna.h"
 +#include "bpy_intern_string.h"
 +#include "bpy_manipulator_wrap.h"  /* own include */
 +
 +/* we may want to add, but not now */
 +
 +/* -------------------------------------------------------------------- */
 +
 +/** \name Manipulator
 + * \{ */
 +
 +
 +static bool bpy_manipulatortype_target_property_def(
 +        wmManipulatorType *wt, PyObject *item)
 +{
 +      /* Note: names based on 'rna_rna.c' */
 +      PyObject *empty_tuple = PyTuple_New(0);
 +
 +      struct {
 +              char *id;
 +              char *type_id; int type;
 +              int array_length;
 +      } params = {
 +              .id = NULL, /* not optional */
 +              .type = PROP_FLOAT,
 +              .type_id = NULL,
 +              .array_length = 1,
 +      };
 +
 +      static const char * const _keywords[] = {"id", "type", "array_length", 
NULL};
 +#define KW_FMT "|$ssi:register_class"
 +#if PY_VERSION_HEX >= 0x03060000
 +      static _PyArg_Parser _parser = {KW_FMT, _keywords, 0};
 +      if (!_PyArg_ParseTupleAndKeywordsFast(
 +              empty_tuple, item,
 +              &_parser,
 +              &params.id,
 +              &params.type_id,
 +              &params.array_length))
 +#else
 +      if (!PyArg_ParseTupleAndKeywords(
 +              empty_tuple, item,
 +              KW_FMT, (char **)_keywords,
 +              &params.id,
 +              &params.type_id,
 +              &params.array_length))
 +#endif
 +      {
 +              goto fail;
 +      }
 +#undef KW_FMT
 +
 +      if (params.id == NULL) {
 +              PyErr_SetString(PyExc_ValueError, "'id' argument not given");
 +              goto fail;
 +      }
 +
 +      if ((params.type_id != NULL) &&
 +          pyrna_enum_value_from_id(
 +              rna_enum_property_type_items, params.type_id, &params.type, 
"'type' enum value") == -1)
 +      {
 +              goto fail;
 +      }
 +      else {
 +              params.type = rna_enum_property_type_items[params.type].value;
 +      }
 +
 +      if ((params.array_length < 1 || params.array_length > 
RNA_MAX_ARRAY_LENGTH)) {
 +              PyErr_SetString(PyExc_ValueError, "'array_length' out of 
range");
 +              goto fail;
 +      }
 +
 +      WM_manipulatortype_target_property_def(wt, params.id, params.type, 
params.array_length);
 +      Py_DECREF(empty_tuple);
 +      return true;
 +
 +fail:
 +      Py_DECREF(empty_tuple);
 +      return false;
 +}
 +
 +static void manipulator_properties_init(wmManipulatorType *wt)
 +{
 +      PyTypeObject *py_class = wt->ext.data;
 +      RNA_struct_blender_type_set(wt->ext.srna, wt);
 +
 +      /* only call this so pyrna_deferred_register_class gives a useful error
 +       * WM_operatortype_append_ptr will call RNA_def_struct_identifier
 +       * later */
-       RNA_def_struct_identifier(wt->srna, wt->idname);
++      RNA_def_struct_identifier(&BLENDER_RNA, wt->srna, wt->idname);
 +
 +      if (pyrna_deferred_register_class(wt->srna, py_class) != 0) {
 +              PyErr_Print(); /* failed to register operator props */
 +              PyErr_Clear();
 +      }
 +
 +      /* Extract target property definitions from 'bl_target_properties' */
 +      {
 +              /* picky developers will notice that 'bl_targets' won't work 
with inheritance
 +               * get direct from the dict to avoid raising a load of 
attribute errors (yes this isnt ideal) - campbell */
 +              PyObject *py_class_dict = py_class->tp_dict;
 +              PyObject *bl_target_properties = PyDict_GetItem(py_class_dict, 
bpy_intern_str_bl_target_properties);
 +
 +              /* Some widgets may only exist to activate operators. */
 +              if (bl_target_properties != NULL) {
 +                      PyObject *bl_target_properties_fast;
 +                      if (!(bl_target_properties_fast = PySequence_Fast(
 +                                bl_target_properties, "bl_target_properties 
sequence")))
 +                      {
 +                              /* PySequence_Fast sets the error */
 +                              PyErr_Print();
 +                              PyErr_Clear();
 +                              return;
 +                      }
 +
 +                      const uint items_len = 
PySequence_Fast_GET_SIZE(bl_target_properties_fast);
 +                      PyObject **items = 
PySequence_Fast_ITEMS(bl_target_properties_fast);
 +
 +                      for (uint i = 0; i < items_len; i++) {
 +                              if 
(!bpy_manipulatortype_target_property_def(wt, items[i])) {
 +                                      PyErr_Print();
 +                                      PyErr_Clear();
 +                                      break;
 +                              }
 +                      }
 +
 +                      Py_DECREF(bl_target_properties_fast);
 +              }
 +      }
 +}
 +
 +void BPY_RNA_manipulator_wrapper(wmManipulatorType *wt, void *userdata)
 +{
 +      /* take care not to overwrite anything set in
 +       * WM_manipulatormaptype_group_link_ptr before opfunc() is called */
 +      StructRNA *srna = wt->srna;
 +      *wt = *((wmManipulatorType *)userdata);
 +      wt->srna = srna; /* restore */
 +
 +      /* don't do translations here yet */
 +#if 0
 +      /* Use i18n context from ext.srna if possible (py manipulatorgroups). */
 +      if (wt->ext.srna) {
 +              RNA_def_struct_translation_context(wt->srna, 
RNA_struct_translation_context(wt->ext.srna));
 +      }
 +#endif
 +
 +      wt->struct_size = sizeof(wmManipulator);
 +
 +      manipulator_properties_init(wt);
 +}
 +
 +/** \} */
 +
 +
 +/* -------------------------------------------------------------------- */
 +
 +/** \name Manipulator Group
 + * \{ */
 +
 +static void manipulatorgroup_properties_init(wmManipulatorGroupType *wgt)
 +{
 +#ifdef USE_SRNA
 +      PyTypeObject *py_class = wgt->ext.data;
 +#endif
 +      RNA_struct_blender_type_set(wgt->ext.srna, wgt);
 +
 +#ifdef USE_SRNA
 +      /* only call this so pyrna_deferred_register_class gives a useful error
 +       * WM_operatortype_append_ptr will call RNA_def_struct_identifier
 +       * later */
 +      RNA_def_struct_identifier(wgt->srna, wgt->idname);
 +
 +      if (pyrna_deferred_register_class(wgt->srna, py_class) != 0) {
 +              PyErr_Print(); /* failed to register operator props */
 +              PyErr_Clear();
 +      }
 +#endif
 +}
 +
 +void BPY_RNA_manipulatorgroup_wrapper(wmManipulatorGroupType *wgt, void 
*userdata)
 +{
 +      /* take care not to overwrite anything set in
 +       * WM_manipulatormaptype_group_link_ptr before opfunc() is called */
 +#ifdef USE_SRNA
 +      StructRNA *srna = wgt->srna;
 +#endif
 +      *wgt = *((wmManipulatorGroupType *)userdata);
 +#ifdef USE_SRNA
 +      wgt->srna = srna; /* restore */
 +#endif
 +
 +#ifdef USE_SRNA
 +      /* Use i18n context from ext.srna if possible (py manipulatorgroups). */
 +      if (wgt->ext.srna) {
 +              RNA_def_struct_translation_context(wgt->srna, 
RNA_struct_translation_context(wgt->ext.srna));
 +      }
 +#endif
 +
 +      manipulatorgroup_properties_init(wgt);
 +}
 +
 +/** \} */
 +
diff --cc source/blender/windowmanager/manipulators/intern/wm_manipulator_type.c
index 18265319024,00000000000..b2f6a251d1f
mode 100644,000000..100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_type.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_type.c
@@@ -1,207 -1,0 +1,207 @@@
 +/*
 + * ***** BEGIN GPL LICENSE BLOCK *****
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software Foundation,
 + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 + *
 + * ***** END GPL LICENSE BLOCK *****
 + */
 +
 +/** \file blender/windowmanager/manipulators/intern/wm_manipulator_type.c


@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to