@@ -227,6 +227,8 @@ LLModelPreview::~LLModelPreview()
227
227
}
228
228
mBaseModel .clear ();
229
229
mBaseScene .clear ();
230
+
231
+ LLLoadedCallbackEntry::cleanUpCallbackList (&mCallbackTextureList );
230
232
}
231
233
232
234
void LLModelPreview::updateDimentionsAndOffsets ()
@@ -553,7 +555,7 @@ void LLModelPreview::rebuildUploadData()
553
555
{
554
556
// in case user provided a missing file later
555
557
texture->setIsMissingAsset (false );
556
- texture->setLoadedCallback (LLModelPreview::textureLoadedCallback, 0 , true , false , this , NULL , false );
558
+ texture->setLoadedCallback (LLModelPreview::textureLoadedCallback, 0 , true , false , this , & mCallbackTextureList , false );
557
559
texture->forceToSaveRawImage (0 , F32_MAX);
558
560
texture->updateFetch ();
559
561
if (mModelLoader )
@@ -3130,8 +3132,6 @@ LLJoint* LLModelPreview::lookupJointByName(const std::string& str, void* opaque)
3130
3132
3131
3133
U32 LLModelPreview::loadTextures (LLImportMaterial& material, void * opaque)
3132
3134
{
3133
- (void )opaque;
3134
-
3135
3135
if (material.mDiffuseMapFilename .size ())
3136
3136
{
3137
3137
material.mOpaqueData = new LLPointer< LLViewerFetchedTexture >;
@@ -3145,7 +3145,8 @@ U32 LLModelPreview::loadTextures(LLImportMaterial& material, void* opaque)
3145
3145
}
3146
3146
// Todo: might cause a crash if preview gets closed before we get the callback.
3147
3147
// Use a callback list or guard callback in some way
3148
- tex->setLoadedCallback (LLModelPreview::textureLoadedCallback, 0 , true , false , opaque, NULL , false );
3148
+ LLModelPreview* preview = (LLModelPreview*)opaque;
3149
+ tex->setLoadedCallback (LLModelPreview::textureLoadedCallback, 0 , true , false , opaque, &preview->mCallbackTextureList , false );
3149
3150
tex->forceToSaveRawImage (0 , F32_MAX);
3150
3151
material.setDiffuseMap (tex->getID ()); // record tex ID
3151
3152
return 1 ;
0 commit comments