Merge branch 'master' into blender2.8

Conflicts:
	source/blender/makesrna/intern/rna_image.c
	source/blender/makesrna/intern/rna_object.c
	source/blender/makesrna/intern/rna_object_force.c
	source/blender/makesrna/intern/rna_screen.c
	source/blender/makesrna/intern/rna_sculpt_paint.c
	source/blender/makesrna/intern/rna_space.c
	source/blender/python/bmesh/bmesh_py_types.c
	source/blender/python/generic/bpy_internal_import.h
	source/blender/python/intern/bpy_rna_anim.c
	source/blender/python/intern/gpu_offscreen.c
This commit is contained in:
Bastien Montagne 2018-06-22 12:46:16 +02:00
commit 646412004b
18 changed files with 62 additions and 27 deletions

@ -208,6 +208,8 @@ void BKE_library_make_local(
void BKE_id_tag_set_atomic(struct ID *id, int tag);
void BKE_id_tag_clear_atomic(struct ID *id, int tag);
bool BKE_id_is_in_gobal_main(struct ID *id);
/* use when "" is given to new_id() */
#define ID_FALLBACK_NAME N_("Untitled")

@ -2558,3 +2558,11 @@ void BKE_id_tag_clear_atomic(ID *id, int tag)
{
atomic_fetch_and_and_int32(&id->tag, ~tag);
}
/** Check that given ID pointer actually is in G_MAIN.
* Main intended use is for debug asserts in places we cannot easily get rid of G_Main... */
bool BKE_id_is_in_gobal_main(ID *id) {
/* We do not want to fail when id is NULL here, even though this is a bit strange behavior... */
return (id == NULL || BLI_findindex(which_libbase(G_MAIN, GS(id->name)), id) != -1);
}

@ -657,7 +657,7 @@ void MESH_OT_bevel(wmOperatorType *ot)
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_GRAB_CURSOR | OPTYPE_BLOCKING;
RNA_def_enum(ot->srna, "offset_type", offset_type_items, 0, "Amount Type", "What distance Amount measures");
prop = RNA_def_float(ot->srna, "offset", 0.0f, -1e6f, 1e6f, "Amount", "", 0.0f, 1.0f);
prop = RNA_def_float(ot->srna, "offset", 0.0f, -1e6f, 1e6f, "Amount", "", 0.0f, 100.0f);
RNA_def_property_float_array_funcs_runtime(prop, NULL, NULL, mesh_ot_bevel_offset_range_func);
RNA_def_int(ot->srna, "segments", 1, 1, SEGMENTS_HARD_MAX, "Segments", "Segments for curved edge", 1, 8);
RNA_def_float(ot->srna, "profile", 0.5f, PROFILE_HARD_MIN, 1.0f, "Profile",

@ -150,7 +150,8 @@ void rna_ID_name_set(PointerRNA *ptr, const char *value)
{
ID *id = (ID *)ptr->data;
BLI_strncpy_utf8(id->name + 2, value, sizeof(id->name) - 2);
BLI_libblock_ensure_unique_name(G.main, id->name);
BLI_assert(BKE_id_is_in_gobal_main(id));
BLI_libblock_ensure_unique_name(G_MAIN, id->name);
}
static int rna_ID_name_editable(PointerRNA *ptr, const char **UNUSED(r_info))
@ -456,7 +457,9 @@ int rna_IDMaterials_assign_int(PointerRNA *ptr, int key, const PointerRNA *assig
short *totcol = give_totcolp_id(id);
Material *mat_id = assign_ptr->id.data;
if (totcol && (key >= 0 && key < *totcol)) {
assign_material_id(G.main, id, mat_id, key + 1);
BLI_assert(BKE_id_is_in_gobal_main(id));
BLI_assert(BKE_id_is_in_gobal_main(&mat_id->id));
assign_material_id(G_MAIN, id, mat_id, key + 1);
return 1;
}
else {
@ -512,7 +515,8 @@ static void rna_IDMaterials_clear_id(ID *id, Main *bmain, int remove_material_sl
static void rna_Library_filepath_set(PointerRNA *ptr, const char *value)
{
Library *lib = (Library *)ptr->data;
BKE_library_filepath_set(G.main, lib, value);
BLI_assert(BKE_id_is_in_gobal_main(&lib->id));
BKE_library_filepath_set(G_MAIN, lib, value);
}
/* ***** ImagePreview ***** */

@ -341,7 +341,8 @@ static void rna_EditBone_name_set(PointerRNA *ptr, const char *value)
BLI_strncpy_utf8(newname, value, sizeof(ebone->name));
BLI_strncpy(oldname, ebone->name, sizeof(ebone->name));
ED_armature_bone_rename(G.main, arm, oldname, newname);
BLI_assert(BKE_id_is_in_gobal_main(&arm->id));
ED_armature_bone_rename(G_MAIN, arm, oldname, newname);
}
static void rna_Bone_name_set(PointerRNA *ptr, const char *value)
@ -354,7 +355,8 @@ static void rna_Bone_name_set(PointerRNA *ptr, const char *value)
BLI_strncpy_utf8(newname, value, sizeof(bone->name));
BLI_strncpy(oldname, bone->name, sizeof(bone->name));
ED_armature_bone_rename(G.main, arm, oldname, newname);
BLI_assert(BKE_id_is_in_gobal_main(&arm->id));
ED_armature_bone_rename(G_MAIN, arm, oldname, newname);
}
static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[])

@ -93,7 +93,8 @@ static void rna_Image_source_set(PointerRNA *ptr, int value)
if (value != ima->source) {
ima->source = value;
BKE_image_signal(G.main, ima, NULL, IMA_SIGNAL_SRC_CHANGE);
BLI_assert(BKE_id_is_in_gobal_main(&ima->id));
BKE_image_signal(G_MAIN, ima, NULL, IMA_SIGNAL_SRC_CHANGE);
DEG_id_tag_update(&ima->id, 0);
}
}

@ -327,6 +327,9 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value)
return;
}
BLI_assert(BKE_id_is_in_gobal_main(&ob->id));
BLI_assert(BKE_id_is_in_gobal_main(id));
if (ob->type == OB_EMPTY) {
if (ob->data) {
id_us_min((ID *)ob->data);
@ -339,7 +342,7 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value)
}
}
else if (ob->type == OB_MESH) {
BKE_mesh_assign_object(G.main, ob, (Mesh *)id);
BKE_mesh_assign_object(G_MAIN, ob, (Mesh *)id);
}
else {
if (ob->data) {
@ -351,7 +354,7 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value)
id_us_plus(id);
ob->data = id;
test_object_materials(G.main, ob, id);
test_object_materials(G_MAIN, ob, id);
if (GS(id->name) == ID_CU)
BKE_curve_type_test(ob);
@ -738,7 +741,9 @@ static void rna_Object_active_material_set(PointerRNA *ptr, PointerRNA value)
Object *ob = (Object *)ptr->id.data;
DEG_id_tag_update(value.data, 0);
assign_material(G.main, ob, value.data, ob->actcol, BKE_MAT_ASSIGN_EXISTING);
BLI_assert(BKE_id_is_in_gobal_main(&ob->id));
BLI_assert(BKE_id_is_in_gobal_main(value.data));
assign_material(G_MAIN, ob, value.data, ob->actcol, BKE_MAT_ASSIGN_EXISTING);
}
static int rna_Object_active_material_editable(PointerRNA *ptr, const char **UNUSED(r_info))
@ -930,7 +935,9 @@ static void rna_MaterialSlot_material_set(PointerRNA *ptr, PointerRNA value)
Object *ob = (Object *)ptr->id.data;
int index = (Material **)ptr->data - ob->mat;
assign_material(G.main, ob, value.data, index + 1, BKE_MAT_ASSIGN_EXISTING);
BLI_assert(BKE_id_is_in_gobal_main(&ob->id));
BLI_assert(BKE_id_is_in_gobal_main(value.data));
assign_material(G_MAIN, ob, value.data, index + 1, BKE_MAT_ASSIGN_EXISTING);
}
static int rna_MaterialSlot_link_get(PointerRNA *ptr)

@ -292,7 +292,9 @@ static void rna_PoseChannel_name_set(PointerRNA *ptr, const char *value)
BLI_strncpy_utf8(newname, value, sizeof(pchan->name));
BLI_strncpy(oldname, pchan->name, sizeof(pchan->name));
ED_armature_bone_rename(G.main, ob->data, oldname, newname);
BLI_assert(BKE_id_is_in_gobal_main(&ob->id));
BLI_assert(BKE_id_is_in_gobal_main(ob->data));
ED_armature_bone_rename(G_MAIN, ob->data, oldname, newname);
}
static int rna_PoseChannel_has_ik_get(PointerRNA *ptr)

@ -123,7 +123,7 @@ static void rna_Screen_layout_name_set(PointerRNA *ptr, const char *value)
{
bScreen *screen = ptr->data;
WorkSpace *workspace;
WorkSpaceLayout *layout = BKE_workspace_layout_find_global(G.main, screen, &workspace);
WorkSpaceLayout *layout = BKE_workspace_layout_find_global(G_MAIN, screen, &workspace);
if (layout) {
BKE_workspace_layout_name_set(workspace, layout, value);

@ -987,10 +987,12 @@ static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value)
SpaceImage *sima = (SpaceImage *)(ptr->data);
bScreen *sc = (bScreen *)ptr->id.data;
wmWindow *win;
Scene *scene = ED_screen_scene_find_with_window(sc, G.main->wm.first, &win);
Scene *scene = ED_screen_scene_find_with_window(sc, G_MAIN->wm.first, &win);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer);
ED_space_image_set(G.main, sima, scene, obedit, (Image *)value.data);
BLI_assert(BKE_id_is_in_gobal_main(value.data));
ED_space_image_set(G_MAIN, sima, scene, obedit, (Image *)value.data);
}
static void rna_SpaceImageEditor_mask_set(PointerRNA *ptr, PointerRNA value)

@ -37,6 +37,7 @@
#include "BKE_customdata.h"
#include "BKE_DerivedMesh.h"
#include "BKE_global.h"
#include "BKE_library.h"
#include "DEG_depsgraph.h"
@ -903,8 +904,9 @@ static PyObject *bpy_bmesh_to_mesh(BPy_BMesh *self, PyObject *args)
bm = self->bm;
BLI_assert(BKE_id_is_in_gobal_main(&me->id));
BM_mesh_bm_to_me(
G.main, /* XXX UGLY! */
G_MAIN, /* XXX UGLY! */
bm, me,
(&(struct BMeshToMeshParams){
.calc_object_remap = true,

@ -175,7 +175,7 @@ PyObject *bpy_text_import_name(const char *name, int *found)
Text *text;
char txtname[MAX_ID_NAME - 2];
int namelen = strlen(name);
//XXX Main *maggie = bpy_import_main ? bpy_import_main:G.main;
//XXX Main *maggie = bpy_import_main ? bpy_import_main : G_MAIN;
Main *maggie = bpy_import_main;
*found = 0;
@ -224,7 +224,7 @@ PyObject *bpy_text_reimport(PyObject *module, int *found)
Text *text;
const char *name;
const char *filepath;
//XXX Main *maggie = bpy_import_main ? bpy_import_main:G.main;
//XXX Main *maggie = bpy_import_main ? bpy_import_main : G_MAIN;
Main *maggie = bpy_import_main;
if (!maggie) {

@ -34,7 +34,7 @@
#include "BLI_string.h"
#include "BKE_appdir.h"
#include "BKE_global.h" /* XXX, G.main only */
#include "BKE_global.h" /* XXX, G_MAIN only */
#include "BKE_blender_version.h"
#include "BKE_bpath.h"
@ -138,7 +138,7 @@ static PyObject *bpy_blend_paths(PyObject *UNUSED(self), PyObject *args, PyObjec
list = PyList_New(0);
BKE_bpath_traverse_main(G.main, bpy_blend_paths_visit_cb, flag, (void *)list);
BKE_bpath_traverse_main(G_MAIN, bpy_blend_paths_visit_cb, flag, (void *)list);
return list;
}

@ -95,7 +95,7 @@ static PyObject *bpy_lib_write(PyObject *UNUSED(self), PyObject *args, PyObject
return NULL;
}
Main *bmain_src = G.main;
Main *bmain_src = G_MAIN;
int write_flags = 0;
if (use_relative_remap) {

@ -7090,7 +7090,7 @@ PyObject *BPY_rna_module(void)
PointerRNA ptr;
/* for now, return the base RNA type rather than a real module */
RNA_main_pointer_create(G.main, &ptr);
RNA_main_pointer_create(G_MAIN, &ptr);
pyrna = (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
rna_module_ptr = &pyrna->ptr;
@ -7101,9 +7101,9 @@ void BPY_update_rna_module(void)
{
if (rna_module_ptr) {
#if 0
RNA_main_pointer_create(G.main, rna_module_ptr);
RNA_main_pointer_create(G_MAIN, rna_module_ptr);
#else
rna_module_ptr->data = G.main; /* just set data is enough */
rna_module_ptr->data = G_MAIN; /* just set data is enough */
#endif
}
}

@ -45,6 +45,7 @@
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_idcode.h"
#include "BKE_library.h"
#include "BKE_report.h"
#include "RNA_access.h"
@ -267,13 +268,15 @@ PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *args, PyOb
return PyBool_FromLong(result);
}
else {
ID *id = self->ptr.id.data;
struct Depsgraph *depsgraph = CTX_data_depsgraph(BPy_GetContext());
ReportList reports;
short result;
BKE_reports_init(&reports, RPT_STORE);
result = insert_keyframe(G.main, depsgraph, &reports, (ID *)self->ptr.id.data, NULL, group_name, path_full, index, cfra, keytype, options);
BLI_assert(BKE_id_is_in_gobal_main(id));
result = insert_keyframe(G_MAIN, depsgraph, &reports, id, NULL, group_name, path_full, index, cfra, keytype, options);
MEM_freeN((void *)path_full);
if (BPy_reports_to_error(&reports, PyExc_RuntimeError, true) == -1)

@ -160,7 +160,7 @@ static PyObject *bpy_user_map(PyObject *UNUSED(self), PyObject *args, PyObject *
BPy_StructRNA *pyrna = (BPy_StructRNA *)self;
Main *bmain = pyrna->ptr.data;
#else
Main *bmain = G.main; /* XXX Ugly, but should work! */
Main *bmain = G_MAIN; /* XXX Ugly, but should work! */
#endif
PyObject *subset = NULL;
@ -230,7 +230,6 @@ static PyObject *bpy_user_map(PyObject *UNUSED(self), PyObject *args, PyObject *
lb_index = set_listbasepointers(bmain, lb_array);
while (lb_index--) {
if (val_types_bitmap && lb_array[lb_index]->first) {
if (!id_check_type(lb_array[lb_index]->first, val_types_bitmap)) {
continue;

@ -36,6 +36,7 @@
#include "WM_types.h"
#include "BKE_global.h"
#include "BKE_library.h"
#include "ED_screen.h"
@ -195,6 +196,8 @@ static PyObject *pygpu_offscreen_draw_view3d(BPy_GPUOffScreen *self, PyObject *a
return NULL;
}
BLI_assert(BKE_id_is_in_gobal_main(&scene->id));
fx = GPU_fx_compositor_create();
fx_settings = v3d->fx_settings; /* full copy */