switch( status )
{
- case CompleteStatusManager::COMPLETE:
- {
- ready = true;
- mFinishedResourceAcquisition = true;
- }
- break;
-
case CompleteStatusManager::NOT_READY:
{
ready = false;
+
+ if( mBitmapMetadata.GetIsFramebuffer() )
+ {
+ ready = true;
+ }
mFinishedResourceAcquisition = false;
FollowTracker( mTextureId );
}
break;
+ case CompleteStatusManager::COMPLETE:
+ {
+ ready = true;
+ mFinishedResourceAcquisition = true;
+ }
+ break;
+
case CompleteStatusManager::NEVER:
{
ready = false;
if( completeStatusManager.FindResourceTracker(id) != NULL )
{
- mTrackedResources.PushBack( id );
+ bool found = false;
+ std::size_t numTrackedResources = mTrackedResources.Count();
+ for( size_t i=0; i < numTrackedResources; ++i )
+ {
+ if(mTrackedResources[i] == id)
+ {
+ found = true;
+ break;
+ }
+ }
+ if( ! found )
+ {
+ mTrackedResources.PushBack( id );
+ }
}
else
{
void RenderableAttachment::GetReadyAndComplete(bool& ready, bool& complete) const
{
- ready = false;
+ ready = mResourcesReady;
complete = false;
CompleteStatusManager& completeStatusManager = mSceneController->GetCompleteStatusManager();
std::size_t numTrackedResources = mTrackedResources.Count();
if( mHasUntrackedResources || numTrackedResources == 0 )
{
- ready = mResourcesReady;
complete = mFinishedResourceAcquisition;
}
else
{
// If there are tracked resources and no untracked resources, test the trackers
- ready = true;
+ bool trackersComplete = true;
for( size_t i=0; i < numTrackedResources; ++i )
{
- ResourceTracker* tracker = completeStatusManager.FindResourceTracker(mTrackedResources[i]);
- if( tracker && ! tracker->IsComplete() )
+ ResourceId id = mTrackedResources[i];
+ ResourceTracker* tracker = completeStatusManager.FindResourceTracker(id);
+ if( tracker && ! tracker->IsComplete() )
{
- ready = false;
+ trackersComplete = false;
break;
}
}
- complete = mFinishedResourceAcquisition;
- if( ! complete )
- {
- complete = ready;
- }
+ complete = mFinishedResourceAcquisition || trackersComplete;
}
}