Simplify dialog threading

master
stujones11 2018-09-09 18:07:27 +01:00
parent 224f2d0be1
commit 730f15058f
3 changed files with 21 additions and 18 deletions

View File

@ -24,6 +24,14 @@ namespace dialog
void showFileOpen(IGUIEnvironment *env, s32 id, const char *caption, void showFileOpen(IGUIEnvironment *env, s32 id, const char *caption,
const char **filters, const int filter_count) const char **filters, const int filter_count)
{
std::thread thread(fileOpen, env, id, caption, filters,
filter_count);
thread.detach();
}
void fileOpen(IGUIEnvironment *env, s32 id, const char *caption,
const char **filters, const int filter_count)
{ {
IGUIWindow *window = env->addWindow(rect<s32>(0,0,0,0), true); IGUIWindow *window = env->addWindow(rect<s32>(0,0,0,0), true);
window->setVisible(false); window->setVisible(false);
@ -554,10 +562,9 @@ bool TexturesDialog::OnEvent(const SEvent &event)
} }
if (texture_id) if (texture_id)
{ {
std::thread thread(dialog::showFileOpen, dialog::showFileOpen(Environment, texture_id,
Environment, texture_id, "Open Image File", "Open Image File", dialog::texture_filters,
dialog::texture_filters, dialog::texture_filter_count); dialog::texture_filter_count);
thread.detach();
} }
} }
} }

View File

@ -26,7 +26,10 @@ namespace dialog
extern bool has_event; extern bool has_event;
extern SEvent event; extern SEvent event;
void showFileOpen(IGUIEnvironment *env, s32 id, const char *caption, void showFileOpen(IGUIEnvironment *env, s32 id, const char *caption,
const char **filters, const int filter_count);
void fileOpen(IGUIEnvironment *env, s32 id, const char *caption,
const char **filters, const int filter_count); const char **filters, const int filter_count);
} }

View File

@ -1,5 +1,4 @@
#include <stdlib.h> #include <stdlib.h>
#include <thread>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <irrlicht.h> #include <irrlicht.h>
@ -161,21 +160,15 @@ bool Viewer::OnEvent(const SEvent &event)
switch (id) switch (id)
{ {
case E_GUI_ID_LOAD_MODEL_MESH: case E_GUI_ID_LOAD_MODEL_MESH:
{ dialog::showFileOpen(env, E_GUI_ID_LOAD_MODEL_MESH,
std::thread thread(dialog::showFileOpen, env, "Open main model file", dialog::model_filters,
E_GUI_ID_LOAD_MODEL_MESH, "Open main model file", dialog::model_filter_count);
dialog::model_filters, dialog::model_filter_count);
thread.detach();
break; break;
}
case E_GUI_ID_LOAD_WIELD_MESH: case E_GUI_ID_LOAD_WIELD_MESH:
{ dialog::showFileOpen(env, E_GUI_ID_LOAD_WIELD_MESH,
std::thread thread(dialog::showFileOpen, env, "Open wield model file", dialog::model_filters,
E_GUI_ID_LOAD_WIELD_MESH, "Open wield model file", dialog::model_filter_count);
dialog::model_filters, dialog::model_filter_count);
thread.detach();
break; break;
}
case E_GUI_ID_ENABLE_WIELD: case E_GUI_ID_ENABLE_WIELD:
{ {
ISceneNode *wield = scene->getNode(E_SCENE_ID_WIELD); ISceneNode *wield = scene->getNode(E_SCENE_ID_WIELD);