s32 cdvdRefreshData() { char *diskTypeName = "Unknown"; //read TOC from device cdvdParseTOC(); if ((etrack == 0) || (strack > etrack)) { curDiskType = CDVD_TYPE_NODISC; } else { s32 mt = cdvdGetMediaType(); if (mt < 0) curDiskType = CDVD_TYPE_DETCTCD; else if (mt == 0) curDiskType = CDVD_TYPE_DETCTDVDS; else curDiskType = CDVD_TYPE_DETCTDVDD; } curTrayStatus = CDVD_TRAY_CLOSE; switch (curDiskType) { case CDVD_TYPE_DETCTDVDD: diskTypeName = "Double-Layer DVD"; break; case CDVD_TYPE_DETCTDVDS: diskTypeName = "Single-Layer DVD"; break; case CDVD_TYPE_DETCTCD: diskTypeName = "CD-ROM"; break; case CDVD_TYPE_NODISC: diskTypeName = "No Disc"; break; } printf(" * CDVD: Disk Type: %s\n", diskTypeName); cdvdCacheReset(); return 0; }
s32 cdvdStartThread() { InitializeCriticalSection( &CacheMutex ); hNotify = CreateEvent(NULL,FALSE,FALSE,NULL); if(hNotify==INVALID_HANDLE_VALUE) return -1; hRequestComplete = CreateEvent(NULL,FALSE,FALSE,NULL); if(hRequestComplete==INVALID_HANDLE_VALUE) return -1; cdvd_is_open=true; hThread = CreateThread(NULL,0,cdvdThread,NULL,0,&pidThread); if(hThread==INVALID_HANDLE_VALUE) return -1; SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL); cdvdCacheReset(); return 0; }