Changeset 8606

Show
Ignore:
Timestamp:
07/16/08 15:23:58
Author:
robert
Message:

Moved the _textureObjectBuffer assignment to after the imagery has been download to avoid crashes under multi-threaded compile of texture objects (was causing a crash with 3D Textures, but is something that would happen with other Texture types as well.)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • OpenSceneGraph/trunk/src/osg/Texture1D.cpp

    r7648 r8606  
    151151 
    152152        // we don't have a applyTexImage1D_subload yet so can't reuse.. so just generate a new texture object.         
    153         _textureObjectBuffer[contextID] = textureObject = generateTextureObject(contextID,GL_TEXTURE_1D); 
     153        textureObject = generateTextureObject(contextID,GL_TEXTURE_1D); 
    154154 
    155155        textureObject->bind(); 
     
    163163        // update the modified count to show that it is upto date. 
    164164        getModifiedCount(contextID) = _image->getModifiedCount(); 
     165     
     166        _textureObjectBuffer[contextID] = textureObject; 
    165167     
    166168        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded() && _image->getDataVariance()==STATIC) 
  • OpenSceneGraph/trunk/src/osg/Texture2D.cpp

    r8373 r8606  
    185185         
    186186         
    187         _textureObjectBuffer[contextID] = textureObject = generateTextureObject( 
     187        textureObject = generateTextureObject( 
    188188                contextID,GL_TEXTURE_2D,_numMipmapLevels,_internalFormat,_textureWidth,_textureHeight,1,0); 
    189189         
     
    211211        getModifiedCount(contextID) = image->getModifiedCount(); 
    212212 
     213        _textureObjectBuffer[contextID] = textureObject; 
    213214 
    214215        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded() && image->getDataVariance()==STATIC) 
  • OpenSceneGraph/trunk/src/osg/Texture2DArray.cpp

    r8356 r8606  
    243243 
    244244        // create texture object 
    245         _textureObjectBuffer[contextID] = textureObject = generateTextureObject( 
     245        textureObject = generateTextureObject( 
    246246                contextID,GL_TEXTURE_2D_ARRAY_EXT,_numMipmapLevels,_internalFormat,_textureWidth,_textureHeight,_textureDepth,0); 
    247247         
     
    272272        textureObject->setAllocated(_numMipmapLevels,_internalFormat,_textureWidth,_textureHeight,_textureDepth,0); 
    273273 
     274        _textureObjectBuffer[contextID] = textureObject; 
     275         
    274276        // no idea what this for ;-) 
    275277        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded()) 
  • OpenSceneGraph/trunk/src/osg/Texture3D.cpp

    r8273 r8606  
    232232        computeRequiredTextureDimensions(state,*_image,_textureWidth, _textureHeight, _textureDepth,_numMipmapLevels); 
    233233 
    234         _textureObjectBuffer[contextID] = textureObject = generateTextureObject(contextID,GL_TEXTURE_3D); 
     234        textureObject = generateTextureObject(contextID,GL_TEXTURE_3D); 
    235235 
    236236        textureObject->bind(); 
     
    245245        // update the modified count to show that it is upto date. 
    246246        getModifiedCount(contextID) = _image->getModifiedCount(); 
     247 
     248        _textureObjectBuffer[contextID] = textureObject; 
    247249 
    248250        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded() && _image->getDataVariance()==STATIC) 
  • OpenSceneGraph/trunk/src/osg/TextureCubeMap.cpp

    r8373 r8606  
    228228        } 
    229229 
    230         _textureObjectBuffer[contextID] = textureObject = generateTextureObject( 
     230        textureObject = generateTextureObject( 
    231231                contextID,GL_TEXTURE_CUBE_MAP,_numMipmapLevels,_internalFormat,_textureWidth,_textureHeight,1,0); 
    232232         
     
    253253 
    254254        } 
     255 
     256        _textureObjectBuffer[contextID] = textureObject; 
    255257 
    256258        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded()) 
  • OpenSceneGraph/trunk/src/osg/TextureRectangle.cpp

    r8195 r8606  
    198198 
    199199        // we don't have a applyTexImage1D_subload yet so can't reuse.. so just generate a new texture object.         
    200         _textureObjectBuffer[contextID] = textureObject = generateTextureObject(contextID,GL_TEXTURE_RECTANGLE); 
     200        textureObject = generateTextureObject(contextID,GL_TEXTURE_RECTANGLE); 
    201201         
    202202        textureObject->bind(); 
     
    207207 
    208208        textureObject->setAllocated(1,_internalFormat,_textureWidth,_textureHeight,1,0); 
     209         
     210        _textureObjectBuffer[contextID] = textureObject; 
    209211 
    210212        if (_unrefImageDataAfterApply && areAllTextureObjectsLoaded() && _image->getDataVariance()==STATIC)