| 67 | } |
| 68 | |
| 69 | void DestroyDeviceResources( Tr2ALMemoryTypes memoryTypes ) |
| 70 | { |
| 71 | CcpAutoMutex lock( GetAllResourcesMutex() ); |
| 72 | auto& allResources = GetAllResources(); |
| 73 | do |
| 74 | { |
| 75 | s_resourcesMutated = false; |
| 76 | for( auto resource : allResources ) |
| 77 | { |
| 78 | if( resource->IsResourceValid() && ( resource->GetResourceMemoryClass() & memoryTypes ) != 0 ) |
| 79 | { |
| 80 | resource->Destroy(); |
| 81 | } |
| 82 | if( s_resourcesMutated ) |
| 83 | { |
| 84 | // We can't trust the iterator anymore, so we need to break out of the loop and start over. |
| 85 | break; |
| 86 | } |
| 87 | } |
| 88 | } while( s_resourcesMutated ); |
| 89 | } |
no test coverage detected