[Bf-blender-cvs] [eaada565910] master: Cleanup: add resource manager for cryptomatte session.

Jeroen Bakker noreply at git.blender.org
Tue Mar 9 15:19:30 CET 2021


Commit: eaada565910b4ff31081ced86c3b7242f2f28b4e
Author: Jeroen Bakker
Date:   Tue Mar 9 15:19:00 2021 +0100
Branches: master
https://developer.blender.org/rBeaada565910b4ff31081ced86c3b7242f2f28b4e

Cleanup: add resource manager for cryptomatte session.

Auto frees cryptomatte session when it the pointer is collected from the
stack.

Reviewed By: Jacques Lucke

Differential Revision: https://developer.blender.org/D10667

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

M	release/datafiles/locale
M	release/scripts/addons
M	source/blender/blenkernel/BKE_cryptomatte.hh
M	source/blender/blenkernel/intern/cryptomatte_test.cc
M	source/tools

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index aafea2abb18..b06e7fe345e 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit aafea2abb18bb42e7d31a6926b2caba90f4e0316
+Subproject commit b06e7fe345e4a313eb701692e5d45033131caee1
diff --git a/release/scripts/addons b/release/scripts/addons
index 117faa96af3..ef3104dae30 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 117faa96af35685d72e5e01f9a386d163d874133
+Subproject commit ef3104dae302dcfb08b21e32d10b548bf304bd29
diff --git a/source/blender/blenkernel/BKE_cryptomatte.hh b/source/blender/blenkernel/BKE_cryptomatte.hh
index f10b4c1f7c4..98fdfc965bc 100644
--- a/source/blender/blenkernel/BKE_cryptomatte.hh
+++ b/source/blender/blenkernel/BKE_cryptomatte.hh
@@ -29,6 +29,8 @@
 #include "BLI_map.hh"
 #include "BLI_string_ref.hh"
 
+#include "BKE_cryptomatte.h"
+
 struct ID;
 
 namespace blender::bke::cryptomatte {
@@ -103,4 +105,13 @@ struct CryptomatteStampDataCallbackData {
   static void extract_layer_manifest(void *_data, const char *propname, char *propvalue, int len);
 };
 
+struct CryptomatteSessionDeleter {
+  void operator()(CryptomatteSession *session)
+  {
+    BKE_cryptomatte_free(session);
+  }
+};
+
+using CryptomatteSessionPtr = std::unique_ptr<CryptomatteSession, CryptomatteSessionDeleter>;
+
 }  // namespace blender::bke::cryptomatte
diff --git a/source/blender/blenkernel/intern/cryptomatte_test.cc b/source/blender/blenkernel/intern/cryptomatte_test.cc
index d9be252d654..5c57c906ca2 100644
--- a/source/blender/blenkernel/intern/cryptomatte_test.cc
+++ b/source/blender/blenkernel/intern/cryptomatte_test.cc
@@ -157,8 +157,8 @@ TEST(cryptomatte, session_from_stamp_data)
   BKE_render_result_stamp_data(render_result, "cryptomatte/uiop/name", "layer2");
   BKE_render_result_stamp_data(
       render_result, "cryptomatte/uiop/manifest", "{\"Object2\":\"87654321\"}");
-  CryptomatteSession *session = BKE_cryptomatte_init_from_render_result(render_result);
-  EXPECT_NE(session, nullptr);
+  CryptomatteSessionPtr session(BKE_cryptomatte_init_from_render_result(render_result));
+  EXPECT_NE(session.get(), nullptr);
   RE_FreeRenderResult(render_result);
 
   /* Create StampData from CryptomatteSession. */
@@ -166,14 +166,13 @@ TEST(cryptomatte, session_from_stamp_data)
   BLI_strncpy(view_layer.name, "viewlayername", sizeof(view_layer.name));
   RenderResult *render_result2 = static_cast<RenderResult *>(
       MEM_callocN(sizeof(RenderResult), __func__));
-  BKE_cryptomatte_store_metadata(session, render_result2, &view_layer);
+  BKE_cryptomatte_store_metadata(session.get(), render_result2, &view_layer);
 
   /* Validate StampData. */
   BKE_stamp_info_callback(
       nullptr, render_result2->stamp_data, validate_cryptomatte_session_from_stamp_data, false);
 
   RE_FreeRenderResult(render_result2);
-  BKE_cryptomatte_free(session);
 }
 
 }  // namespace blender::bke::cryptomatte::tests
diff --git a/source/tools b/source/tools
index c37d8bd28dd..b66c22e1fb9 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit c37d8bd28ddddb8f1b0dff5739d75f8004e8034f
+Subproject commit b66c22e1fb977bf8dd3797ebedc28fbe28f0305e



More information about the Bf-blender-cvs mailing list