summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-23 22:00:38 +0000
committerDavid Robillard <d@drobilla.net>2011-09-23 22:00:38 +0000
commit41f1be0a68676f33dc1d7dfbb32c5d6440ebd4c9 (patch)
tree4803c07d4d3ebf85093068d94484dd7029a57389 /src/client
parent1af9036d30ba65c6ec5e04902cdfdcfc88478e62 (diff)
downloadingen-41f1be0a68676f33dc1d7dfbb32c5d6440ebd4c9.tar.gz
ingen-41f1be0a68676f33dc1d7dfbb32c5d6440ebd4c9.tar.bz2
ingen-41f1be0a68676f33dc1d7dfbb32c5d6440ebd4c9.zip
Fix broken iterator use (memory errors on erase) in ResourceImpl::set_property.
Load all required modules before starting jack (Jack went crazy sometimes otherwise, particularly with ingen running in gdb). Fix insane non-const reference return to Resource::set_property. Exit cleanly on interrupt (Ctrl-C) and terminate (kill). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3480 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/client')
-rw-r--r--src/client/ObjectModel.cpp4
-rw-r--r--src/client/PluginModel.cpp2
-rw-r--r--src/client/PortModel.cpp4
3 files changed, 5 insertions, 5 deletions
diff --git a/src/client/ObjectModel.cpp b/src/client/ObjectModel.cpp
index a0235bb6..940bd51e 100644
--- a/src/client/ObjectModel.cpp
+++ b/src/client/ObjectModel.cpp
@@ -47,11 +47,11 @@ ObjectModel::~ObjectModel()
{
}
-Raul::Atom&
+const Raul::Atom&
ObjectModel::set_property(const Raul::URI& key, const Raul::Atom& value,
Resource::Graph ctx)
{
- Raul::Atom& my_value = ResourceImpl::set_property(key, value, ctx);
+ const Raul::Atom& my_value = ResourceImpl::set_property(key, value, ctx);
_signal_property.emit(key, my_value);
return my_value;
}
diff --git a/src/client/PluginModel.cpp b/src/client/PluginModel.cpp
index c9395ccd..694e5ce0 100644
--- a/src/client/PluginModel.cpp
+++ b/src/client/PluginModel.cpp
@@ -94,7 +94,7 @@ PluginModel::get_property(const URI& key) const
}
if (_lilv_plugin) {
- boost::optional<Raul::Atom&> ret;
+ boost::optional<const Raul::Atom&> ret;
LilvNode* lv2_pred = lilv_new_uri(_lilv_world, key.str().c_str());
LilvNodes* values = lilv_plugin_get_value(_lilv_plugin, lv2_pred);
lilv_node_free(lv2_pred);
diff --git a/src/client/PortModel.cpp b/src/client/PortModel.cpp
index fe85e108..8404d60e 100644
--- a/src/client/PortModel.cpp
+++ b/src/client/PortModel.cpp
@@ -22,12 +22,12 @@
namespace Ingen {
namespace Client {
-Raul::Atom&
+const Raul::Atom&
PortModel::set_property(const Raul::URI& uri,
const Raul::Atom& value,
Resource::Graph ctx)
{
- Raul::Atom& ret = ObjectModel::set_property(uri, value, ctx);
+ const Raul::Atom& ret = ObjectModel::set_property(uri, value, ctx);
if (uri == _uris.ingen_value)
this->value(value);
return ret;