summaryrefslogtreecommitdiffstats
path: root/src/gui/ThreadedLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/ThreadedLoader.cpp')
-rw-r--r--src/gui/ThreadedLoader.cpp82
1 files changed, 51 insertions, 31 deletions
diff --git a/src/gui/ThreadedLoader.cpp b/src/gui/ThreadedLoader.cpp
index 45ac4f7f..abbedbaf 100644
--- a/src/gui/ThreadedLoader.cpp
+++ b/src/gui/ThreadedLoader.cpp
@@ -18,24 +18,40 @@
#include "App.hpp"
-#include "ingen/Log.hpp"
-#include "ingen/Module.hpp"
-#include "ingen/World.hpp"
-#include "ingen/client/GraphModel.hpp"
+#include <ingen/FilePath.hpp>
+#include <ingen/Log.hpp>
+#include <ingen/Parser.hpp>
+#include <ingen/Properties.hpp>
+#include <ingen/Serialiser.hpp>
+#include <ingen/URI.hpp>
+#include <ingen/World.hpp>
+#include <ingen/client/GraphModel.hpp>
+#include <raul/Path.hpp>
+#include <raul/Semaphore.hpp>
+#include <raul/Symbol.hpp>
+
+#include <glibmm/ustring.h>
+#include <sigc++/adaptors/bind.h>
+#include <sigc++/adaptors/retype_return.h>
+#include <sigc++/functors/mem_fun.h>
#include <cassert>
+#include <filesystem>
+#include <memory>
+#include <optional>
#include <string>
-
-using boost::optional;
+#include <string_view>
+#include <utility>
namespace ingen {
+
+class Interface;
+
namespace gui {
-ThreadedLoader::ThreadedLoader(App& app, SPtr<Interface> engine)
+ThreadedLoader::ThreadedLoader(App& app, std::shared_ptr<Interface> engine)
: _app(app)
- , _sem(0)
, _engine(std::move(engine))
- , _exit_flag(false)
, _thread(&ThreadedLoader::run, this)
{
if (!parser()) {
@@ -52,7 +68,7 @@ ThreadedLoader::~ThreadedLoader()
}
}
-SPtr<Parser>
+std::shared_ptr<Parser>
ThreadedLoader::parser()
{
return _app.world().parser();
@@ -62,7 +78,7 @@ void
ThreadedLoader::run()
{
while (_sem.wait() && !_exit_flag) {
- std::lock_guard<std::mutex> lock(_mutex);
+ const std::lock_guard<std::mutex> lock{_mutex};
while (!_events.empty()) {
_events.front()();
_events.pop_front();
@@ -71,24 +87,24 @@ ThreadedLoader::run()
}
void
-ThreadedLoader::load_graph(bool merge,
- const FilePath& file_path,
- optional<Raul::Path> engine_parent,
- optional<Raul::Symbol> engine_symbol,
- optional<Properties> engine_data)
+ThreadedLoader::load_graph(bool merge,
+ const FilePath& file_path,
+ const std::optional<raul::Path>& engine_parent,
+ const std::optional<raul::Symbol>& engine_symbol,
+ const std::optional<Properties>& engine_data)
{
- std::lock_guard<std::mutex> lock(_mutex);
+ const std::lock_guard<std::mutex> lock{_mutex};
Glib::ustring engine_base = "";
if (engine_parent) {
if (merge) {
- engine_base = engine_parent.get();
+ engine_base = *engine_parent;
} else {
- engine_base = engine_parent.get().base();
+ engine_base = engine_parent->base();
}
}
- _events.push_back(sigc::hide_return(
+ _events.emplace_back(sigc::hide_return(
sigc::bind(sigc::mem_fun(this, &ThreadedLoader::load_graph_event),
file_path,
engine_parent,
@@ -99,12 +115,13 @@ ThreadedLoader::load_graph(bool merge,
}
void
-ThreadedLoader::load_graph_event(const FilePath& file_path,
- optional<Raul::Path> engine_parent,
- optional<Raul::Symbol> engine_symbol,
- optional<Properties> engine_data)
+ThreadedLoader::load_graph_event(
+ const FilePath& file_path,
+ const std::optional<raul::Path>& engine_parent,
+ const std::optional<raul::Symbol>& engine_symbol,
+ const std::optional<Properties>& engine_data)
{
- std::lock_guard<std::mutex> lock(_app.world().rdf_mutex());
+ const std::lock_guard<std::mutex> lock{_app.world().rdf_mutex()};
_app.world().parser()->parse_file(_app.world(),
*_app.world().interface(),
@@ -115,11 +132,13 @@ ThreadedLoader::load_graph_event(const FilePath& file_path,
}
void
-ThreadedLoader::save_graph(SPtr<const client::GraphModel> model, const URI& uri)
+ThreadedLoader::save_graph(
+ const std::shared_ptr<const client::GraphModel>& model,
+ const URI& uri)
{
- std::lock_guard<std::mutex> lock(_mutex);
+ const std::lock_guard<std::mutex> lock{_mutex};
- _events.push_back(sigc::hide_return(
+ _events.emplace_back(sigc::hide_return(
sigc::bind(sigc::mem_fun(this, &ThreadedLoader::save_graph_event),
model,
uri)));
@@ -128,12 +147,13 @@ ThreadedLoader::save_graph(SPtr<const client::GraphModel> model, const URI& uri)
}
void
-ThreadedLoader::save_graph_event(SPtr<const client::GraphModel> model,
- const URI& uri)
+ThreadedLoader::save_graph_event(
+ const std::shared_ptr<const client::GraphModel>& model,
+ const URI& uri)
{
assert(uri.scheme() == "file");
if (_app.serialiser()) {
- std::lock_guard<std::mutex> lock(_app.world().rdf_mutex());
+ const std::lock_guard<std::mutex> lock{_app.world().rdf_mutex()};
if (uri.string().find(".ingen") != std::string::npos) {
_app.serialiser()->write_bundle(model, uri);