Commit: b86e5a9fbfc7b2b2bb1d80f800ac17f5c4fc1f8a
Author: Clément Foucault
Date:   Mon Jan 30 15:09:35 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBb86e5a9fbfc7b2b2bb1d80f800ac17f5c4fc1f8a

Fixed Pointer problem. Now materials are working.

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

M       source/blender/draw/DRW_engine.h
M       source/blender/draw/engines/clay/clay.c
M       source/blender/draw/intern/DRW_render.h
M       source/blender/draw/intern/draw_manager.c
M       source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 93b5e69d4d..05222574ae 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -39,7 +39,7 @@ void DRW_engines_free(void);
 void DRW_pass_free(struct DRWPass *pass);
 
 /* Settings */
-void *DRW_material_settings_get(struct Material *ma, const char *engine_name, 
void **runtime);
-void *DRW_render_settings_get(struct Scene *scene, const char *engine_name, 
void **runtime);
+void *DRW_material_settings_get(struct Material *ma, const char *engine_name, 
void ***runtime);
+void *DRW_render_settings_get(struct Scene *scene, const char *engine_name, 
void ***runtime);
 
 #endif /* __DRW_ENGINE_H__ */
\ No newline at end of file
diff --git a/source/blender/draw/engines/clay/clay.c 
b/source/blender/draw/engines/clay/clay.c
index d084a3383b..a588412903 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -487,19 +487,19 @@ static void update_ubo_storage(MaterialRuntimeClay 
*runtime, unsigned int curren
 static void CLAY_update_material_ubo(const struct bContext *C)
 {
        Main *bmain = CTX_data_main(C);
-       MaterialRuntimeClay *runtime;
+       MaterialRuntimeClay **runtime;
 
        /* Update Default materials */
        for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
                /* Using render settings as material settings */
-               MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, 
RE_engine_id_BLENDER_CLAY, (void **)&runtime);
-               CLAY_update_material_runtime(res, &runtime);
+               MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, 
RE_engine_id_BLENDER_CLAY, (void ***)&runtime);
+               CLAY_update_material_runtime(res, runtime);
        }
 
        /* Update Scene Materials */
        for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) {
-               MaterialEngineSettingsClay *mesc = 
DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
-               CLAY_update_material_runtime(mesc, &runtime);
+               MaterialEngineSettingsClay *mesc = 
DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void ***)&runtime);
+               CLAY_update_material_runtime(mesc, runtime);
        }
 
        if (data.ubo_flag & CLAY_UBO_REFRESH) {
@@ -507,15 +507,15 @@ static void CLAY_update_material_ubo(const struct 
bContext *C)
 
                /* Default materials */
                for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
-                       DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, 
(void **)&runtime);
-                       update_ubo_storage(runtime, current_id);
+                       DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, 
(void ***)&runtime);
+                       update_ubo_storage(*runtime, current_id);
                        current_id++;
                }
 
                /* TODO only add materials linked to geometry */
                for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) 
{
-                       DRW_material_settings_get(mat, 
RE_engine_id_BLENDER_CLAY, (void **)&runtime);
-                       update_ubo_storage(runtime, current_id);
+                       DRW_material_settings_get(mat, 
RE_engine_id_BLENDER_CLAY, (void ***)&runtime);
+                       update_ubo_storage(*runtime, current_id);
                        current_id++;
                }
 
@@ -540,12 +540,12 @@ static void CLAY_create_cache(CLAY_PassList *passes, 
const struct bContext *C)
 
        /* Clay Pass */
        {
-               MaterialRuntimeClay *runtime;
-               DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void 
**)&runtime);
+               MaterialRuntimeClay **runtime;
+               DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void 
***)&runtime);
 
                passes->clay_pass = DRW_pass_create("Clay Pass", 
DRW_STATE_WRITE_COLOR);
 
-               default_shgrp = CLAY_shgroup_create(passes->clay_pass, 
&runtime->material_id);
+               default_shgrp = CLAY_shgroup_create(passes->clay_pass, 
&(*runtime)->material_id);
                DRW_shgroup_uniform_block(default_shgrp, "material_block", 
data.mat_ubo, 0);
        }
 
diff --git a/source/blender/draw/intern/DRW_render.h 
b/source/blender/draw/intern/DRW_render.h
index a486c10fe5..6d26f7b8b7 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -200,8 +200,8 @@ bool DRW_viewport_cache_is_dirty(void);
 
 /* Settings */
 #ifndef __DRW_ENGINE_H__
-void *DRW_material_settings_get(Material *ma, const char *engine_name, void 
**runtime);
-void *DRW_render_settings_get(Scene *scene, const char *engine_name, void 
**runtime);
+void *DRW_material_settings_get(Material *ma, const char *engine_name, void 
***runtime);
+void *DRW_render_settings_get(Scene *scene, const char *engine_name, void 
***runtime);
 #endif /* __DRW_ENGINE_H__ */
 
 /* Draw commands */
diff --git a/source/blender/draw/intern/draw_manager.c 
b/source/blender/draw/intern/draw_manager.c
index 683c0bd178..45c8b911df 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -849,7 +849,7 @@ void DRW_state_reset(void)
 
 /* ****************************************** Settings 
******************************************/
 
-void *DRW_material_settings_get(Material *ma, const char *engine_name, void 
**runtime)
+void *DRW_material_settings_get(Material *ma, const char *engine_name, void 
***runtime)
 {
        MaterialEngineSettings *ms = NULL;
 
@@ -881,7 +881,7 @@ void *DRW_material_settings_get(Material *ma, const char 
*engine_name, void **ru
 }
 
 /* If scene is NULL, use context scene */
-void *DRW_render_settings_get(Scene *scene, const char *engine_name, void 
**runtime)
+void *DRW_render_settings_get(Scene *scene, const char *engine_name, void 
***runtime)
 {
        RenderEngineSettings *rs = NULL;
 
@@ -905,8 +905,6 @@ void *DRW_render_settings_get(Scene *scene, const char 
*engine_name, void **runt
                        BLI_assert(false);
                }
 
-               printf("DRW_render_settings_get %s\n", rs->name);
-
                BLI_addtail(&scene->engines_settings, rs);
        }
 
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 604a758980..b18fd6dcbb 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1901,13 +1901,13 @@ static PointerRNA 
rna_RenderEngineSettings_active_get(PointerRNA *ptr)
 static void rna_RenderEngineSettings_update(Main *UNUSED(bmain), Scene 
*UNUSED(scene), PointerRNA *ptr)
 {
        Scene *sce = (Scene *)ptr->id.data;
-       void *runtime;
+       void **runtime;
 
-       DRW_render_settings_get(sce, sce->r.engine, &runtime);
+       DRW_render_settings_get(sce, sce->r.engine, (void ***)&runtime);
 
-       if (runtime) {
-               MEM_freeN(runtime);
-               runtime = NULL;
+       if (*runtime) {
+               MEM_freeN(*runtime);
+               *runtime = NULL;
        }
 
        WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, NULL);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to