Esempio n. 1
0
int PathTracerSplitted::ManagedRender(vector<Block*>* blockPool,
                                      int (*callBack) (const Block*)) {
    int result=1;
    while (!BlockManager::blockPool.empty()) {
        //SDL_mutexP(mutLock);
        Block* block = BlockManager::blockPool.back();
        BlockManager::blockPool.pop_back();
        //SDL_mutexV(mutLock);

        PathTracerSplitted::Render((void*)block);

        //Write Img using callback
        //SDL_mutexP(writerLock);
        int writerResult = callBack(block);
        //SDL_mutexV(mutLock);

        //printf("%d",block->OnFinCB);
        if(block->OnFinCB!=NULL)
            block->OnFinCB(block);

        delete block;
        result |= writerResult;
    }
    return result;
};