Commit: 2aa87cdf679a4c8ac8c573789c1829442257820c
Author: Joshua Leung
Date:   Sun Oct 29 23:52:00 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB2aa87cdf679a4c8ac8c573789c1829442257820c

Make BKE_gpencil_data_addnew() accept Main as an argument instead of using 
G.main

===================================================================

M       source/blender/blenkernel/BKE_gpencil.h
M       source/blender/blenkernel/intern/gpencil.c
M       source/blender/editors/gpencil/gpencil_data.c
M       source/blender/editors/gpencil/gpencil_paint.c
M       source/blender/editors/object/object_add.c
M       source/blender/editors/space_view3d/view3d_ruler.c
M       source/blender/makesrna/intern/rna_main_api.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_gpencil.h 
b/source/blender/blenkernel/BKE_gpencil.h
index 77cbecb12eb..ec95e20bb9f 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -81,7 +81,7 @@ void BKE_gpencil_stroke_sync_selection(struct bGPDstroke 
*gps);
 struct bGPDframe *BKE_gpencil_frame_addnew(struct bGPDlayer *gpl, int cframe);
 struct bGPDframe *BKE_gpencil_frame_addcopy(struct bGPDlayer *gpl, int cframe);
 struct bGPDlayer *BKE_gpencil_layer_addnew(struct bGPdata *gpd, const char 
*name, bool setactive);
-struct bGPdata   *BKE_gpencil_data_addnew(const char name[]);
+struct bGPdata   *BKE_gpencil_data_addnew(struct Main *bmain, const char 
name[]);
 
 struct bGPDframe *BKE_gpencil_frame_duplicate(const struct bGPDframe *gpf_src);
 struct bGPDframe *BKE_gpencil_frame_color_duplicate(const struct bContext *C, 
const struct bGPDframe *gpf_src);
diff --git a/source/blender/blenkernel/intern/gpencil.c 
b/source/blender/blenkernel/intern/gpencil.c
index 5eb806baf4d..9d2a21a29b4 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -728,12 +728,12 @@ bGPDbrush *BKE_gpencil_brush_addnew(ToolSettings *ts, 
const char *name, bool set
 }
 
 /* add a new gp-datablock */
-bGPdata *BKE_gpencil_data_addnew(const char name[])
+bGPdata *BKE_gpencil_data_addnew(Main *bmain, const char name[])
 {
        bGPdata *gpd;
        
        /* allocate memory for a new block */
-       gpd = BKE_libblock_alloc(G.main, ID_GD, name, 0);
+       gpd = BKE_libblock_alloc(bmain, ID_GD, name, 0);
        
        /* initial settings */
        gpd->flag = (GP_DATA_DISPINFO | GP_DATA_EXPAND);
diff --git a/source/blender/editors/gpencil/gpencil_data.c 
b/source/blender/editors/gpencil/gpencil_data.c
index bf7c4c7febf..c1619ae22a7 100644
--- a/source/blender/editors/gpencil/gpencil_data.c
+++ b/source/blender/editors/gpencil/gpencil_data.c
@@ -96,10 +96,12 @@ static int gp_data_add_exec(bContext *C, wmOperator *op)
        }
        else {
                /* decrement user count and add new datablock */
+               /* TODO: if a datablock exists, we should make a copy of it 
instead of starting fresh (as in other areas) */
+               Main *bmain = CTX_data_main(C);
                bGPdata *gpd = (*gpd_ptr);
                
-               id_us_min(&gpd->id);
-               *gpd_ptr = BKE_gpencil_data_addnew(DATA_("GPencil"));
+               id_us_min((ID *)gpd);
+               *gpd_ptr = BKE_gpencil_data_addnew(bmain, DATA_("GPencil"));
 
                /* add default sets of colors and brushes */
                ED_gpencil_add_defaults(C);
@@ -188,8 +190,9 @@ static int gp_layer_add_exec(bContext *C, wmOperator *op)
                BKE_report(op->reports, RPT_ERROR, "Nowhere for grease pencil 
data to go");
                return OPERATOR_CANCELLED;
        }
-       if (*gpd_ptr == NULL)
-               *gpd_ptr = BKE_gpencil_data_addnew(DATA_("GPencil"));
+       if (*gpd_ptr == NULL) {
+               *gpd_ptr = BKE_gpencil_data_addnew(CTX_data_main(C), 
DATA_("GPencil"));
+       }
        
        /* add default sets of colors and brushes */
        ED_gpencil_add_defaults(C);
@@ -1591,14 +1594,9 @@ void GPENCIL_OT_sculpt_select(wmOperatorType *ot)
 
 static int gp_convert_old_palettes_poll(bContext *C)
 {
-       /* TODO: need better poll*/
+       /* TODO: need better poll */
        Main *bmain = CTX_data_main(C);
-       if (bmain->gpencil.first) {
-               return true;
-       }
-       else { 
-               return false; 
-       }
+       return bmain->gpencil.first != NULL;
 }
 
 /* convert old animation data to new format */
diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index 1562f2e0855..67da2408991 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1555,7 +1555,7 @@ static bool gp_session_initdata(bContext *C, tGPsdata *p)
        else {
                /* if no existing GPencil block exists, add one */
                if (*gpd_ptr == NULL)
-                       *gpd_ptr = BKE_gpencil_data_addnew("GPencil");
+                       *gpd_ptr = BKE_gpencil_data_addnew(CTX_data_main(C), 
"GPencil");
                p->gpd = *gpd_ptr;
        }
        
diff --git a/source/blender/editors/object/object_add.c 
b/source/blender/editors/object/object_add.c
index b0736104635..cd0dc51838b 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1015,7 +1015,8 @@ static int object_gpencil_add_exec(bContext *C, 
wmOperator *op)
        ToolSettings *ts = CTX_data_tool_settings(C);
        ts->gpencil_src = GP_TOOL_SOURCE_OBJECT;
        /* add a grease pencil datablock */     
-       ob->data = BKE_gpencil_data_addnew("GPencil");
+       // XXX: This initialisation should be handled when initialising the 
object...
+       ob->data = BKE_gpencil_data_addnew(CTX_data_main(C), DATA_("GPencil"));
        
        /* if type is monkey, create a 2D Suzanne */
        // TODO: create with offset to cursor?
diff --git a/source/blender/editors/space_view3d/view3d_ruler.c 
b/source/blender/editors/space_view3d/view3d_ruler.c
index 7150765f187..5163297a936 100644
--- a/source/blender/editors/space_view3d/view3d_ruler.c
+++ b/source/blender/editors/space_view3d/view3d_ruler.c
@@ -39,6 +39,7 @@
 #include "BLT_translation.h"
 
 #include "BKE_context.h"
+#include "BKE_main.h"
 #include "BKE_unit.h"
 #include "BKE_gpencil.h"
 #include "BKE_paint.h"
@@ -298,6 +299,7 @@ static void ruler_state_set(bContext *C, RulerInfo 
*ruler_info, int state)
 static bool view3d_ruler_to_gpencil(bContext *C, RulerInfo *ruler_info)
 {
        Scene *scene = CTX_data_scene(C);
+       Main *bmain = CTX_data_main(C);
        bGPDlayer *gpl;
        bGPDframe *gpf;
        bGPDstroke *gps;
@@ -308,8 +310,9 @@ static bool view3d_ruler_to_gpencil(bContext *C, RulerInfo 
*ruler_info)
        const char *ruler_name = RULER_ID;
        bool changed = false;
 
+       /* FIXME: This needs to be reviewed. Should it keep being done like 
this? */
        if (scene->gpd == NULL) {
-               scene->gpd = BKE_gpencil_data_addnew("GPencil");
+               scene->gpd = BKE_gpencil_data_addnew(bmain, "Ruler GPencil");
        }
 
        gpl = BLI_findstring(&scene->gpd->layers, ruler_name, 
offsetof(bGPDlayer, info));
@@ -320,7 +323,7 @@ static bool view3d_ruler_to_gpencil(bContext *C, RulerInfo 
*ruler_info)
        }
 
        /* try to get active palette or create a new one */
-       palslot  = BKE_gpencil_paletteslot_validate(CTX_data_main(C), 
scene->gpd);
+       palslot  = BKE_gpencil_paletteslot_validate(bmain, scene->gpd);
        palette  = palslot->palette;
        
        /* try to get color with the ruler name or create a new one */
diff --git a/source/blender/makesrna/intern/rna_main_api.c 
b/source/blender/makesrna/intern/rna_main_api.c
index 52b953549ba..f27b1b84555 100644
--- a/source/blender/makesrna/intern/rna_main_api.c
+++ b/source/blender/makesrna/intern/rna_main_api.c
@@ -1802,7 +1802,6 @@ void RNA_def_main_gpencil(BlenderRNA *brna, PropertyRNA 
*cprop)
        RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
 
        func = RNA_def_function(srna, "new", "BKE_gpencil_data_addnew");
-       RNA_def_function_flag(func, FUNC_NO_SELF);
        parm = RNA_def_string(func, "name", "GreasePencil", 0, "", "New name 
for the data-block");
        RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
        /* return type */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to