int loader_thread(void *loader) { ResourceLoader *resourceLoader = (ResourceLoader *) loader; IResourceManager *resourceManager = resourceLoader->getResourceManager(); LoadingJob *curJob; while (true) { // get a new job from the in list. curJob = resourceLoader->getJobIn(); // process the job switch (curJob->type) { case LOAD_JOB_MESH: // load a mesh curJob->data = resourceManager->readMeshData(curJob->ref->fileName, LOAD_NORMAL_VERTEX, 1.0); break; case LOAD_JOB_TEXTURE: // load a texture curJob->data = resourceManager->loadBMPImage(curJob->ref->fileName); break; default: cerr << "Unknown load job\n"; exit(1); break; } // put the finished job in the out list. resourceLoader->addJobOut(curJob); } return 0; }