From 318b37d8b556add13b3f156f31c9e72eca339a16 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 17 Aug 2012 02:14:07 +0000 Subject: Implement real logging system, LV2 log extension support, and purge evil/ugly/untranslatable C++ stream printing. Remove coloured log stuff from Raul. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4717 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/App.cpp | 16 +++++++--------- src/gui/App.hpp | 2 ++ src/gui/Configuration.cpp | 4 ++-- src/gui/ConnectWindow.cpp | 10 +++++----- src/gui/NodeMenu.cpp | 7 ++++--- src/gui/NodeModule.cpp | 13 +++++++------ src/gui/PatchCanvas.cpp | 31 +++++++++++++++---------------- src/gui/PatchTreeWindow.cpp | 23 ++++++++++++----------- src/gui/PatchTreeWindow.hpp | 2 +- src/gui/PatchView.cpp | 11 ++++------- src/gui/Port.cpp | 4 ++-- src/gui/PropertiesWindow.cpp | 21 +++++++++------------ src/gui/RenameWindow.cpp | 1 - src/gui/ThreadedLoader.cpp | 9 +++++---- src/gui/WidgetFactory.cpp | 23 +++++++++-------------- src/gui/ingen_gui_lv2.cpp | 10 +++++++--- 16 files changed, 91 insertions(+), 96 deletions(-) (limited to 'src/gui') diff --git a/src/gui/App.cpp b/src/gui/App.cpp index e9c9c663..cfba10c7 100644 --- a/src/gui/App.cpp +++ b/src/gui/App.cpp @@ -25,15 +25,15 @@ #include "ganv/Edge.hpp" #include "ingen/EngineBase.hpp" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" +#include "ingen/World.hpp" #include "ingen/client/ClientStore.hpp" #include "ingen/client/ObjectModel.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/SigClientInterface.hpp" -#include "ingen/World.hpp" #include "ingen/runtime_paths.hpp" #include "lilv/lilv.h" #include "raul/Path.hpp" -#include "raul/log.hpp" #include "App.hpp" #include "Configuration.hpp" @@ -49,8 +49,6 @@ #include "WidgetFactory.hpp" #include "WindowFactory.hpp" -#define LOG(s) (s("[GUI] ")) - using namespace std; namespace Raul { class Deletable; } @@ -148,7 +146,6 @@ App::run() break; _main->run(); - LOG(Raul::info)("Exiting\n"); } void @@ -163,7 +160,7 @@ App::attach(SharedPtr client) } _client = client; - _store = SharedPtr(new ClientStore(_world->uris(), _world->interface(), client)); + _store = SharedPtr(new ClientStore(_world->uris(), _world->log(), _world->interface(), client)); _loader = SharedPtr(new ThreadedLoader(*this, _world->interface())); _patch_tree_window->init(*this, *_store); @@ -229,10 +226,10 @@ App::property_change(const Raul::URI& subject, { if (subject == uris().ingen_engine && key == uris().ingen_sampleRate) { if (value.type() == forge().Int) { - LOG(Raul::info)(Raul::fmt("Sample rate: %1%\n") % uris().forge.str(value)); + log().info(Raul::fmt("Sample rate: %1%\n") % uris().forge.str(value)); _sample_rate = value.get_int32(); } else { - Raul::error << "Engine sample rate property is not an integer" << std::endl; + log().error("Engine sample rate property is not an integer\n"); } } } @@ -378,7 +375,8 @@ App::icon_from_path(const string& path, int size) new IconDestroyNotification(*this, make_pair(path, size)), &App::icon_destroyed); } catch (const Glib::Error& e) { - Raul::warn << "Error loading icon: " << e.what() << endl; + log().warn(Raul::fmt("Error loading icon %1%: %2%\n") + % path % e.what()); } return buf; } diff --git a/src/gui/App.hpp b/src/gui/App.hpp index 5d93c805..32c59300 100644 --- a/src/gui/App.hpp +++ b/src/gui/App.hpp @@ -35,6 +35,7 @@ namespace Ingen { class Interface; + class Log; class Port; class World; namespace Client { @@ -118,6 +119,7 @@ public: inline Ingen::World* world() const { return _world; } inline Ingen::URIs& uris() const { return _world->uris(); } + inline Ingen::Log& log() const { return _world->log(); } protected: diff --git a/src/gui/Configuration.cpp b/src/gui/Configuration.cpp index f7f8977c..1fb48c58 100644 --- a/src/gui/Configuration.cpp +++ b/src/gui/Configuration.cpp @@ -21,10 +21,10 @@ #include #include "ganv/Port.hpp" +#include "ingen/Log.hpp" #include "ingen/client/PluginModel.hpp" #include "ingen/client/PortModel.hpp" #include "ingen/serialisation/Parser.hpp" -#include "raul/log.hpp" #include "App.hpp" #include "Configuration.hpp" @@ -95,7 +95,7 @@ Configuration::get_port_color(const Client::PortModel* p) return _event_port_color; } - Raul::warn << "[Configuration] No known port type for " << p->path() << endl; + _app.log().warn(Raul::fmt("No known port type for %1%\n") % p->path()); return 0x666666FF; } diff --git a/src/gui/ConnectWindow.cpp b/src/gui/ConnectWindow.cpp index 0aef8dbd..ea196175 100644 --- a/src/gui/ConnectWindow.cpp +++ b/src/gui/ConnectWindow.cpp @@ -21,16 +21,16 @@ #include #include "raul/Process.hpp" -#include "raul/log.hpp" -#include "ingen_config.h" #include "ingen/EngineBase.hpp" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" +#include "ingen/Module.hpp" +#include "ingen/World.hpp" #include "ingen/client/ClientStore.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/ThreadedSigClientInterface.hpp" -#include "ingen/Module.hpp" -#include "ingen/World.hpp" +#include "ingen_config.h" #include "App.hpp" #include "ConnectWindow.hpp" @@ -209,7 +209,7 @@ ConnectWindow::connect(bool existing) Glib::signal_timeout().connect( sigc::mem_fun(this, &ConnectWindow::gtk_callback), 40); } else { - Raul::error << "Failed to launch ingen process." << endl; + world->log().error("Failed to launch ingen process\n"); } return; } diff --git a/src/gui/NodeMenu.cpp b/src/gui/NodeMenu.cpp index 08f88c8b..35a35c39 100644 --- a/src/gui/NodeMenu.cpp +++ b/src/gui/NodeMenu.cpp @@ -20,6 +20,7 @@ #include #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" #include "ingen/client/NodeModel.hpp" #include "ingen/client/PluginModel.hpp" #include "lv2/lv2plug.in/ns/ext/presets/presets.h" @@ -108,9 +109,9 @@ NodeMenu::init(App& app, SharedPtr node) lilv_nodes_free(labels); } else { - Raul::error << "Preset <" - << lilv_node_as_string(lilv_nodes_get(presets, i)) - << "> has no rdfs:label" << std::endl; + app.log().error( + Raul::fmt("Preset <%1> has no rdfs:label\n") + % lilv_node_as_string(lilv_nodes_get(presets, i))); } } diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp index c2305e03..89ecc4a1 100644 --- a/src/gui/NodeModule.cpp +++ b/src/gui/NodeModule.cpp @@ -22,12 +22,12 @@ #include "lv2/lv2plug.in/ns/ext/atom/util.h" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" #include "ingen/client/NodeModel.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/PluginModel.hpp" #include "ingen/client/PluginUI.hpp" #include "raul/Atom.hpp" -#include "raul/log.hpp" #include "App.hpp" #include "Configuration.hpp" @@ -220,7 +220,7 @@ NodeModule::embed_gui(bool embed) { if (embed) { if (_gui_window) { - Raul::warn << "LV2 GUI already popped up, cannot embed" << endl; + app().log().warn("LV2 GUI already popped up, cannot embed\n"); return; } @@ -239,7 +239,7 @@ NodeModule::embed_gui(bool embed) container->add(*_gui_widget); Ganv::Module::embed(container); } else { - Raul::error << "Failed to create LV2 UI" << endl; + app().log().error("Failed to create LV2 UI\n"); } if (_gui_widget) { @@ -294,7 +294,8 @@ NodeModule::delete_port_view(SharedPtr model) if (p) { delete p; } else { - Raul::warn << "Failed to find port on module " << model->path() << endl; + app().log().warn(Raul::fmt("Failed to find port %1% on module %2%\n") + % model->path() % _node->path()); } } @@ -303,7 +304,7 @@ NodeModule::popup_gui() { if (_node->plugin() && _node->plugin()->type() == PluginModel::LV2) { if (_plugin_ui) { - Raul::warn << "LV2 GUI already embedded, cannot pop up" << endl; + app().log().warn("LV2 GUI already embedded, cannot pop up\n"); return false; } @@ -332,7 +333,7 @@ NodeModule::popup_gui() return true; } else { - Raul::warn << "No LV2 GUI for " << _node->path() << endl; + app().log().warn(Raul::fmt("No LV2 GUI for %1%\n") % _node->path()); } } diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp index 25552202..bc103d50 100644 --- a/src/gui/PatchCanvas.cpp +++ b/src/gui/PatchCanvas.cpp @@ -24,17 +24,17 @@ #include "ganv/Canvas.hpp" #include "ganv/Circle.hpp" +#include "ingen/Builder.hpp" +#include "ingen/ClashAvoider.hpp" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" +#include "ingen/World.hpp" #include "ingen/client/ClientStore.hpp" #include "ingen/client/NodeModel.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/PluginModel.hpp" #include "ingen/serialisation/Serialiser.hpp" -#include "ingen/Builder.hpp" -#include "ingen/ClashAvoider.hpp" -#include "ingen/World.hpp" #include "lv2/lv2plug.in/ns/ext/atom/atom.h" -#include "raul/log.hpp" #include "App.hpp" #include "Edge.hpp" @@ -50,8 +50,6 @@ #include "WidgetFactory.hpp" #include "WindowFactory.hpp" -#define LOG(s) s << "[PatchCanvas] " - #define FOREACH_ITEM(iter, coll) \ for (Items::const_iterator (iter) = coll.begin(); \ (iter) != coll.end(); ++(iter)) @@ -228,8 +226,8 @@ PatchCanvas::build_plugin_class_menu( const char* sub_label_str = lilv_node_as_string(lilv_plugin_class_get_label(c)); const char* sub_uri_str = lilv_node_as_string(lilv_plugin_class_get_uri(c)); if (ancestors.find(sub_uri_str) != ancestors.end()) { - LOG(Raul::warn) << "Infinite LV2 class recursion: " << class_uri_str - << " <: " << sub_uri_str << endl; + _app.log().warn(Raul::fmt("Infinite LV2 class recursion: %1% <: %2%\n") + % class_uri_str % sub_uri_str); return 0; } @@ -490,8 +488,8 @@ PatchCanvas::connection(SharedPtr cm) if (tail && head) { new GUI::Edge(*this, cm, tail, head, tail->get_fill_color()); } else { - LOG(Raul::error) << "Unable to find ports to connect " - << cm->tail_path() << " -> " << cm->head_path() << endl; + _app.log().error(Raul::fmt("Unable to find ports to connect %1% => %2%\n") + % cm->tail_path() % cm->head_path()); } } @@ -501,11 +499,12 @@ PatchCanvas::disconnection(SharedPtr cm) Ganv::Port* const src = get_port_view(cm->tail()); Ganv::Port* const dst = get_port_view(cm->head()); - if (src && dst) + if (src && dst) { remove_edge(src, dst); - else - LOG(Raul::error) << "Unable to find ports to disconnect " - << cm->tail_path() << " -> " << cm->head_path() << endl; + } else { + _app.log().error(Raul::fmt("Unable to find ports to disconnect %1% => %2%\n") + % cm->tail_path() % cm->head_path()); + } } void @@ -703,7 +702,7 @@ PatchCanvas::paste() Glib::ustring str = Gtk::Clipboard::get()->wait_for_text(); SharedPtr parser = _app.loader()->parser(); if (!parser) { - LOG(Raul::error) << "Unable to load parser, paste unavailable" << endl; + _app.log().error("Unable to load parser, paste unavailable\n"); return; } @@ -714,7 +713,7 @@ PatchCanvas::paste() const URIs& uris = _app.uris(); Builder builder(_app.world()->uris(), *_app.interface()); - ClientStore clipboard(_app.world()->uris()); + ClientStore clipboard(_app.world()->uris(), _app.log()); clipboard.set_plugins(_app.store()->plugins()); // mkdir -p diff --git a/src/gui/PatchTreeWindow.cpp b/src/gui/PatchTreeWindow.cpp index 06eed694..00b96926 100644 --- a/src/gui/PatchTreeWindow.cpp +++ b/src/gui/PatchTreeWindow.cpp @@ -14,17 +14,15 @@ along with Ingen. If not, see . */ -#include "raul/log.hpp" -#include "raul/Path.hpp" -#include "ingen/Interface.hpp" -#include "ingen/client/ClientStore.hpp" -#include "ingen/client/PatchModel.hpp" #include "App.hpp" #include "PatchTreeWindow.hpp" #include "SubpatchModule.hpp" #include "WindowFactory.hpp" - -#define LOG(s) s << "[PatchTreeWindow] " +#include "ingen/Interface.hpp" +#include "ingen/Log.hpp" +#include "ingen/client/ClientStore.hpp" +#include "ingen/client/PatchModel.hpp" +#include "raul/Path.hpp" using namespace std; @@ -160,8 +158,9 @@ PatchTreeWindow::show_patch_menu(GdkEventButton* ev) if (active) { Gtk::TreeModel::Row row = *active; SharedPtr pm = row[_patch_tree_columns.patch_model_col]; - if (pm) - Raul::warn << "TODO: patch menu from tree window" << endl; + if (pm) { + _app->log().warn("TODO: patch menu from tree window"); + } } } @@ -205,7 +204,8 @@ PatchTreeWindow::patch_property_changed(const Raul::URI& key, Gtk::TreeModel::Row row = *i; row[_patch_tree_columns.enabled_col] = value.get_bool(); } else { - LOG(Raul::error) << "Unable to find patch " << patch->path() << endl; + _app->log().error(Raul::fmt("Unable to find patch %1%\n") + % patch->path()); } } _enable_signal = true; @@ -223,7 +223,8 @@ PatchTreeWindow::patch_moved(SharedPtr patch) Gtk::TreeModel::Row row = *i; row[_patch_tree_columns.name_col] = patch->symbol().c_str(); } else { - LOG(Raul::error) << "Unable to find patch " << patch->path() << endl; + _app->log().error(Raul::fmt("Unable to find patch %1%\n") + % patch->path()); } _enable_signal = true; diff --git a/src/gui/PatchTreeWindow.hpp b/src/gui/PatchTreeWindow.hpp index 8321644f..86e10370 100644 --- a/src/gui/PatchTreeWindow.hpp +++ b/src/gui/PatchTreeWindow.hpp @@ -28,7 +28,7 @@ namespace Raul { class Path; } namespace Ingen { -namespace Client { class ClientStore; } +namespace Client { class ClientStore; class ObjectModel; } namespace GUI { diff --git a/src/gui/PatchView.cpp b/src/gui/PatchView.cpp index f1f4c96d..e81d16f7 100644 --- a/src/gui/PatchView.cpp +++ b/src/gui/PatchView.cpp @@ -16,15 +16,16 @@ #include #include -#include "raul/log.hpp" + #include "ingen/Interface.hpp" #include "ingen/client/PatchModel.hpp" + #include "App.hpp" -#include "PatchView.hpp" -#include "PatchCanvas.hpp" #include "LoadPluginWindow.hpp" #include "NewSubpatchWindow.hpp" +#include "PatchCanvas.hpp" #include "PatchTreeWindow.hpp" +#include "PatchView.hpp" #include "WidgetFactory.hpp" using namespace std; @@ -192,14 +193,10 @@ PatchView::property_changed(const Raul::URI& predicate, const Raul::Atom& value) if (predicate == _app->uris().ingen_enabled) { if (value.type() == _app->uris().forge.Bool) { _process_but->set_active(value.get_bool()); - } else { - Raul::warn << "Bad type for ingen:enabled: " << value.type() << endl; } } else if (predicate == _app->uris().ingen_polyphony) { if (value.type() == _app->uris().forge.Int) { _poly_spin->set_value(value.get_int32()); - } else { - Raul::warn << "Bad type for ingen:polyphony: " << value.type() << endl; } } _enable_signal = true; diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp index a238d60f..265b4caf 100644 --- a/src/gui/Port.cpp +++ b/src/gui/Port.cpp @@ -19,9 +19,9 @@ #include "ganv/Module.hpp" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" #include "ingen/client/PatchModel.hpp" #include "ingen/client/PortModel.hpp" -#include "raul/log.hpp" #include "App.hpp" #include "Configuration.hpp" @@ -143,7 +143,7 @@ void Port::on_value_changed(GVariant* value) { if (!g_variant_is_of_type(value, G_VARIANT_TYPE_DOUBLE)) { - Raul::warn("TODO: Non-float port value changed\n"); + _app.log().warn("TODO: Non-float port value changed\n"); return; } diff --git a/src/gui/PropertiesWindow.cpp b/src/gui/PropertiesWindow.cpp index b146d412..2acb7ffe 100644 --- a/src/gui/PropertiesWindow.cpp +++ b/src/gui/PropertiesWindow.cpp @@ -21,15 +21,14 @@ #include #include -#include "App.hpp" -#include "PropertiesWindow.hpp" #include "ingen/Interface.hpp" +#include "ingen/Log.hpp" #include "ingen/World.hpp" #include "ingen/client/NodeModel.hpp" #include "ingen/client/PluginModel.hpp" -#include "raul/log.hpp" -#define LOG(s) s << "[PropertiesWindow] " +#include "App.hpp" +#include "PropertiesWindow.hpp" using namespace std; @@ -351,7 +350,8 @@ PropertiesWindow::create_value_widget(const Raul::URI& uri, const Raul::Atom& va return widget; } - LOG(Raul::error) << "Unable to create widget for value " << forge.str(value) << endl; + _app->log().error(Raul::fmt("Unable to create widget for value %1%\n") + % forge.str(value)); return NULL; } @@ -408,7 +408,8 @@ PropertiesWindow::value_edited(const Raul::URI& predicate) { Records::iterator r = _records.find(predicate); if (r == _records.end()) { - LOG(Raul::error) << "Unknown property `" << predicate << "' edited" << endl; + _app->log().error(Raul::fmt("Unknown property `%1%' edited\n") + % predicate); return; } @@ -440,7 +441,8 @@ PropertiesWindow::value_edited(const Raul::URI& predicate) return; bad_type: - LOG(Raul::error) << "Property `" << predicate << "' value widget has wrong type" << endl; + _app->log().error(Raul::fmt("Property `%1%' value widget has wrong type\n") + % predicate); return; } @@ -517,21 +519,16 @@ PropertiesWindow::cancel_clicked() void PropertiesWindow::apply_clicked() { - LOG(Raul::debug) << "apply {" << endl; Resource::Properties properties; for (Records::const_iterator r = _records.begin(); r != _records.end(); ++r) { const Raul::URI& uri = r->first; const Record& record = r->second; if (!_model->has_property(uri, record.value)) { - LOG(Raul::debug) << "\t" << uri - << " = " << _app->forge().str(record.value) << endl; properties.insert(make_pair(uri, record.value)); } } _app->interface()->put(_model->uri(), properties); - - LOG(Raul::debug) << "}" << endl; } void diff --git a/src/gui/RenameWindow.cpp b/src/gui/RenameWindow.cpp index df22a3c0..25528df1 100644 --- a/src/gui/RenameWindow.cpp +++ b/src/gui/RenameWindow.cpp @@ -80,7 +80,6 @@ void RenameWindow::values_changed() { const string& symbol = _symbol_entry->get_text(); - const string& label = _label_entry->get_text(); if (!Raul::Symbol::is_valid(symbol)) { _message_label->set_text("Invalid symbol"); _ok_button->property_sensitive() = false; diff --git a/src/gui/ThreadedLoader.cpp b/src/gui/ThreadedLoader.cpp index 3154dfbb..bc7aa19c 100644 --- a/src/gui/ThreadedLoader.cpp +++ b/src/gui/ThreadedLoader.cpp @@ -16,10 +16,10 @@ #include +#include "ingen/Log.hpp" #include "ingen/Module.hpp" #include "ingen/World.hpp" #include "ingen/client/PatchModel.hpp" -#include "raul/log.hpp" #include "App.hpp" #include "ThreadedLoader.hpp" @@ -36,10 +36,11 @@ ThreadedLoader::ThreadedLoader(App& app, SharedPtr engine) , _sem(0) , _engine(engine) { - if (parser()) + if (parser()) { start(); - else - Raul::warn << "Failed to load ingen_serialisation module, load disabled." << endl; + } else { + app.log().warn("Parser unavailable, patch loading disabled\n"); + } } ThreadedLoader::~ThreadedLoader() diff --git a/src/gui/WidgetFactory.cpp b/src/gui/WidgetFactory.cpp index 31749ffe..642e3cea 100644 --- a/src/gui/WidgetFactory.cpp +++ b/src/gui/WidgetFactory.cpp @@ -17,8 +17,7 @@ #include #include -#include "raul/log.hpp" - +#include "raul/fmt.hpp" #include "ingen/runtime_paths.hpp" #include "WidgetFactory.hpp" @@ -59,25 +58,21 @@ WidgetFactory::find_ui_file() if (is_readable(ui_filename)) return; - Raul::error << "[WidgetFactory] Unable to find ingen_gui.ui in " - << INGEN_DATA_DIR << endl; - throw std::runtime_error("Unable to find UI file"); + throw std::runtime_error((Raul::fmt("Unable to find ingen_gui.ui in %1%\n") + % INGEN_DATA_DIR).str()); } Glib::RefPtr WidgetFactory::create(const string& toplevel_widget) { - if (ui_filename.empty()) + if (ui_filename.empty()) { find_ui_file(); + } - try { - if (toplevel_widget.empty()) - return Gtk::Builder::create_from_file(ui_filename); - else - return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str()); - } catch (const Gtk::BuilderError& ex) { - Raul::error << "[WidgetFactory] " << ex.what() << endl; - throw ex; + if (toplevel_widget.empty()) { + return Gtk::Builder::create_from_file(ui_filename); + } else { + return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str()); } } diff --git a/src/gui/ingen_gui_lv2.cpp b/src/gui/ingen_gui_lv2.cpp index 3dcb6d71..937ecd38 100644 --- a/src/gui/ingen_gui_lv2.cpp +++ b/src/gui/ingen_gui_lv2.cpp @@ -89,15 +89,18 @@ instantiate(const LV2UI_Descriptor* descriptor, LV2_URID_Map* map = NULL; LV2_URID_Unmap* unmap = NULL; + LV2_Log_Log* log = NULL; for (int i = 0; features[i]; ++i) { - if (!strcmp(features[i]->URI, LV2_URID_URI "#map")) { + if (!strcmp(features[i]->URI, LV2_URID__map)) { map = (LV2_URID_Map*)features[i]->data; - } else if (!strcmp(features[i]->URI, LV2_URID_URI "#unmap")) { + } else if (!strcmp(features[i]->URI, LV2_URID__unmap)) { unmap = (LV2_URID_Unmap*)features[i]->data; + } else if (!strcmp(features[i]->URI, LV2_LOG__log)) { + log = (LV2_Log_Log*)features[i]->data; } } - ui->world = new Ingen::World(ui->argc, ui->argv, map, unmap); + ui->world = new Ingen::World(ui->argc, ui->argv, map, unmap, log); ui->forge = new Ingen::Forge(ui->world->uri_map()); @@ -125,6 +128,7 @@ instantiate(const LV2UI_Descriptor* descriptor, ui->reader = SharedPtr( new Ingen::AtomReader(ui->world->uri_map(), ui->world->uris(), + ui->world->log(), ui->world->forge(), *ui->client.get())); -- cgit v1.2.1