diff options
Diffstat (limited to 'source/blender')
5 files changed, 8 insertions, 16 deletions
diff --git a/source/blender/compositor/nodes/COM_CompositorNode.cpp b/source/blender/compositor/nodes/COM_CompositorNode.cpp index 8a84908f478..338741ebe79 100644 --- a/source/blender/compositor/nodes/COM_CompositorNode.cpp +++ b/source/blender/compositor/nodes/COM_CompositorNode.cpp @@ -31,11 +31,14 @@ CompositorNode::CompositorNode(bNode *editorNode) : Node(editorNode) void CompositorNode::convertToOperations(ExecutionSystem *graph, CompositorContext *context) { + bNode *editorNode = this->getbNode(); + InputSocket *imageSocket = this->getInputSocket(0); InputSocket *alphaSocket = this->getInputSocket(1); InputSocket *depthSocket = this->getInputSocket(2); CompositorOperation *compositorOperation = new CompositorOperation(); + compositorOperation->setScene((Scene *) editorNode->id); compositorOperation->setRenderData(context->getRenderData()); compositorOperation->setbNodeTree(context->getbNodeTree()); imageSocket->relinkConnections(compositorOperation->getInputSocket(0), 0, graph); diff --git a/source/blender/compositor/operations/COM_CompositorOperation.cpp b/source/blender/compositor/operations/COM_CompositorOperation.cpp index 57a4639ecba..600ee5e1d7e 100644 --- a/source/blender/compositor/operations/COM_CompositorOperation.cpp +++ b/source/blender/compositor/operations/COM_CompositorOperation.cpp @@ -68,8 +68,7 @@ void CompositorOperation::initExecution() void CompositorOperation::deinitExecution() { if (!isBreaked()) { - const RenderData *rd = this->m_rd; - Render *re = RE_GetRender_FromData(rd); + Render *re = RE_GetRender(this->m_scene->id.name); RenderResult *rr = RE_AcquireResultWrite(re); if (rr) { @@ -165,7 +164,7 @@ void CompositorOperation::determineResolution(unsigned int resolution[], unsigne // check actual render resolution with cropping it may differ with cropped border.rendering // FIX for: [31777] Border Crop gives black (easy) - Render *re = RE_GetRender_FromData(this->m_rd); + Render *re = RE_GetRender(this->m_scene->id.name); if (re) { RenderResult *rr = RE_AcquireResultRead(re); if (rr) { diff --git a/source/blender/compositor/operations/COM_CompositorOperation.h b/source/blender/compositor/operations/COM_CompositorOperation.h index 491fe3eb4e4..51a31105d5c 100644 --- a/source/blender/compositor/operations/COM_CompositorOperation.h +++ b/source/blender/compositor/operations/COM_CompositorOperation.h @@ -31,6 +31,8 @@ */ class CompositorOperation : public NodeOperation { private: + const Scene *m_scene; + /** * @brief local reference to the scene */ @@ -63,6 +65,7 @@ private: public: CompositorOperation(); void executeRegion(rcti *rect, unsigned int tileNumber); + void setScene(const Scene *scene) { this->m_scene = scene; } void setRenderData(const RenderData *rd) { this->m_rd = rd; } bool isOutputOperation(bool rendering) const { return true; } void initExecution(); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 8ca229c1a1b..d474dc14df8 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -153,7 +153,6 @@ typedef struct RenderStats { /* calling a new render with same name, frees automatic existing render */ struct Render *RE_NewRender (const char *name); struct Render *RE_GetRender(const char *name); -struct Render *RE_GetRender_FromData(const struct RenderData *rd); /* returns 1 while render is working (or renders called from within render) */ int RE_RenderInProgress(struct Render *re); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 77f75caa36a..ac4788465e5 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -245,18 +245,6 @@ Render *RE_GetRender(const char *name) return re; } -Render *RE_GetRender_FromData(const RenderData *rd) -{ - Render *re; - - /* search for existing renders */ - for (re = RenderGlobal.renderlist.first; re; re = re->next) - if (&re->r == rd) - break; - - return re; -} - /* if you want to know exactly what has been done */ RenderResult *RE_AcquireResultRead(Render *re) { |