Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/editors/object/object_add.c1
-rw-r--r--source/blender/editors/object/object_relations.c2
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c4
-rw-r--r--source/blender/python/intern/bpy_interface.c46
-rw-r--r--source/blender/python/intern/bpy_rna.c15
5 files changed, 44 insertions, 24 deletions
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 44f80d54666..9b7b23f1026 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -737,7 +737,6 @@ static void copy_object__forwardModifierLinks(void *userData, Object *ob,
/* after copying objects, copied data should get new pointers */
static void copy_object_set_idnew(bContext *C, int dupflag)
{
- Object *ob;
Material *ma, *mao;
ID *id;
#if 0 // XXX old animation system
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index a4c9942833e..6849cefbbd9 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -976,7 +976,7 @@ static int track_set_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
}
- DAG_scene_sort(CTX_data_scene(C));
+ DAG_scene_sort(scene);
ED_anim_dag_flush_update(C);
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index d2d4b7ac2c4..339ba55bfd1 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -2489,8 +2489,8 @@ static int find_next_prev_edit(Scene *scene, int cfra, int side)
return best_seq ? best_seq->startdisp : cfra;
}
-static int next_prev_edit_internal(Scene *scene, int side) {
- Editing *ed= seq_give_editing(scene, FALSE);
+static int next_prev_edit_internal(Scene *scene, int side)
+{
int change=0;
int cfra = CFRA;
int nfra= find_next_prev_edit(scene, cfra, side);
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index dc7f6947f38..d0c70a9ee96 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -971,28 +971,36 @@ int bpy_context_get(bContext *C, const char *member, bContextDataResult *result)
CTX_data_pointer_set(result, ptr->id.data, ptr->type, ptr->data);
done= 1;
}
- else if (PyList_Check(item)) {
- int len= PyList_Size(item);
- int i;
- for(i = 0; i < len; i++) {
- PyObject *list_item = PyList_GET_ITEM(item, i); // XXX check type
-
- if(BPy_StructRNA_Check(list_item)) {
- /*
- CollectionPointerLink *link= MEM_callocN(sizeof(CollectionPointerLink), "bpy_context_get");
- link->ptr= ((BPy_StructRNA *)item)->ptr;
- BLI_addtail(&result->list, link);
- */
- ptr= &(((BPy_StructRNA *)list_item)->ptr);
- CTX_data_list_add(result, ptr->id.data, ptr->type, ptr->data);
- }
- else {
- printf("List item not a valid type\n");
+ else if (PySequence_Check(item)) {
+ PyObject *seq_fast= PySequence_Fast(item, "bpy_context_get sequence conversion");
+ if (seq_fast==NULL) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+ else {
+ int len= PySequence_Fast_GET_SIZE(seq_fast);
+ int i;
+ for(i = 0; i < len; i++) {
+ PyObject *list_item= PySequence_Fast_GET_ITEM(seq_fast, i);
+
+ if(BPy_StructRNA_Check(list_item)) {
+ /*
+ CollectionPointerLink *link= MEM_callocN(sizeof(CollectionPointerLink), "bpy_context_get");
+ link->ptr= ((BPy_StructRNA *)item)->ptr;
+ BLI_addtail(&result->list, link);
+ */
+ ptr= &(((BPy_StructRNA *)list_item)->ptr);
+ CTX_data_list_add(result, ptr->id.data, ptr->type, ptr->data);
+ }
+ else {
+ printf("List item not a valid type\n");
+ }
+
}
+ Py_DECREF(seq_fast);
+ done= 1;
}
-
- done= 1;
}
if(done==0) {
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index b067d30e36e..0d338cd4631 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -1124,11 +1124,24 @@ static int pyrna_prop_contains(BPy_PropertyRNA * self, PyObject *value)
return 0;
}
+static PyObject *pyrna_prop_item(BPy_PropertyRNA * self, Py_ssize_t index)
+{
+ /* reuse subscript functions */
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
+ return prop_subscript_collection_int(self, index);
+ } else if (RNA_property_array_check(&self->ptr, self->prop)) {
+ return prop_subscript_array_int(self, index);
+ }
+
+ PyErr_SetString(PyExc_TypeError, "rna type is not an array or a collection");
+ return NULL;
+}
+
static PySequenceMethods pyrna_prop_as_sequence = {
NULL, /* Cant set the len otherwise it can evaluate as false */
NULL, /* sq_concat */
NULL, /* sq_repeat */
- NULL, /* sq_item */
+ (ssizeargfunc)pyrna_prop_item, /* sq_item */ /* Only set this so PySequence_Check() returns True */
NULL, /* sq_slice */
NULL, /* sq_ass_item */
NULL, /* sq_ass_slice */