summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-12-19 06:58:52 +0000
committerDavid Robillard <d@drobilla.net>2007-12-19 06:58:52 +0000
commit15b8dcbbdd68473df4ad188be16a1344985fbf66 (patch)
treed5bbcfaf7ae4aaa4f22aba8aa40c72bc8d404788 /src
parent961b74bb60ee45954972dce5aec194fd5c21e569 (diff)
downloadingen-15b8dcbbdd68473df4ad188be16a1344985fbf66.tar.gz
ingen-15b8dcbbdd68473df4ad188be16a1344985fbf66.tar.bz2
ingen-15b8dcbbdd68473df4ad188be16a1344985fbf66.zip
Fix LV2 GUI embedding.
Clean up LV2 icon stuff. Fix flood of "unable to load icon" warnings. git-svn-id: http://svn.drobilla.net/lad/ingen@980 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/libs/client/PluginModel.cpp2
-rw-r--r--src/libs/gui/App.cpp13
-rw-r--r--src/libs/gui/App.hpp4
-rw-r--r--src/libs/gui/PatchCanvas.cpp11
4 files changed, 16 insertions, 14 deletions
diff --git a/src/libs/client/PluginModel.cpp b/src/libs/client/PluginModel.cpp
index 786a5fb5..8c2ad71c 100644
--- a/src/libs/client/PluginModel.cpp
+++ b/src/libs/client/PluginModel.cpp
@@ -134,7 +134,7 @@ PluginModel::ui(EngineInterface* engine, NodeModel* node) const
SLV2UIInstance ret = NULL;
- const char* gtk_gui_uri = "http://ll-plugins.nongnu.org/lv2/ext/gui#";
+ const char* gtk_gui_uri = "http://ll-plugins.nongnu.org/lv2/ext/gui#GtkGUI";
SLV2UIs uis = slv2_plugin_get_uis(_slv2_plugin);
SLV2UI ui = NULL;
diff --git a/src/libs/gui/App.cpp b/src/libs/gui/App.cpp
index bc9148ed..3ee95540 100644
--- a/src/libs/gui/App.cpp
+++ b/src/libs/gui/App.cpp
@@ -361,8 +361,12 @@ App::icon_from_path(const string& path, int size)
/* If weak references to Glib::Objects are needed somewhere else it will
probably be a good idea to create a proper WeakPtr class instead of
using raw pointers, but for a single use this will do. */
+
+ Glib::RefPtr<Gdk::Pixbuf> buf;
+ if (path.length() == 0)
+ return buf;
- IconMap::iterator iter = _icons.find(make_pair(path, size));
+ Icons::iterator iter = _icons.find(make_pair(path, size));
if (iter != _icons.end()) {
// we need to reference manually since the RefPtr constructor doesn't do it
@@ -370,15 +374,14 @@ App::icon_from_path(const string& path, int size)
return Glib::RefPtr<Gdk::Pixbuf>(iter->second);
}
- Glib::RefPtr<Gdk::Pixbuf> buf;
try {
buf = Gdk::Pixbuf::create_from_file(path, size, size);
_icons.insert(make_pair(make_pair(path, size), buf.operator->()));
buf->add_destroy_notify_callback(new pair<string, int>(path, size),
&App::icon_destroyed);
cerr << "Loaded icon " << path << " with size " << size << endl;
- } catch (...) {
- cerr << "Caught exception, failed to load icon " << path << endl;
+ } catch (Glib::Error e) {
+ cerr << "Error loading icon: " << e.what() << endl;
}
return buf;
}
@@ -389,7 +392,7 @@ App::icon_destroyed(void* data)
{
pair<string, int>* p = static_cast<pair<string, int>*>(data);
cerr << "Destroyed icon " << p->first << " with size " << p->second << endl;
- IconMap::iterator iter = instance()._icons.find(*p);
+ Icons::iterator iter = instance()._icons.find(*p);
if (iter != instance()._icons.end())
instance()._icons.erase(iter);
diff --git a/src/libs/gui/App.hpp b/src/libs/gui/App.hpp
index 261a9c72..6f2d71fc 100644
--- a/src/libs/gui/App.hpp
+++ b/src/libs/gui/App.hpp
@@ -130,8 +130,8 @@ protected:
}
};
- typedef map<pair<string, int>, Gdk::Pixbuf*, LexicalCompare<string, int> > IconMap;
- IconMap _icons;
+ typedef map<pair<string, int>, Gdk::Pixbuf*, LexicalCompare<string, int> > Icons;
+ Icons _icons;
App(Ingen::Shared::World* world);
diff --git a/src/libs/gui/PatchCanvas.cpp b/src/libs/gui/PatchCanvas.cpp
index 4fec2626..90e873a9 100644
--- a/src/libs/gui/PatchCanvas.cpp
+++ b/src/libs/gui/PatchCanvas.cpp
@@ -244,14 +244,13 @@ PatchCanvas::add_node(SharedPtr<NodeModel> nm)
SharedPtr<PatchModel> pm = PtrCast<PatchModel>(nm);
SharedPtr<NodeModule> module;
- if (pm)
+ if (pm) {
module = SubpatchModule::create(shared_this, pm);
- else {
+ } else {
module = NodeModule::create(shared_this, nm);
- const PluginModel* plugm =
- dynamic_cast<const PluginModel*>(nm->plugin());
- if (plugm)
- module->set_icon(App::instance().icon_from_path(plugm->icon_path(), 100));
+ const PluginModel* plugm = dynamic_cast<const PluginModel*>(nm->plugin());
+ if (plugm && plugm->icon_path() != "")
+ module->set_icon(App::instance().icon_from_path(plugm->icon_path(), 100));
}
add_item(module);