Lines Matching refs:frt
47 SDLOSXCAGuard* (*GetGuard)(struct S_FileReaderThread *frt);
48 void (*AddReader)(struct S_FileReaderThread *frt);
49 …void (*RemoveReader)(struct S_FileReaderThread *frt, AudioFileManager* inIt…
50 …int (*TryNextRead)(struct S_FileReaderThread *frt, AudioFileManager* inIte…
64 void (*ReadNextChunk)(struct S_FileReaderThread *frt);
65 int (*StartFixedPriorityThread)(struct S_FileReaderThread *frt);
73 static SDLOSXCAGuard* FileReaderThread_GetGuard(FileReaderThread *frt) in FileReaderThread_GetGuard() argument
75 return frt->mGuard; in FileReaderThread_GetGuard()
79 static int FileReaderThread_TryNextRead (FileReaderThread *frt, AudioFileManager* inItem) in FileReaderThread_TryNextRead() argument
83 if (frt->mGuard->Try(frt->mGuard, &didLock)) in FileReaderThread_TryNextRead()
87 FileData *i = frt->mFileData; in FileReaderThread_TryNextRead()
96 frt->mFileData = newfd; in FileReaderThread_TryNextRead()
100 frt->mGuard->Notify(frt->mGuard); in FileReaderThread_TryNextRead()
104 frt->mGuard->Unlock(frt->mGuard); in FileReaderThread_TryNextRead()
110 static void FileReaderThread_AddReader(FileReaderThread *frt) in FileReaderThread_AddReader() argument
112 if (frt->mNumReaders == 0) in FileReaderThread_AddReader()
114 frt->mThreadShouldDie = 0; in FileReaderThread_AddReader()
115 frt->StartFixedPriorityThread (frt); in FileReaderThread_AddReader()
117 frt->mNumReaders++; in FileReaderThread_AddReader()
120 static void FileReaderThread_RemoveReader (FileReaderThread *frt, AudioFileManager* inItem) in FileReaderThread_RemoveReader() argument
122 if (frt->mNumReaders > 0) in FileReaderThread_RemoveReader()
124 int bNeedsRelease = frt->mGuard->Lock(frt->mGuard); in FileReaderThread_RemoveReader()
127 FileData *i = frt->mFileData; in FileReaderThread_RemoveReader()
137 frt->mFileData = next; in FileReaderThread_RemoveReader()
145 if (--frt->mNumReaders == 0) { in FileReaderThread_RemoveReader()
146 frt->mThreadShouldDie = 1; in FileReaderThread_RemoveReader()
147 frt->mGuard->Notify(frt->mGuard); /* wake up thread so it will quit */ in FileReaderThread_RemoveReader()
148 frt->mGuard->Wait(frt->mGuard); /* wait for thread to die */ in FileReaderThread_RemoveReader()
151 if (bNeedsRelease) frt->mGuard->Unlock(frt->mGuard); in FileReaderThread_RemoveReader()
155 static int FileReaderThread_StartFixedPriorityThread (FileReaderThread *frt) in FileReaderThread_StartFixedPriorityThread() argument
166 result = pthread_create (&pThread, &theThreadAttrs, frt->DiskReaderEntry, frt); in FileReaderThread_StartFixedPriorityThread()
184 relativePriority = frt->mThreadPriority - frt->GetThreadBasePriority(pthread_self()); in FileReaderThread_StartFixedPriorityThread()
236 FileReaderThread *frt = (FileReaderThread *)inRefCon; in FileReaderThread_DiskReaderEntry() local
237 frt->ReadNextChunk(frt); in FileReaderThread_DiskReaderEntry()
245 static void FileReaderThread_ReadNextChunk (FileReaderThread *frt) in FileReaderThread_ReadNextChunk() argument
254 int bNeedsRelease = frt->mGuard->Lock(frt->mGuard); in FileReaderThread_ReadNextChunk()
256 if (frt->mThreadShouldDie) { in FileReaderThread_ReadNextChunk()
257 frt->mGuard->Notify(frt->mGuard); in FileReaderThread_ReadNextChunk()
258 if (bNeedsRelease) frt->mGuard->Unlock(frt->mGuard); in FileReaderThread_ReadNextChunk()
263 if (frt->mFileData == NULL) in FileReaderThread_ReadNextChunk()
265 frt->mGuard->Wait(frt->mGuard); in FileReaderThread_ReadNextChunk()
269 if (frt->mThreadShouldDie) { in FileReaderThread_ReadNextChunk()
271 frt->mGuard->Notify(frt->mGuard); in FileReaderThread_ReadNextChunk()
272 if (bNeedsRelease) frt->mGuard->Unlock(frt->mGuard); in FileReaderThread_ReadNextChunk()
279 if (frt->mFileData != NULL) in FileReaderThread_ReadNextChunk()
281 FileData *next = frt->mFileData->next; in FileReaderThread_ReadNextChunk()
282 theItem = frt->mFileData->obj; in FileReaderThread_ReadNextChunk()
283 SDL_free(frt->mFileData); in FileReaderThread_ReadNextChunk()
284 frt->mFileData = next; in FileReaderThread_ReadNextChunk()
287 if (bNeedsRelease) frt->mGuard->Unlock(frt->mGuard); in FileReaderThread_ReadNextChunk()
329 void delete_FileReaderThread(FileReaderThread *frt) in delete_FileReaderThread() argument
331 if (frt != NULL) in delete_FileReaderThread()
333 delete_SDLOSXCAGuard(frt->mGuard); in delete_FileReaderThread()
334 SDL_free(frt); in delete_FileReaderThread()
340 FileReaderThread *frt = (FileReaderThread *) SDL_malloc(sizeof (FileReaderThread)); in new_FileReaderThread() local
341 if (frt == NULL) in new_FileReaderThread()
343 SDL_memset(frt, '\0', sizeof (*frt)); in new_FileReaderThread()
345 frt->mGuard = new_SDLOSXCAGuard(); in new_FileReaderThread()
346 if (frt->mGuard == NULL) in new_FileReaderThread()
348 SDL_free(frt); in new_FileReaderThread()
352 #define SET_FILEREADERTHREAD_METHOD(m) frt->m = FileReaderThread_##m in new_FileReaderThread()
363 frt->mThreadPriority = 62; in new_FileReaderThread()
364 return frt; in new_FileReaderThread()