summaryrefslogtreecommitdiffstats
path: root/src/progs/ingenuity/ThreadedLoader.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-05-04 03:59:38 +0000
committerDavid Robillard <d@drobilla.net>2007-05-04 03:59:38 +0000
commita96166710faf2447ed10194d1829db5564b0dff9 (patch)
tree4eb792fcceee17f188566fc6e6bee11e5a8c4336 /src/progs/ingenuity/ThreadedLoader.cpp
parentcf14d321e8f084f742b03e09c086d5ef30297492 (diff)
downloadingen-a96166710faf2447ed10194d1829db5564b0dff9.tar.gz
ingen-a96166710faf2447ed10194d1829db5564b0dff9.tar.bz2
ingen-a96166710faf2447ed10194d1829db5564b0dff9.zip
Made engine, serialisation, client library, and GUI all dynamically loaded modules.
Combined all executables into a single "ingen" program which can do everything. git-svn-id: http://svn.drobilla.net/lad/ingen@493 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/progs/ingenuity/ThreadedLoader.cpp')
-rw-r--r--src/progs/ingenuity/ThreadedLoader.cpp139
1 files changed, 0 insertions, 139 deletions
diff --git a/src/progs/ingenuity/ThreadedLoader.cpp b/src/progs/ingenuity/ThreadedLoader.cpp
deleted file mode 100644
index 43bc76c8..00000000
--- a/src/progs/ingenuity/ThreadedLoader.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <fstream>
-#include <cassert>
-#include <string>
-#include "client/PatchModel.h"
-#include "module/Module.h"
-#include "App.h"
-#include "ThreadedLoader.h"
-using std::cout; using std::endl;
-
-namespace Ingenuity {
-
-
-ThreadedLoader::ThreadedLoader(SharedPtr<EngineInterface> engine)
- : _serialisation_module(Ingen::Shared::load_module("ingen_serialisation"))
- , _engine(engine)
- , _deprecated_loader(engine)
- , _serializer(*App::instance().rdf_world())
-{
- // FIXME: rework this so the thread is only present when it's doing something (save mem)
- if (_serialisation_module) {
- Loader* (*new_loader)() = NULL;
- bool found = _serialisation_module->get_symbol("new_loader", (void*&)new_loader);
- if (found)
- _loader = SharedPtr<Loader>(new_loader());
- }
-
- if (_loader) {
- start();
- } else {
- cerr << "WARNING: Failed to load ingen_serialisation module, unable to load patches." << endl;;
- cerr << "If you are running from the source tree, run ingenuity_dev." << endl;
- }
-}
-
-
-ThreadedLoader::~ThreadedLoader()
-{
-}
-
-
-void
-ThreadedLoader::_whipped()
-{
- _mutex.lock();
-
- while ( ! _events.empty() ) {
- _events.front()();
- _events.pop_front();
- }
-
- _mutex.unlock();
-}
-
-/** FIXME: use poly parameter */
-void
-ThreadedLoader::load_patch(bool merge,
- const string& data_base_uri,
- const Path& data_path,
- MetadataMap engine_data,
- optional<Path> engine_parent,
- optional<const string&> engine_name,
- optional<size_t> engine_poly)
-{
- _mutex.lock();
-
- // FIXME: Filthy hack to load deprecated patches based on file extension
- if (data_base_uri.substr(data_base_uri.length()-3) == ".om") {
- _events.push_back(sigc::hide_return(sigc::bind(
- sigc::mem_fun(_deprecated_loader, &DeprecatedLoader::load_patch),
- data_base_uri,
- engine_parent,
- (engine_name) ? engine_name.get() : "",
- (engine_poly) ? engine_poly.get() : 1,
- engine_data,
- false)));
- } else {
- _events.push_back(sigc::hide_return(sigc::bind(
- sigc::mem_fun(_loader.get(), &Ingen::Serialisation::Loader::load),
- App::instance().engine(),
- App::instance().rdf_world(),
- data_base_uri,
- engine_parent,
- (engine_name) ? engine_name.get() : "",
- // FIXME: poly here
- "",
- engine_data )));
- }
-
- _mutex.unlock();
-
- whip();
-}
-
-
-void
-ThreadedLoader::save_patch(SharedPtr<PatchModel> model, const string& filename, bool recursive)
-{
- _mutex.lock();
-
- _events.push_back(sigc::hide_return(sigc::bind(
- sigc::mem_fun(this, &ThreadedLoader::save_patch_event),
- model, filename, recursive)));
-
- _mutex.unlock();
-
- whip();
-}
-
-
-void
-ThreadedLoader::save_patch_event(SharedPtr<PatchModel> model, const string& filename, bool recursive)
-{
- if (recursive)
- cerr << "FIXME: Recursive save." << endl;
-
- _serializer.start_to_filename(filename);
- _serializer.serialize(model);
- _serializer.finish();
-}
-
-
-} // namespace Ingenuity