From b54bb3c04ba861123e44b7f25fbc859d78627379 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Fri, 29 Jan 2010 22:00:24 +0000 Subject: [PATCH] Minor tweaks to ROM discovery threading, beginnings of new config window --- Makefile | 5 +++-- src/gui/configwin.cpp | 15 +++++++++++++++ src/gui/configwin.h | 13 +++++++++++++ src/gui/filepicker.cpp | 15 +++++++++------ src/gui/filepicker.h | 2 ++ src/gui/filethread.cpp | 39 ++++++++++++++++++++++----------------- src/gui/filethread.h | 10 ++++++++-- src/gui/vj.pro | 4 ++++ 8 files changed, 76 insertions(+), 27 deletions(-) create mode 100644 src/gui/configwin.cpp create mode 100644 src/gui/configwin.h diff --git a/Makefile b/Makefile index 9b52935..2c3d82e 100644 --- a/Makefile +++ b/Makefile @@ -74,6 +74,7 @@ OBJS = \ \ obj/about.o \ obj/app.o \ + obj/configwin.o \ obj/filepicker.o \ obj/filethread.o \ obj/mainwin.o \ @@ -193,13 +194,13 @@ src/gui/Makefile: src/gui/vj-gui.pro src/gui/vj-gui.qrc # ../../obj/mainwin.o \ # ../../obj/moc_mainwin.o \ # ../../obj/qrc_vj-gui.o -QT_CFLAGS = `pkg-config --cflags QtGui` +QT_CFLAGS = -MMD `pkg-config --cflags QtGui` # !!! THESE DEFINES ARE PLATFORM DEPENDENT !!! #QT_DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED QT_DEFINES = -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED #QT_INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I./src/gui -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I./obj QT_INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I./src -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I./obj -QT_CXXFLAGS = -pipe -O2 -march=pentium-m -pipe -D_REENTRANT -Wall -W $(QT_DEFINES) -D$(SYSTYPE) +QT_CXXFLAGS = -MMD -pipe -O2 -march=pentium-m -pipe -D_REENTRANT -Wall -W $(QT_DEFINES) -D$(SYSTYPE) obj/moc_%.cpp: src/gui/%.h @echo -e "\033[01;33m***\033[00;32m Creating $@...\033[00m" diff --git a/src/gui/configwin.cpp b/src/gui/configwin.cpp new file mode 100644 index 0000000..484e03b --- /dev/null +++ b/src/gui/configwin.cpp @@ -0,0 +1,15 @@ +// +// configwin.cpp - Configuration window +// +// by James L. Hammons +// (C) 2010 Underground Software +// +// JLH = James L. Hammons +// +// Who When What +// --- ---------- ------------------------------------------------------------- +// JLH 01/29/2010 Created this file +// + +#include "configwin.h" + diff --git a/src/gui/configwin.h b/src/gui/configwin.h new file mode 100644 index 0000000..4f09095 --- /dev/null +++ b/src/gui/configwin.h @@ -0,0 +1,13 @@ +// +// configwin.h - Configuration window +// +// by James L. Hammons +// (C) 2010 Underground Software +// + +#ifndef __CONFIGWIN_H__ +#define __CONFIGWIN_H__ + + + +#endif // __CONFIGWIN_H__ diff --git a/src/gui/filepicker.cpp b/src/gui/filepicker.cpp index 9146bdf..13cc4d1 100644 --- a/src/gui/filepicker.cpp +++ b/src/gui/filepicker.cpp @@ -14,6 +14,7 @@ #include "filepicker.h" #include "crc32.h" +#include "filethread.h" #include "settings.h" #include "types.h" @@ -24,7 +25,7 @@ struct RomIdentifier const char file[128]; }; -RomIdentifier romList[] = { +RomIdentifier romList2[] = { { 0x0509C85E, "Raiden (World)", "" }, { 0x08F15576, "Iron Soldier (World) (v1.04)", "" }, { 0x0957A072, "Kasumi Ninja (World)", "" }, @@ -120,7 +121,9 @@ FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt: layout->addWidget(fileList); - PopulateList(); +// PopulateList(); + fileThread = new FileThread(this); + fileThread->Go(fileList); } void FilePickerWindow::PopulateList(void) @@ -144,12 +147,12 @@ void FilePickerWindow::PopulateList(void) file.close(); //printf("FilePickerWindow: File crc == %08X...\n", crc); - for(int j=0; romList[j].crc32 != 0xFFFFFFFF; j++) + for(int j=0; romList2[j].crc32 != 0xFFFFFFFF; j++) { - if (romList[j].crc32 == crc) + if (romList2[j].crc32 == crc) { -printf("FilePickerWindow: Found match [%s]...\n", romList[j].name); - new QListWidgetItem(QIcon(":/res/generic.png"), romList[j].name, fileList); +printf("FilePickerWindow: Found match [%s]...\n", romList2[j].name); + new QListWidgetItem(QIcon(":/res/generic.png"), romList2[j].name, fileList); break; } } diff --git a/src/gui/filepicker.h b/src/gui/filepicker.h index e886e3b..2978248 100644 --- a/src/gui/filepicker.h +++ b/src/gui/filepicker.h @@ -6,6 +6,7 @@ // Forward declarations class QListWidget; +class FileThread; class FilePickerWindow: public QWidget { @@ -17,4 +18,5 @@ class FilePickerWindow: public QWidget private: QListWidget * fileList; + FileThread * fileThread; }; 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; } diff --git a/src/gui/filethread.h b/src/gui/filethread.h index 8873976..aec0038 100644 --- a/src/gui/filethread.h +++ b/src/gui/filethread.h @@ -2,10 +2,11 @@ // filethread.h: File discovery thread class definition // -#ifndef // __FILETHREAD_H__ -#define // __FILETHREAD_H__ +#ifndef __FILETHREAD_H__ +#define __FILETHREAD_H__ #include +#include "types.h" // Forward declarations class QListWidget; @@ -15,6 +16,11 @@ class FileThread: public QThread public: FileThread(QObject * parent = 0); ~FileThread(); + void Go(QListWidget * lw); + + protected: + void run(void); + uint32 FindCRCIndexInFileList(uint32); private: QListWidget * listWidget; diff --git a/src/gui/vj.pro b/src/gui/vj.pro index ae383ed..5f1551f 100644 --- a/src/gui/vj.pro +++ b/src/gui/vj.pro @@ -11,12 +11,16 @@ HEADERS += mainwin.h HEADERS += glwidget.h HEADERS += about.h HEADERS += filepicker.h +HEADERS += filethread.h +HEADERS += configwin.h SOURCES += app.cpp SOURCES += mainwin.cpp SOURCES += glwidget.cpp SOURCES += about.cpp SOURCES += filepicker.cpp +SOURCES += filethread.cpp +SOURCES += configwin.cpp RESOURCES += vj.qrc -- 2.37.2