Merge branch 'master' into blender2.8
[blender.git] / source / blender / blenkernel / intern / object_dupli.c
index 73e7041..57cdfde 100644 (file)
@@ -540,7 +540,7 @@ static const DupliGenerator gen_dupli_verts = {
 };
 
 /* OB_DUPLIVERTS - FONT */
-static Object *find_family_object(const char *family, size_t family_len, unsigned int ch, GHash *family_gh)
+static Object *find_family_object(Main *bmain, const char *family, size_t family_len, unsigned int ch, GHash *family_gh)
 {
        Object **ob_pt;
        Object *ob;
@@ -557,7 +557,7 @@ static Object *find_family_object(const char *family, size_t family_len, unsigne
                ch_utf8[ch_utf8_len] = '\0';
                ch_utf8_len += 1;  /* compare with null terminator */
 
-               for (ob = G.main->object.first; ob; ob = ob->id.next) {
+               for (ob = bmain->object.first; ob; ob = ob->id.next) {
                        if (STREQLEN(ob->id.name + 2 + family_len, ch_utf8, ch_utf8_len)) {
                                if (STREQLEN(ob->id.name + 2, family, family_len)) {
                                        break;
@@ -593,7 +593,7 @@ static void make_duplis_font(const DupliContext *ctx)
 
        /* in par the family name is stored, use this to find the other objects */
 
-       BKE_vfont_to_curve_ex(G.main, par, par->data, FO_DUPLI, NULL,
+       BKE_vfont_to_curve_ex(par, par->data, FO_DUPLI, NULL,
                              &text, &text_len, &text_free, &chartransdata);
 
        if (text == NULL || chartransdata == NULL) {
@@ -614,7 +614,9 @@ static void make_duplis_font(const DupliContext *ctx)
        /* advance matching BLI_strncpy_wchar_from_utf8 */
        for (a = 0; a < text_len; a++, ct++) {
 
-               ob = find_family_object(cu->family, family_len, (unsigned int)text[a], family_gh);
+               /* XXX That G.main is *really* ugly, but not sure what to do here...
+                * Definitively don't think it would be safe to put back Main *bmain pointer in DupliContext as done in 2.7x? */
+               ob = find_family_object(G.main, cu->family, family_len, (unsigned int)text[a], family_gh);
                if (ob) {
                        vec[0] = fsize * (ct->xof - xof);
                        vec[1] = fsize * (ct->yof - yof);