Cross-thread lambda functions fail on win32

This commit is contained in:
Matt Keeter 2014-03-21 17:30:54 -04:00
parent e67c043555
commit 41d81ccd8f
4 changed files with 24 additions and 4 deletions

View file

@ -41,6 +41,12 @@ void Canvas::set_status(const QString &s)
update(); update();
} }
void Canvas::clear_status()
{
status = "";
update();
}
void Canvas::initializeGL() void Canvas::initializeGL()
{ {
mesh_shader.addShaderFromSourceFile(QGLShader::Vertex, ":/gl/mesh.vert"); mesh_shader.addShaderFromSourceFile(QGLShader::Vertex, ":/gl/mesh.vert");

View file

@ -23,6 +23,7 @@ public:
public slots: public slots:
void set_status(const QString& s); void set_status(const QString& s);
void clear_status();
void load_mesh(Mesh* m); void load_mesh(Mesh* m);

View file

@ -69,6 +69,16 @@ void Window::on_about()
" style=\"color: #93a1a1;\">matt.j.keeter@gmail.com</a></p>"); " style=\"color: #93a1a1;\">matt.j.keeter@gmail.com</a></p>");
} }
void Window::enable_open()
{
open_action->setEnabled(true);
}
void Window::disable_open()
{
open_action->setEnabled(false);
}
bool Window::load_stl(const QString& filename) bool Window::load_stl(const QString& filename)
{ {
if (!open_action->isEnabled()) return false; if (!open_action->isEnabled()) return false;
@ -77,7 +87,7 @@ bool Window::load_stl(const QString& filename)
Loader* loader = new Loader(this, filename); Loader* loader = new Loader(this, filename);
connect(loader, &Loader::started, connect(loader, &Loader::started,
[=](){ open_action->setEnabled(false); }); this, &Window::disable_open);
connect(loader, &Loader::got_mesh, connect(loader, &Loader::got_mesh,
canvas, &Canvas::load_mesh); canvas, &Canvas::load_mesh);
@ -85,14 +95,14 @@ bool Window::load_stl(const QString& filename)
connect(loader, &Loader::finished, connect(loader, &Loader::finished,
loader, &Loader::deleteLater); loader, &Loader::deleteLater);
connect(loader, &Loader::finished, connect(loader, &Loader::finished,
[=](){ open_action->setEnabled(true); }); this, &Window::enable_open);
connect(loader, &Loader::finished, connect(loader, &Loader::finished,
[=](){ canvas->set_status(""); }); canvas, &Canvas::clear_status);
if (filename[0] != ':') if (filename[0] != ':')
{ {
connect(loader, &Loader::loaded_file, connect(loader, &Loader::loaded_file,
this, &Window::setWindowTitle); this, &Window::setWindowTitle);
} }
loader->start(); loader->start();

View file

@ -16,6 +16,9 @@ public slots:
void on_open(); void on_open();
void on_about(); void on_about();
void enable_open();
void disable_open();
private: private:
QAction* const open_action; QAction* const open_action;
QAction* const about_action; QAction* const about_action;