Revision: 48624
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48624
Author:   jbakker
Date:     2012-07-05 06:34:31 +0000 (Thu, 05 Jul 2012)
Log Message:
-----------
Moved highlight code to the workscheduler.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h

Modified: trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp        
2012-07-05 04:47:47 UTC (rev 48623)
+++ trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp        
2012-07-05 06:34:31 UTC (rev 48624)
@@ -30,6 +30,7 @@
 #include "COM_OpenCLDevice.h"
 #include "COM_OpenCLKernels.cl.h"
 #include "OCL_opencl.h"
+#include "COM_WriteBufferOperation.h"
 
 #include "PIL_time.h"
 #include "BLI_threads.h"
@@ -65,6 +66,25 @@
 #endif
 #endif
 
+#define HIGHLIGHT(wp) \
+{ \
+       ExecutionGroup* group = wp->getExecutionGroup(); \
+       if (group->isComplex()) { \
+               NodeOperation* operation = group->getOutputNodeOperation(); \
+               if (operation->isWriteBufferOperation()) {\
+                       WriteBufferOperation *writeOperation = 
(WriteBufferOperation*)operation;\
+                       NodeOperation *complexOperation = 
writeOperation->getInput(); \
+                       bNode *node = complexOperation->getbNode(); \
+                       if (node) { \
+                               if (node->original) { \
+                                       node->original->highlight = 1;\
+                               } else {\
+                                       node->highlight = 1; \
+                               }\
+                       } \
+               } \
+       } \
+}
 
 #if COM_CURRENT_THREADING_MODEL == COM_TM_QUEUE
 void *WorkScheduler::thread_execute_cpu(void *data)
@@ -73,6 +93,7 @@
        WorkPackage *work;
        
        while ((work = (WorkPackage *)BLI_thread_queue_pop(g_cpuqueue))) {
+               HIGHLIGHT(work);
                device->execute(work);
                delete work;
        }
@@ -86,6 +107,7 @@
        WorkPackage *work;
        
        while ((work = (WorkPackage *)BLI_thread_queue_pop(g_gpuqueue))) {
+               HIGHLIGHT(work);
                device->execute(work);
                delete work;
        }

Modified: 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
===================================================================
--- 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp 
    2012-07-05 04:47:47 UTC (rev 48623)
+++ 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp 
    2012-07-05 06:34:31 UTC (rev 48624)
@@ -63,9 +63,6 @@
        MemoryBuffer *memoryBuffer = this->m_memoryProxy->getBuffer();
        float *buffer = memoryBuffer->getBuffer();
        if (this->m_input->isComplex()) {
-               bNode* bnode = this->m_input->getbNode();
-               if (bnode && bnode->original) bnode->original->highlight++;
-
                void *data = this->m_input->initializeTileData(rect, 
memoryBuffers);
                int x1 = rect->xmin;
                int y1 = rect->ymin;
@@ -90,7 +87,6 @@
                        this->m_input->deinitializeTileData(rect, 
memoryBuffers, data);
                        data = NULL;
                }
-               if (bnode && bnode->original) bnode->original->highlight++;
        }
        else {
                int x1 = rect->xmin;
@@ -143,8 +139,6 @@
        list<cl_mem> *clMemToCleanUp = new list<cl_mem>();
        clMemToCleanUp->push_back(clOutputBuffer);
        list<cl_kernel> *clKernelsToCleanUp = new list<cl_kernel>();
-       bNode* bnode = this->m_input->getbNode();
-       if (bnode && bnode->original) bnode->original->highlight++;
 
        this->m_input->executeOpenCL(device, outputBuffer, clOutputBuffer, 
inputMemoryBuffers, clMemToCleanUp, clKernelsToCleanUp);
 
@@ -163,10 +157,7 @@
        
        this->getMemoryProxy()->getBuffer()->copyContentFrom(outputBuffer);
 
-       if (bnode && bnode->original) bnode->original->highlight++;
        // STEP 4
-
-       
        while (clMemToCleanUp->size() > 0) {
                cl_mem mem = clMemToCleanUp->front();
                error = clReleaseMemObject(mem);

Modified: 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h
===================================================================
--- 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h   
    2012-07-05 04:47:47 UTC (rev 48623)
+++ 
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h   
    2012-07-05 06:34:31 UTC (rev 48624)
@@ -46,6 +46,9 @@
        void deinitExecution();
        void executeOpenCLRegion(OpenCLDevice* device, rcti *rect, unsigned int 
chunkNumber, MemoryBuffer **memoryBuffers, MemoryBuffer *outputBuffer);
        void readResolutionFromInputSocket();
+       inline NodeOperation *getInput() {
+               return m_input;
+       }
 
 };
 #endif

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to