Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-01-30 17:09:35 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-01-30 17:09:35 +0300
commitb86e5a9fbfc7b2b2bb1d80f800ac17f5c4fc1f8a (patch)
treedd27d2da8fe1a27b2a11959e2dd4e3216f389f5b
parent12bac207c7d31206dfca15088bc16587d639dddc (diff)
Fixed Pointer problem. Now materials are working.
-rw-r--r--source/blender/draw/DRW_engine.h4
-rw-r--r--source/blender/draw/engines/clay/clay.c24
-rw-r--r--source/blender/draw/intern/DRW_render.h4
-rw-r--r--source/blender/draw/intern/draw_manager.c6
-rw-r--r--source/blender/makesrna/intern/rna_scene.c10
5 files changed, 23 insertions, 25 deletions
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 93b5e69d4d0..05222574ae9 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 d084a3383b1..a5884129039 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 a486c10fe53..6d26f7b8b7e 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 683c0bd1786..45c8b911df1 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 604a7589802..b18fd6dcbbd 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);