diff options
Diffstat (limited to 'src/libs/engine')
-rw-r--r-- | src/libs/engine/Engine.cpp | 7 | ||||
-rw-r--r-- | src/libs/engine/Engine.hpp | 11 | ||||
-rw-r--r-- | src/libs/engine/NodeFactory.cpp | 29 | ||||
-rw-r--r-- | src/libs/engine/NodeFactory.hpp | 6 | ||||
-rw-r--r-- | src/libs/engine/QueuedEngineInterface.cpp | 1 | ||||
-rw-r--r-- | src/libs/engine/engine.cpp | 6 | ||||
-rw-r--r-- | src/libs/engine/engine.hpp | 10 |
7 files changed, 35 insertions, 35 deletions
diff --git a/src/libs/engine/Engine.cpp b/src/libs/engine/Engine.cpp index 69f7ebe0..7b4c4f48 100644 --- a/src/libs/engine/Engine.cpp +++ b/src/libs/engine/Engine.cpp @@ -48,14 +48,15 @@ using namespace std; namespace Ingen { -Engine::Engine() -: _midi_driver(NULL), +Engine::Engine(Ingen::Shared::World* world) +: _world(world), + _midi_driver(NULL), _osc_driver(NULL), _maid(new Raul::Maid(maid_queue_size)), _post_processor(new PostProcessor(*_maid, post_processor_queue_size)), _broadcaster(new ClientBroadcaster()), _object_store(new ObjectStore()), - _node_factory(new NodeFactory()), + _node_factory(new NodeFactory(world)), /*#ifdef HAVE_LASH _lash_driver(new LashDriver()), #else */ diff --git a/src/libs/engine/Engine.hpp b/src/libs/engine/Engine.hpp index b9780501..fc64e024 100644 --- a/src/libs/engine/Engine.hpp +++ b/src/libs/engine/Engine.hpp @@ -18,6 +18,9 @@ #ifndef ENGINE_H #define ENGINE_H +#include "../../../config/config.h" +#include "module/module.h" + #include <cassert> #include <boost/utility.hpp> #include <raul/SharedPtr.hpp> @@ -55,7 +58,8 @@ class Driver; class Engine : boost::noncopyable { public: - Engine(); + Engine(Ingen::Shared::World* world); + virtual ~Engine(); virtual int main(); @@ -90,8 +94,13 @@ public: /** Return the active driver for the given type */ Driver* driver(DataType type); + + Ingen::Shared::World* world() { return _world; } private: + + Ingen::Shared::World* _world; + SharedPtr<EventSource> _event_source; SharedPtr<AudioDriver> _audio_driver; MidiDriver* _midi_driver; diff --git a/src/libs/engine/NodeFactory.cpp b/src/libs/engine/NodeFactory.cpp index 24221dd7..30e13ac2 100644 --- a/src/libs/engine/NodeFactory.cpp +++ b/src/libs/engine/NodeFactory.cpp @@ -32,7 +32,6 @@ #ifdef HAVE_SLV2 #include "LV2Node.hpp" #include <slv2/slv2.h> -#include <slv2/util.h> // old slv2 compat #endif #ifdef HAVE_LADSPA #include "LADSPANode.hpp" @@ -41,9 +40,7 @@ #include "DSSINode.hpp" #endif -using std::string; -using std::cerr; using std::cout; using std::endl; - +using namespace std; namespace Ingen { @@ -54,14 +51,10 @@ namespace Ingen { -NodeFactory::NodeFactory() -: _has_loaded(false) +NodeFactory::NodeFactory(Ingen::Shared::World* world) + : _world(world) + , _has_loaded(false) { -#ifdef HAVE_SLV2 - _world = slv2_world_new(); - slv2_world_load_all(_world); -#endif - // Add builtin plugin types to _internal_plugins list // FIXME: ewwww, definitely a better way to do this! @@ -95,11 +88,6 @@ NodeFactory::~NodeFactory() for (list<Glib::Module*>::iterator i = _libraries.begin(); i != _libraries.end(); ++i) delete (*i); _libraries.clear(); - -#ifdef HAVE_SLV2 - slv2_world_free(_world); -#endif - } @@ -270,7 +258,7 @@ NodeFactory::load_internal_plugin(const string& uri, void NodeFactory::load_lv2_plugins() { - SLV2Plugins plugins = slv2_world_get_all_plugins(_world); + SLV2Plugins plugins = slv2_world_get_all_plugins(_world->slv2_world); //cerr << "[NodeFactory] Found " << slv2_plugins_size(plugins) << " LV2 plugins:" << endl; @@ -300,7 +288,10 @@ NodeFactory::load_lv2_plugins() plug->module(NULL); // FIXME? plug->lib_path(slv2_uri_to_path(slv2_plugin_get_library_uri(lv2_plug))); char* name = slv2_plugin_get_name(lv2_plug); - assert(name); + if (!name) { + cerr << "ERROR: LV2 Plugin " << uri << " has no name. Ignoring." << endl; + continue; + } plug->name(name); free(name); @@ -308,7 +299,7 @@ NodeFactory::load_lv2_plugins() _plugins.push_back(plug); } - slv2_plugins_free(_world, plugins); + slv2_plugins_free(_world->slv2_world, plugins); } diff --git a/src/libs/engine/NodeFactory.hpp b/src/libs/engine/NodeFactory.hpp index 3b8eb711..184af94c 100644 --- a/src/libs/engine/NodeFactory.hpp +++ b/src/libs/engine/NodeFactory.hpp @@ -19,6 +19,7 @@ #define NODEFACTORY_H #include "../../../../config/config.h" +#include "module/module.h" #include <list> #include <string> @@ -52,7 +53,7 @@ class Plugin; class NodeFactory { public: - NodeFactory(); + NodeFactory(Ingen::Shared::World* world); ~NodeFactory(); void load_plugins(); @@ -72,8 +73,6 @@ private: #ifdef HAVE_SLV2 void load_lv2_plugins(); Node* load_lv2_plugin(const string& plugin_uri, const string& name, size_t poly, Patch* parent, SampleRate srate, size_t buffer_size); - - SLV2World _world; #endif #ifdef HAVE_DSSI @@ -87,6 +86,7 @@ private: list<Plugin*> _internal_plugins; list<Plugin*> _plugins; // FIXME: make a map + Ingen::Shared::World* _world; bool _has_loaded; }; diff --git a/src/libs/engine/QueuedEngineInterface.cpp b/src/libs/engine/QueuedEngineInterface.cpp index a8906c97..68115d79 100644 --- a/src/libs/engine/QueuedEngineInterface.cpp +++ b/src/libs/engine/QueuedEngineInterface.cpp @@ -99,6 +99,7 @@ QueuedEngineInterface::load_plugins() void QueuedEngineInterface::activate() { + QueuedEventSource::activate(); push_queued(new PingQueuedEvent(_engine, _responder, now())); } diff --git a/src/libs/engine/engine.cpp b/src/libs/engine/engine.cpp index bc272663..53db86f8 100644 --- a/src/libs/engine/engine.cpp +++ b/src/libs/engine/engine.cpp @@ -15,6 +15,8 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "../../../../config/config.h" + #include <raul/Process.hpp> #include "engine.hpp" #include "Engine.hpp" @@ -25,10 +27,10 @@ namespace Ingen { Engine* -new_engine() +new_engine(Ingen::Shared::World* world) { set_denormal_flags(); - return new Engine(); + return new Engine(world); } diff --git a/src/libs/engine/engine.hpp b/src/libs/engine/engine.hpp index 940db440..93b426ac 100644 --- a/src/libs/engine/engine.hpp +++ b/src/libs/engine/engine.hpp @@ -18,20 +18,16 @@ #ifndef INGEN_ENGINE_H #define INGEN_ENGINE_H -#include <raul/SharedPtr.hpp> - namespace Ingen { -class Engine; -namespace Shared { class EngineInterface; } +namespace Shared { class World; } +class Engine; extern "C" { - //void run(int argc, char** argv); - /** Create a new engine in this process */ - Engine* new_engine(); + Engine* new_engine(Ingen::Shared::World* world); /** Launch an OSC engine as a completely separate process * \return true if successful |