Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / source / blender / blenkernel / intern / material.c
index 12d92d5..190df04 100644 (file)
@@ -294,16 +294,15 @@ void make_local_material(Material *ma)
                */
        
        if(ma->id.lib==NULL) return;
-
-       /* One local user; set flag and return. */
        if(ma->id.us==1) {
-               id_clear_lib_data(&bmain->mat, (ID *)ma);
+               ma->id.lib= NULL;
+               ma->id.flag= LIB_LOCAL;
+
+               new_id(&bmain->mat, (ID *)ma, NULL);
                extern_local_material(ma);
                return;
        }
-
-       /* Check which other IDs reference this one to determine if it's used by
-          lib or local */
+       
        /* test objects */
        ob= bmain->object.first;
        while(ob) {
@@ -356,13 +355,14 @@ void make_local_material(Material *ma)
                }
                mb= mb->id.next;
        }
-
-       /* Only local users. */
+       
        if(local && lib==0) {
-               id_clear_lib_data(&bmain->mat, (ID *)ma);
+               ma->id.lib= NULL;
+               ma->id.flag= LIB_LOCAL;
+
+               new_id(&bmain->mat, (ID *)ma, NULL);
                extern_local_material(ma);
        }
-       /* Both user and local, so copy. */
        else if(local && lib) {
                
                man= copy_material(ma);