X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Ffilethread.cpp;h=1f5a5aab51223e50e6d11af57d6a4f6b4c8d3214;hb=b54bb3c04ba861123e44b7f25fbc859d78627379;hp=3d53f92b8dd4a02b85a08e7673e224a0d85a6a56;hpb=3e68f33188872d5754d3765ff140811bcb696c6f;p=virtualjaguar diff --git a/src/gui/filethread.cpp b/src/gui/filethread.cpp index 3d53f92..1f5a5aa 100644 --- a/src/gui/filethread.cpp +++ b/src/gui/filethread.cpp @@ -13,9 +13,10 @@ #include "filethread.h" +#include #include "crc32.h" #include "settings.h" -#include "types.h" +//#include "types.h" struct RomIdentifier { @@ -120,7 +121,7 @@ FileThread::~FileThread() wait(); } -FileThread::Go(QListWidget * lw) +void FileThread::Go(QListWidget * lw) { QMutexLocker locker(&mutex); this->listWidget = lw; @@ -129,11 +130,6 @@ FileThread::Go(QListWidget * lw) void FileThread::run(void) { -// mutex.lock(); -// if (abort) -// return; -// mutex.unlock(); - QDir romDir(vjs.ROMPath); QFileInfoList list = romDir.entryInfoList(); @@ -143,9 +139,6 @@ void FileThread::run(void) return; QFileInfo fileInfo = list.at(i); -// std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10) -// .arg(fileInfo.fileName())); -// std::cout << std::endl; QFile file(romDir.filePath(fileInfo.fileName())); uint8 * buffer = new uint8[fileInfo.size()]; @@ -156,19 +149,31 @@ void FileThread::run(void) file.close(); //printf("FilePickerWindow: File crc == %08X...\n", crc); - for(int j=0; romList[j].crc32 != 0xFFFFFFFF; j++) + uint32 index = FindCRCIndexInFileList(crc); + + if (index != 0xFFFFFFFF) { - if (romList[j].crc32 == crc) - { -printf("FilePickerWindow: Found match [%s]...\n", romList[j].name); - new QListWidgetItem(QIcon(":/res/generic.png"), romList[j].name, listWidget); - break; - } +printf("FileThread: Found match [%s]...\n", romList[index].name); + new QListWidgetItem(QIcon(":/res/generic.png"), romList[index].name, listWidget); +// break; } } delete[] buffer; } +} + +// +// Find a CRC in the ROM list. If it's there, return the index, otherwise return $FFFFFFFF +// +uint32 FileThread::FindCRCIndexInFileList(uint32 crc) +{ + for(int i=0; romList[i].crc32!=0xFFFFFFFF; i++) + { + if (romList[i].crc32 == crc) + return i; + } + return 0xFFFFFFFF; }