Make qtplug compile again.

develop
Petr Mrázek 2011-09-27 00:11:13 +02:00
parent a83d9fa944
commit 5d54bfca96
2 changed files with 15 additions and 14 deletions

@ -7,12 +7,13 @@ if(QT4_FOUND AND OPENGL_FOUND AND OPENGL_GLU_FOUND)
set( QT_USE_QTOPENGL TRUE ) set( QT_USE_QTOPENGL TRUE )
INCLUDE( ${QT_USE_FILE} ) INCLUDE( ${QT_USE_FILE} )
include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} "${dfhack_SOURCE_DIR}/library/depends/tthread")
set ( qtplug_SRCS set ( qtplug_SRCS
qtplug.cpp qtplug.cpp
blankslade.cpp blankslade.cpp
glwidget.cpp glwidget.cpp
${dfhack_SOURCE_DIR}/library/depends/tthread/tinythread.cpp
) )
SET ( qtplug_UI SET ( qtplug_UI

@ -12,15 +12,16 @@
#include <QtGui/QApplication> #include <QtGui/QApplication>
#include "blankslade.h" #include "blankslade.h"
#include "tinythread.h"
using std::vector; using std::vector;
using std::string; using std::string;
using std::stack; using std::stack;
using namespace DFHack; using namespace DFHack;
static int runnable(void *); static void runnable(void *);
static SDL::Mutex * instance_mutex = 0; static tthread::mutex * instance_mutex = 0;
static bool running = false; static bool running = false;
static SDL::Thread * QTThread; static tthread::thread * QTThread;
DFhackCExport command_result runqt (Core * c, vector <string> & parameters); DFhackCExport command_result runqt (Core * c, vector <string> & parameters);
@ -31,7 +32,7 @@ DFhackCExport const char * plugin_name ( void )
DFhackCExport command_result plugin_init ( Core * c, std::vector <PluginCommand> &commands) DFhackCExport command_result plugin_init ( Core * c, std::vector <PluginCommand> &commands)
{ {
instance_mutex = SDL_CreateMutex(); instance_mutex = new tthread::mutex();
commands.clear(); commands.clear();
commands.push_back(PluginCommand("runqt","Open an interactive Qt gui.",runqt)); commands.push_back(PluginCommand("runqt","Open an interactive Qt gui.",runqt));
return CR_OK; return CR_OK;
@ -44,29 +45,28 @@ DFhackCExport command_result plugin_shutdown ( Core * c )
DFhackCExport command_result runqt (Core * c, vector <string> & parameters) DFhackCExport command_result runqt (Core * c, vector <string> & parameters)
{ {
SDL_mutexP(instance_mutex); instance_mutex->lock();
if(!running) if(!running)
{ {
running = true; running = true;
QTThread = SDL_CreateThread(runnable, 0); QTThread = new tthread::thread(runnable, 0);
} }
else else
{ {
c->con.printerr("The Qt test plugin is already running!\n"); c->con.printerr("The Qt test plugin is already running!\n");
} }
SDL_mutexV(instance_mutex); instance_mutex->unlock();
return CR_OK; return CR_OK;
} }
static int runnable(void *) static void runnable(void *)
{ {
int zero = 0; int zero = 0;
QApplication app(zero, 0); QApplication app(zero, 0);
blankslade appGui; blankslade appGui;
appGui.show(); appGui.show();
int ret = app.exec(); app.exec();
SDL_mutexP(instance_mutex); instance_mutex->lock();
running = false; running = false;
SDL_mutexV(instance_mutex); instance_mutex->unlock();
return ret;
} }