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:
authorJeroen Bakker <jbakker>2021-03-09 17:19:00 +0300
committerJeroen Bakker <jeroen@blender.org>2021-03-09 17:19:12 +0300
commiteaada565910b4ff31081ced86c3b7242f2f28b4e (patch)
tree1b976dbc8b51f9c39bfb15894fc0b03686efc201
parentcdb0b3cedc9b242b75affadf0a0a33959320ab77 (diff)
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/locale0
m---------release/scripts/addons0
-rw-r--r--source/blender/blenkernel/BKE_cryptomatte.hh11
-rw-r--r--source/blender/blenkernel/intern/cryptomatte_test.cc7
m---------source/tools0
5 files changed, 14 insertions, 4 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale
-Subproject aafea2abb18bb42e7d31a6926b2caba90f4e031
+Subproject b06e7fe345e4a313eb701692e5d45033131caee
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 117faa96af35685d72e5e01f9a386d163d87413
+Subproject ef3104dae302dcfb08b21e32d10b548bf304bd2
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
-Subproject c37d8bd28ddddb8f1b0dff5739d75f8004e8034
+Subproject b66c22e1fb977bf8dd3797ebedc28fbe28f0305