summaryrefslogtreecommitdiffstats
path: root/src/progs/ingen
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-07-28 23:10:41 +0000
committerDavid Robillard <d@drobilla.net>2008-07-28 23:10:41 +0000
commited9e1aa15e5a9363653b46e12313878f82652393 (patch)
treea0069d57b72070f12eed7255612caeb583637607 /src/progs/ingen
parent80cdf6829d69f8878b406f9b9e6ca844f4ba7cc4 (diff)
downloadingen-ed9e1aa15e5a9363653b46e12313878f82652393.tar.gz
ingen-ed9e1aa15e5a9363653b46e12313878f82652393.tar.bz2
ingen-ed9e1aa15e5a9363653b46e12313878f82652393.zip
Fix loading patches from command line (partially).
git-svn-id: http://svn.drobilla.net/lad/ingen@1298 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/progs/ingen')
-rw-r--r--src/progs/ingen/main.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/progs/ingen/main.cpp b/src/progs/ingen/main.cpp
index 5be5a8d3..23609ee2 100644
--- a/src/progs/ingen/main.cpp
+++ b/src/progs/ingen/main.cpp
@@ -97,32 +97,39 @@ main(int argc, char** argv)
/* Run engine */
if (args.engine_flag) {
-
engine_module = Ingen::Shared::load_module("ingen_engine");
-
if (engine_module) {
Engine* (*new_engine)(Ingen::Shared::World* world) = NULL;
if (engine_module->get_symbol("new_engine", (void*&)new_engine)) {
engine = SharedPtr<Engine>(new_engine(world));
world->local_engine = engine;
+ /* Load queued (direct in-process) engine interface */
+ if (!args.connect_given) {
+ engine_interface = engine->new_queued_interface();
+ world->engine = engine_interface;
+ }
} else {
engine_module.reset();
}
} else {
cerr << "Unable to load engine module." << endl;
}
-
}
bool use_osc = false;
- /* Connect to remote engine */
- if (args.connect_given || (args.load_given && !engine_interface)) {
- bool found = false;
+ /* Load client library */
+ if (args.connect_given || args.load_given) {
client_module = Ingen::Shared::load_module("ingen_client");
+ if (!client_module)
+ cerr << "Unable to load client module." << endl;
+ }
+ /* Connect to remote engine */
+ if (args.connect_given || (args.load_given && !engine_interface)) {
SharedPtr<Shared::EngineInterface> (*new_osc_interface)(const std::string&) = NULL;
+ bool found = false;
if (client_module)
found = client_module->get_symbol("new_osc_interface", (void*&)new_osc_interface);
@@ -135,10 +142,6 @@ main(int argc, char** argv)
}
}
- /* Load queued (direct in-process) engine interface */
- if (engine && !engine_interface && (args.load_given || args.gui_given || args.run_given)) {
- engine_interface = engine->new_queued_interface();
- }
if (engine && engine_interface) {
@@ -180,6 +183,8 @@ main(int argc, char** argv)
Glib::get_current_dir(), args.load_arg));
}
+
+ engine_interface->load_plugins();
loader->load(world, uri, parent_path, "");
} else {