Commit: 915b63c95f0c80f86308cc13cbf1bb177b14c34c
Author: Antonioya
Date:   Fri Jul 13 20:12:04 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB915b63c95f0c80f86308cc13cbf1bb177b14c34c

WIP: Define a new preview blend file for grease pencil

The blend file is only a copy of old file. Put only as placeholder.

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

A       release/datafiles/preview_grease_pencil.blend
M       source/blender/editors/datafiles/CMakeLists.txt
M       source/blender/editors/include/ED_datafiles.h
M       source/blender/editors/render/render_preview.c

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

diff --git a/release/datafiles/preview_grease_pencil.blend 
b/release/datafiles/preview_grease_pencil.blend
new file mode 100644
index 00000000000..80b136745b0
Binary files /dev/null and b/release/datafiles/preview_grease_pencil.blend 
differ
diff --git a/source/blender/editors/datafiles/CMakeLists.txt 
b/source/blender/editors/datafiles/CMakeLists.txt
index 55623dd2d05..998df42c3cb 100644
--- a/source/blender/editors/datafiles/CMakeLists.txt
+++ b/source/blender/editors/datafiles/CMakeLists.txt
@@ -638,6 +638,7 @@ if(WITH_BLENDER)
                # blends
                data_to_c_simple(../../../../release/datafiles/preview.blend 
SRC)
                
data_to_c_simple(../../../../release/datafiles/preview_cycles.blend SRC)
+               
data_to_c_simple(../../../../release/datafiles/preview_grease_pencil.blend SRC)
 
                # images
                data_to_c_simple(../../../../release/datafiles/splash.png SRC)
diff --git a/source/blender/editors/include/ED_datafiles.h 
b/source/blender/editors/include/ED_datafiles.h
index 475ceccbcc2..333e3d72615 100644
--- a/source/blender/editors/include/ED_datafiles.h
+++ b/source/blender/editors/include/ED_datafiles.h
@@ -42,6 +42,9 @@ extern char datatoc_preview_blend[];
 extern int datatoc_preview_cycles_blend_size;
 extern char datatoc_preview_cycles_blend[];
 
+extern int datatoc_preview_grease_pencil_blend_size;
+extern char datatoc_preview_grease_pencil_blend[];
+
 extern int datatoc_blender_icons16_png_size;
 extern char datatoc_blender_icons16_png[];
 
diff --git a/source/blender/editors/render/render_preview.c 
b/source/blender/editors/render/render_preview.c
index 04632838cf3..4a30012b4a9 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -197,6 +197,7 @@ typedef struct IconPreview {
 
 static Main *G_pr_main = NULL;
 static Main *G_pr_main_cycles = NULL;
+static Main *G_pr_main_grease_pencil = NULL;
 
 #ifndef WITH_HEADLESS
 static Main *load_main_from_memory(const void *blend, int blend_size)
@@ -226,6 +227,7 @@ void ED_preview_ensure_dbase(void)
        if (!base_initialized) {
                G_pr_main = load_main_from_memory(datatoc_preview_blend, 
datatoc_preview_blend_size);
                G_pr_main_cycles = 
load_main_from_memory(datatoc_preview_cycles_blend, 
datatoc_preview_cycles_blend_size);
+               G_pr_main_grease_pencil = 
load_main_from_memory(datatoc_preview_grease_pencil_blend, 
datatoc_preview_grease_pencil_blend_size);
                base_initialized = true;
        }
 #endif
@@ -244,6 +246,9 @@ void ED_preview_free_dbase(void)
 
        if (G_pr_main_cycles)
                BKE_main_free(G_pr_main_cycles);
+
+       if (G_pr_main_grease_pencil)
+               BKE_main_free(G_pr_main_grease_pencil);
 }
 
 static Scene *preview_get_scene(Main *pr_main)
@@ -1075,6 +1080,7 @@ static void icon_preview_startjob_all_sizes(void 
*customdata, short *stop, short
                sp->pr_rect = cur_size->rect;
                sp->id = ip->id;
                sp->bmain = ip->bmain;
+               Material *ma = NULL;
 
                if (is_render) {
                        BLI_assert(ip->id);
@@ -1082,10 +1088,22 @@ static void icon_preview_startjob_all_sizes(void 
*customdata, short *stop, short
                         * so don't even think of using cycle's bmain for
                         * texture icons
                         */
-                       if (GS(ip->id->name) != ID_TE)
-                               sp->pr_main = G_pr_main_cycles;
-                       else
+                       if (GS(ip->id->name) != ID_TE) {
+                               /* grease pencil use its own preview file */
+                               if (GS(ip->id->name) == ID_MA) {
+                                       ma = (Material *)ip->id;
+                               }
+
+                               if ((ma == NULL) || (ma->gp_style == NULL)) {
+                                       sp->pr_main = G_pr_main_cycles;
+                               }
+                               else {
+                                       sp->pr_main = G_pr_main_grease_pencil;
+                               }
+                       }
+                       else {
                                sp->pr_main = G_pr_main;
+                       }
                }
 
                common_preview_startjob(sp, stop, do_update, progress);

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

Reply via email to