[Bf-blender-cvs] [7e4b85820ea] temp-T97905-compositor-meta-data: Query the metadata from input nodes.

Jeroen Bakker noreply at git.blender.org
Wed May 11 16:50:34 CEST 2022


Commit: 7e4b85820ea8c0921fcac95562f092312f2e0133
Author: Jeroen Bakker
Date:   Wed May 11 16:50:26 2022 +0200
Branches: temp-T97905-compositor-meta-data
https://developer.blender.org/rB7e4b85820ea8c0921fcac95562f092312f2e0133

Query the metadata from input nodes.

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

M	source/blender/compositor/intern/COM_NodeOperation.h
M	source/blender/compositor/operations/COM_ReadBufferOperation.cc
M	source/blender/compositor/operations/COM_ReadBufferOperation.h

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

diff --git a/source/blender/compositor/intern/COM_NodeOperation.h b/source/blender/compositor/intern/COM_NodeOperation.h
index aa9e4329ab6..a297a21bb98 100644
--- a/source/blender/compositor/intern/COM_NodeOperation.h
+++ b/source/blender/compositor/intern/COM_NodeOperation.h
@@ -610,6 +610,25 @@ class NodeOperation {
    * The return parameter holds an instance or is an nullptr. */
   virtual std::unique_ptr<MetaData> get_meta_data()
   {
+    for (NodeOperationInput &input : inputs_) {
+      if (input.get_data_type() != DataType::Color) {
+        continue;
+      }
+      std::unique_ptr<MetaData> meta_data = input.get_reader()->get_meta_data();
+      if (meta_data.get()) {
+        return meta_data;
+      }
+    }
+    
+    for (NodeOperationInput &input : inputs_) {
+      if (input.get_data_type() == DataType::Color) {
+        continue;
+      }
+      std::unique_ptr<MetaData> meta_data = input.get_reader()->get_meta_data();
+      if (meta_data.get()) {
+        return meta_data;
+      }
+    }
     return std::unique_ptr<MetaData>();
   }
 
diff --git a/source/blender/compositor/operations/COM_ReadBufferOperation.cc b/source/blender/compositor/operations/COM_ReadBufferOperation.cc
index 81f046af1b9..b9356fc1c77 100644
--- a/source/blender/compositor/operations/COM_ReadBufferOperation.cc
+++ b/source/blender/compositor/operations/COM_ReadBufferOperation.cc
@@ -122,4 +122,9 @@ void ReadBufferOperation::update_memory_buffer()
   buffer_ = this->get_memory_proxy()->get_buffer();
 }
 
+std::unique_ptr<MetaData> ReadBufferOperation::get_meta_data()
+{
+  return get_memory_proxy()->get_write_buffer_operation()->get_meta_data();
+}
+
 }  // namespace blender::compositor
diff --git a/source/blender/compositor/operations/COM_ReadBufferOperation.h b/source/blender/compositor/operations/COM_ReadBufferOperation.h
index 54c363eff7a..4be6d234eed 100644
--- a/source/blender/compositor/operations/COM_ReadBufferOperation.h
+++ b/source/blender/compositor/operations/COM_ReadBufferOperation.h
@@ -57,6 +57,7 @@ class ReadBufferOperation : public NodeOperation {
   }
   void read_resolution_from_write_buffer();
   void update_memory_buffer();
+  std::unique_ptr<MetaData> get_meta_data() override;
 };
 
 }  // namespace blender::compositor



More information about the Bf-blender-cvs mailing list