Commit: 7ad48ff467e388bc5a7619c95ef1338613509483
Author: Dalai Felinto
Date:   Sat Mar 21 14:09:59 2015 +0100
Branches: multiview
https://developer.blender.org/rB7ad48ff467e388bc5a7619c95ef1338613509483

Merge remote-tracking branch 'origin/master' into multiview

Conflicts:
        source/blender/render/intern/source/external_engine.c

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



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

diff --cc source/blender/blenkernel/BKE_scene.h
index 292e365,c191f38..14c1a5f
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@@ -126,19 -125,16 +126,19 @@@ void BKE_scene_update_for_newframe_ex(s
  struct SceneRenderLayer *BKE_scene_add_render_layer(struct Scene *sce, const 
char *name);
  bool BKE_scene_remove_render_layer(struct Main *main, struct Scene *scene, 
struct SceneRenderLayer *srl);
  
 +struct SceneRenderView *BKE_scene_add_render_view(struct Scene *sce, const 
char *name);
 +bool BKE_scene_remove_render_view(struct Scene *scene, struct SceneRenderView 
*srv);
 +
  /* render profile */
- int get_render_subsurf_level(struct RenderData *r, int level);
- int get_render_child_particle_number(struct RenderData *r, int num);
- int get_render_shadow_samples(struct RenderData *r, int samples);
- float get_render_aosss_error(struct RenderData *r, float error);
+ int get_render_subsurf_level(const struct RenderData *r, int level);
+ int get_render_child_particle_number(const struct RenderData *r, int num);
+ int get_render_shadow_samples(const struct RenderData *r, int samples);
+ float get_render_aosss_error(const struct RenderData *r, float error);
  
- bool BKE_scene_use_new_shading_nodes(struct Scene *scene);
+ bool BKE_scene_use_new_shading_nodes(const struct Scene *scene);
  
- bool BKE_scene_uses_blender_internal(struct Scene *scene);
- bool BKE_scene_uses_blender_game(struct Scene *scene);
+ bool BKE_scene_uses_blender_internal(const struct Scene *scene);
+ bool BKE_scene_uses_blender_game(const struct Scene *scene);
  
  void BKE_scene_disable_color_management(struct Scene *scene);
  bool BKE_scene_check_color_management_enabled(const struct Scene *scene);
diff --cc source/blender/blenkernel/intern/scene.c
index 4fcb06c,c28d741..eed86e0
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@@ -1917,45 -1889,9 +1917,45 @@@ bool BKE_scene_remove_render_layer(Mai
        return true;
  }
  
 +/* return default view */
 +SceneRenderView *BKE_scene_add_render_view(Scene *sce, const char *name)
 +{
 +      SceneRenderView *srv;
 +
 +      if (!name)
 +              name = DATA_("RenderView");
 +
 +      srv = MEM_callocN(sizeof(SceneRenderView), "new render view");
 +      BLI_strncpy(srv->name, name, sizeof(srv->name));
 +      BLI_uniquename(&sce->r.views, srv, DATA_("RenderView"), '.', 
offsetof(SceneRenderView, name), sizeof(srv->name));
 +      BLI_addtail(&sce->r.views, srv);
 +
 +      return srv;
 +}
 +
 +bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
 +{
 +      const int act = BLI_findindex(&scene->r.views, srv);
 +
 +      if (act == -1) {
 +              return false;
 +      }
 +      else if (scene->r.views.first == scene->r.views.last) {
 +              /* ensure 1 view is kept */
 +              return false;
 +      }
 +
 +      BLI_remlink(&scene->r.views, srv);
 +      MEM_freeN(srv);
 +
 +      scene->r.actview = 0;
 +
 +      return true;
 +}
 +
  /* render simplification */
  
- int get_render_subsurf_level(RenderData *r, int lvl)
+ int get_render_subsurf_level(const RenderData *r, int lvl)
  {
        if (r->mode & R_SIMPLIFY)
                return min_ii(r->simplify_subsurf, lvl);
diff --cc source/blender/render/intern/source/external_engine.c
index d633478,653f3f0..45b0395
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@@ -369,31 -368,18 +369,37 @@@ void RE_engine_set_error_message(Render
        }
  }
  
 +void RE_engine_actview_set(RenderEngine *engine, const char *viewname)
 +{
 +      Render *re = engine->re;
 +      RE_SetActiveRenderView(re, viewname);
 +}
 +
 +float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera)
 +{
 +      Render *re = engine->re;
 +      return BKE_camera_multiview_shift_x(re ? &re->r : NULL, camera, 
re->viewname);
 +}
 +
 +void RE_engine_get_camera_model_matrix(RenderEngine *engine, Object *camera, 
float *r_modelmat)
 +{
 +      Render *re = engine->re;
 +      BKE_camera_multiview_model_matrix(re ? &re->r : NULL, camera, 
re->viewname, (float (*)[4])r_modelmat);
 +}
 +
 +
- void RE_engine_get_current_tiles(Render *re, int *total_tiles_r, rcti 
**tiles_r)
+ rcti* RE_engine_get_current_tiles(Render *re, int *total_tiles_r, bool 
*r_needs_free)
  {
+       static rcti tiles_static[BLENDER_MAX_THREADS];
+       const int allocation_step = BLENDER_MAX_THREADS;
        RenderPart *pa;
        int total_tiles = 0;
-       rcti *tiles = NULL;
-       int allocation_size = 0, allocation_step = BLENDER_MAX_THREADS;
+       rcti *tiles = tiles_static;
+       int allocation_size = BLENDER_MAX_THREADS;
+ 
+       BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_READ);
+ 
+       *r_needs_free = false;
  
        if (re->engine && (re->engine->flag & RE_ENGINE_HIGHLIGHT_TILES) == 0) {
                *total_tiles_r = 0;
diff --cc source/blender/render/intern/source/pipeline.c
index ec3caa6,b397db7..31324b1
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@@ -1358,10 -1256,23 +1360,11 @@@ static void threaded_tile_processor(Ren
        BLI_thread_queue_free(donequeue);
        BLI_thread_queue_free(workqueue);
        
 -      if (re->result->do_exr_tile) {
 -              BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 -              render_result_exr_file_end(re);
 -              BLI_rw_mutex_unlock(&re->resultmutex);
 -      }
 -
 -      if (re->r.scemode & R_EXR_CACHE_FILE) {
 -              BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 -              render_result_exr_file_cache_write(re);
 -              BLI_rw_mutex_unlock(&re->resultmutex);
 -      }
 -
        /* unset threadsafety */
        g_break = 0;
-       
+       BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_WRITE);
        RE_parts_free(re);
+       BLI_rw_mutex_unlock(&re->partsmutex);
        re->viewplane = viewplane; /* restore viewplane, modified by pano 
render */
  }

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

Reply via email to