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 <j.bakker@atmind.nl>2012-06-21 21:58:12 +0400
committerJeroen Bakker <j.bakker@atmind.nl>2012-06-21 21:58:12 +0400
commit7a8d60ec7d89db838429985fd7793317c89cbf1c (patch)
tree29782c17ad84253521cd8b438ea182aabfbaf443
parentd406e274e0856ee7a3f1c2a161952d61b501adfe (diff)
* make it possible to composite without an compositor node [#31878]
Tiles Compositor: Fails without 'Compositor' output node. Regression.
-rw-r--r--source/blender/compositor/COM_compositor.h2
-rw-r--r--source/blender/compositor/intern/COM_ExecutionSystem.cpp28
-rw-r--r--source/blender/compositor/intern/COM_ExecutionSystem.h2
-rw-r--r--source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp10
-rw-r--r--source/blender/compositor/intern/COM_ExecutionSystemHelper.h2
-rw-r--r--source/blender/compositor/intern/COM_compositor.cpp19
-rw-r--r--source/blender/nodes/composite/node_composite_tree.c2
7 files changed, 32 insertions, 33 deletions
diff --git a/source/blender/compositor/COM_compositor.h b/source/blender/compositor/COM_compositor.h
index 4789fed2efd..4d8c83a5b2d 100644
--- a/source/blender/compositor/COM_compositor.h
+++ b/source/blender/compositor/COM_compositor.h
@@ -297,7 +297,7 @@ extern "C" {
* - output nodes can have different priorities in the WorkScheduler.
* This is implemented in the COM_execute function.
*/
-void COM_execute(bNodeTree *editingtree, int rendering);
+void COM_execute(RenderData* rd, bNodeTree *editingtree, int rendering);
#ifdef __cplusplus
}
diff --git a/source/blender/compositor/intern/COM_ExecutionSystem.cpp b/source/blender/compositor/intern/COM_ExecutionSystem.cpp
index b644f405f00..806f1db1bdf 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystem.cpp
+++ b/source/blender/compositor/intern/COM_ExecutionSystem.cpp
@@ -41,7 +41,7 @@
#include "BKE_global.h"
-ExecutionSystem::ExecutionSystem(bNodeTree *editingtree, bool rendering)
+ExecutionSystem::ExecutionSystem(Scene *scene, bNodeTree *editingtree, bool rendering)
{
context.setbNodeTree(editingtree);
bNode *gnode;
@@ -62,22 +62,18 @@ ExecutionSystem::ExecutionSystem(bNodeTree *editingtree, bool rendering)
context.setRendering(rendering);
context.setHasActiveOpenCLDevices(WorkScheduler::hasGPUDevices() && (editingtree->flag & NTREE_COM_OPENCL));
- Node *mainOutputNode = NULL;
+ ExecutionSystemHelper::addbNodeTree(*this, 0, editingtree, NULL);
- mainOutputNode = ExecutionSystemHelper::addbNodeTree(*this, 0, editingtree, NULL);
-
- if (mainOutputNode) {
- context.setScene((Scene *)mainOutputNode->getbNode()->id);
- this->convertToOperations();
- this->groupOperations(); /* group operations in ExecutionGroups */
- unsigned int index;
- unsigned int resolution[2];
- for (index = 0; index < this->groups.size(); index++) {
- resolution[0] = 0;
- resolution[1] = 0;
- ExecutionGroup *executionGroup = groups[index];
- executionGroup->determineResolution(resolution);
- }
+ context.setScene(scene);
+ this->convertToOperations();
+ this->groupOperations(); /* group operations in ExecutionGroups */
+ unsigned int index;
+ unsigned int resolution[2];
+ for (index = 0; index < this->groups.size(); index++) {
+ resolution[0] = 0;
+ resolution[1] = 0;
+ ExecutionGroup *executionGroup = groups[index];
+ executionGroup->determineResolution(resolution);
}
#ifdef COM_DEBUG
diff --git a/source/blender/compositor/intern/COM_ExecutionSystem.h b/source/blender/compositor/intern/COM_ExecutionSystem.h
index 70fd94ca57f..0cc9e3e6b4b 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystem.h
+++ b/source/blender/compositor/intern/COM_ExecutionSystem.h
@@ -156,7 +156,7 @@ public:
* @param editingtree [bNodeTree*]
* @param rendering [true false]
*/
- ExecutionSystem(bNodeTree *editingtree, bool rendering);
+ ExecutionSystem(Scene *scene, bNodeTree *editingtree, bool rendering);
/**
* Destructor
diff --git a/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp b/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
index b7d75732a84..e5376567077 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
+++ b/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
@@ -39,21 +39,17 @@
#include "COM_ReadBufferOperation.h"
#include "COM_ViewerBaseOperation.h"
-Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree *tree, bNode *groupnode)
+void ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree *tree, bNode *groupnode)
{
vector<Node *>& nodes = system.getNodes();
vector<SocketConnection *>& links = system.getConnections();
- Node *mainnode = NULL;
const bNode *activeGroupNode = system.getContext().getActivegNode();
bool isActiveGroup = activeGroupNode == groupnode;
/* add all nodes of the tree to the node list */
bNode *node = (bNode *)tree->nodes.first;
while (node != NULL) {
- Node *execnode = addNode(nodes, node, isActiveGroup);
- if (node->type == CMP_NODE_COMPOSITE) {
- mainnode = execnode;
- }
+ addNode(nodes, node, isActiveGroup);
node = (bNode *)node->next;
}
@@ -74,8 +70,6 @@ Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int nodes_sta
groupNode->ungroup(system);
}
}
-
- return mainnode;
}
void ExecutionSystemHelper::addNode(vector<Node *>& nodes, Node *node)
diff --git a/source/blender/compositor/intern/COM_ExecutionSystemHelper.h b/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
index 99a05472075..8dbd308153b 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
+++ b/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
@@ -48,7 +48,7 @@ public:
* @param tree bNodeTree to add
* @return Node representing the "Compositor node" of the maintree. or NULL when a subtree is added
*/
- static Node *addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree *tree, bNode *groupnode);
+ static void addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree *tree, bNode *groupnode);
/**
* @brief add an editor node to the system.
diff --git a/source/blender/compositor/intern/COM_compositor.cpp b/source/blender/compositor/intern/COM_compositor.cpp
index 2bbfd18e7c5..cfae8f5f481 100644
--- a/source/blender/compositor/intern/COM_compositor.cpp
+++ b/source/blender/compositor/intern/COM_compositor.cpp
@@ -25,6 +25,8 @@
extern "C" {
#include "BLI_threads.h"
}
+#include "BKE_main.h"
+#include "BKE_global.h"
#include "COM_compositor.h"
#include "COM_ExecutionSystem.h"
@@ -32,7 +34,7 @@ extern "C" {
#include "OCL_opencl.h"
static ThreadMutex *compositorMutex;
-void COM_execute(bNodeTree *editingtree, int rendering)
+void COM_execute(RenderData *rd, bNodeTree *editingtree, int rendering)
{
if (compositorMutex == NULL) { /// TODO: move to blender startup phase
compositorMutex = new ThreadMutex();
@@ -41,7 +43,7 @@ void COM_execute(bNodeTree *editingtree, int rendering)
WorkScheduler::initialize(); ///TODO: call workscheduler.deinitialize somewhere
}
BLI_mutex_lock(compositorMutex);
- if (editingtree->test_break && editingtree->test_break(editingtree->tbh)) {
+ if (editingtree->test_break(editingtree->tbh)) {
// during editing multiple calls to this method can be triggered.
// make sure one the last one will be doing the work.
BLI_mutex_unlock(compositorMutex);
@@ -49,13 +51,20 @@ void COM_execute(bNodeTree *editingtree, int rendering)
}
+
/* set progress bar to 0% and status to init compositing*/
editingtree->progress(editingtree->prh, 0.0);
/* initialize execution system */
- ExecutionSystem *system = new ExecutionSystem(editingtree, rendering);
- system->execute();
- delete system;
+ Scene *scene;
+ for (scene = (Scene*)G.main->scene.first; scene != NULL ; scene = (Scene*)scene->id.next) {
+ if (&scene->r == rd) {
+ ExecutionSystem *system = new ExecutionSystem(scene, editingtree, rendering);
+ system->execute();
+ delete system;
+ break;
+ }
+ }
BLI_mutex_unlock(compositorMutex);
}
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c
index 5813f4d479f..b716f19a697 100644
--- a/source/blender/nodes/composite/node_composite_tree.c
+++ b/source/blender/nodes/composite/node_composite_tree.c
@@ -683,7 +683,7 @@ void ntreeCompositExecTree(bNodeTree *ntree, RenderData *rd, int rendering, int
if (G.rt == 200)
ntreeCompositExecTreeOld(ntree, rd, do_preview);
else
- COM_execute(ntree, rendering);
+ COM_execute(rd, ntree, rendering);
}
/* *********************************************** */