Refactor: pass Main to id_make_local.
authorBastien Montagne <montagne29@wanadoo.fr>
Fri, 8 Jul 2016 14:14:55 +0000 (16:14 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Fri, 8 Jul 2016 16:11:20 +0000 (18:11 +0200)
Totally stupid to not pass it, and then let (some) BKE_foo_make_local() use G.main!

Note: unused for now, much more refactoring still to come in make_local area!

source/blender/blenkernel/BKE_library.h
source/blender/blenkernel/intern/library.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/object/object_relations.c
source/blender/editors/space_outliner/outliner_tools.c

index 56f040ab26045d10b84ce223c658d9444bb48464..37937aa20b367cb025069946f970cf189c18a10f 100644 (file)
@@ -81,7 +81,7 @@ void id_us_min(struct ID *id);
 void id_fake_user_set(struct ID *id);
 void id_fake_user_clear(struct ID *id);
 
-bool id_make_local(struct ID *id, bool test);
+bool id_make_local(struct Main *bmain, struct ID *id, bool test);
 bool id_single_user(struct bContext *C, struct ID *id, struct PointerRNA *ptr, struct PropertyRNA *prop);
 bool id_copy(struct ID *id, struct ID **newid, bool test);
 void id_sort_by_name(struct ListBase *lb, struct ID *id);
index 553dd1761b87d50f267c6387a8353b6fe512e74a..374afa64ca4711b1fd1b8358121c623a4aa92583 100644 (file)
@@ -253,7 +253,7 @@ void id_fake_user_clear(ID *id)
 
 /* calls the appropriate make_local method for the block, unless test. Returns true
  * if the block can be made local. */
-bool id_make_local(ID *id, bool test)
+bool id_make_local(Main *UNUSED(bmain), ID *id, bool test)
 {
        if (id->tag & LIB_TAG_INDIRECT)
                return false;
index 7205cdb3548f1a3ca303009c2bd8b8a7ed9b7d94..77dc822fd4033469e213fa18d53eeb0c1e634f43 100644 (file)
@@ -302,7 +302,7 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
                        break;
                case UI_ID_LOCAL:
                        if (id) {
-                               if (id_make_local(id, false)) {
+                               if (id_make_local(CTX_data_main(C), id, false)) {
                                        /* reassign to get get proper updates/notifiers */
                                        idptr = RNA_property_pointer_get(&template->ptr, template->prop);
                                        RNA_property_pointer_set(&template->ptr, template->prop, idptr);
@@ -455,7 +455,7 @@ static void template_ID(
                        else {
                                but = uiDefIconBut(block, UI_BTYPE_BUT, 0, ICON_LIBRARY_DATA_DIRECT, 0, 0, UI_UNIT_X, UI_UNIT_Y,
                                                   NULL, 0, 0, 0, 0, TIP_("Direct linked library datablock, click to make local"));
-                               if (!id_make_local(id, true /* test */) || (idfrom && idfrom->lib))
+                               if (!id_make_local(CTX_data_main(C), id, true /* test */) || (idfrom && idfrom->lib))
                                        UI_but_flag_enable(but, UI_BUT_DISABLED);
                        }
 
index af1c840b902278a455186aba75b89eb053ab5bc0..255477b4d900d212b9017f740e674375eaf79602 100644 (file)
@@ -2104,11 +2104,11 @@ static void make_local_makelocalmaterial(Material *ma)
        AnimData *adt;
        int b;
 
-       id_make_local(&ma->id, false);
+       id_make_local(G.main, &ma->id, false);
 
        for (b = 0; b < MAX_MTEX; b++)
                if (ma->mtex[b] && ma->mtex[b]->tex)
-                       id_make_local(&ma->mtex[b]->tex->id, false);
+                       id_make_local(G.main, &ma->mtex[b]->tex->id, false);
 
        adt = BKE_animdata_from_id(&ma->id);
        if (adt) BKE_animdata_make_local(adt);
@@ -2237,7 +2237,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
                }
 
                if (ob->id.lib)
-                       id_make_local(&ob->id, false);
+                       id_make_local(bmain, &ob->id, false);
        }
        CTX_DATA_END;
 
@@ -2259,7 +2259,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
                id = ob->data;
 
                if (id && (ELEM(mode, MAKE_LOCAL_SELECT_OBDATA, MAKE_LOCAL_SELECT_OBDATA_MATERIAL))) {
-                       id_make_local(id, false);
+                       id_make_local(bmain, id, false);
                        adt = BKE_animdata_from_id(id);
                        if (adt) BKE_animdata_make_local(adt);
 
@@ -2275,7 +2275,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
                }
 
                for (psys = ob->particlesystem.first; psys; psys = psys->next)
-                       id_make_local(&psys->part->id, false);
+                       id_make_local(bmain, &psys->part->id, false);
 
                adt = BKE_animdata_from_id(&ob->id);
                if (adt) BKE_animdata_make_local(adt);
@@ -2294,7 +2294,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
 
                                for (b = 0; b < MAX_MTEX; b++)
                                        if (la->mtex[b] && la->mtex[b]->tex)
-                                               id_make_local(&la->mtex[b]->tex->id, false);
+                                               id_make_local(bmain, &la->mtex[b]->tex->id, false);
                        }
                        else {
                                for (a = 0; a < ob->totcol; a++) {
index 13adaff5224cbdd0d0c10e6885aec9a74120d5bd..f3235d07757e7d85b7be635efbcc726649f759b4 100644 (file)
@@ -436,10 +436,10 @@ static void id_local_cb(
         TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
 {
        if (ID_IS_LINKED_DATABLOCK(tselem->id) && (tselem->id->tag & LIB_TAG_EXTERN)) {
+               Main *bmain = CTX_data_main(C);
                /* if the ID type has no special local function,
                 * just clear the lib */
-               if (id_make_local(tselem->id, false) == false) {
-                       Main *bmain = CTX_data_main(C);
+               if (id_make_local(bmain, tselem->id, false) == false) {
                        id_clear_lib_data(bmain, tselem->id);
                }
        }