| 81 | |
| 82 | |
| 83 | Result PreloadData(HFactory factory, const char* path, uint32_t offset, uint32_t size, FPreloadDataCallback cbk, void* cbk_ctx) |
| 84 | { |
| 85 | ResourceStreamJob* job = new ResourceStreamJob; |
| 86 | memset(job, 0, sizeof(*job)); |
| 87 | job->m_Callback = cbk; |
| 88 | job->m_CallbackCtx = cbk_ctx; |
| 89 | job->m_Offset = offset; |
| 90 | job->m_Size = size; |
| 91 | |
| 92 | char canonical_path[RESOURCE_PATH_MAX]; |
| 93 | dmResource::GetCanonicalPath(path, canonical_path, sizeof(canonical_path)); |
| 94 | |
| 95 | job->m_CanonicalPath = strdup(canonical_path); |
| 96 | job->m_Path = strdup(path); |
| 97 | |
| 98 | HJobContext job_context = dmResource::GetJobThread(factory); |
| 99 | assert(job_context != 0); |
| 100 | |
| 101 | Job threadjob = {0}; |
| 102 | threadjob.m_Process = JobProcess; |
| 103 | threadjob.m_Callback = JobCallback; |
| 104 | threadjob.m_Context = (void*) factory; |
| 105 | threadjob.m_Data = (void*) job; |
| 106 | |
| 107 | HJob hjob = JobSystemCreateJob(job_context, &threadjob); |
| 108 | JobSystemPushJob(job_context, hjob); |
| 109 | |
| 110 | return dmResource::RESULT_OK; |
| 111 | } |
| 112 | |
| 113 | } |