diff options
author | David Robillard <d@drobilla.net> | 2014-11-17 06:47:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-11-17 06:47:24 +0000 |
commit | b9e61de6668c6450d7b28040519ec2cb3b1ad87f (patch) | |
tree | 8f713df92343d28ae3676c8dba9431677069334f /src/gui | |
parent | 8d34a6da879f0f8c39dfd4adfa616301fb655f18 (diff) | |
download | ingen-b9e61de6668c6450d7b28040519ec2cb3b1ad87f.tar.gz ingen-b9e61de6668c6450d7b28040519ec2cb3b1ad87f.tar.bz2 ingen-b9e61de6668c6450d7b28040519ec2cb3b1ad87f.zip |
Fix a few minor/unlikely memory errors.
Handle Glade widget loading failure more gracefully.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5486 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/NodeModule.cpp | 5 | ||||
-rw-r--r-- | src/gui/Port.cpp | 5 | ||||
-rw-r--r-- | src/gui/WindowFactory.cpp | 12 |
3 files changed, 22 insertions, 0 deletions
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp index 0bacb70b..722cfa83 100644 --- a/src/gui/NodeModule.cpp +++ b/src/gui/NodeModule.cpp @@ -93,6 +93,11 @@ bool NodeModule::show_menu(GdkEventButton* ev) { WidgetFactory::get_widget_derived("object_menu", _menu); + if (!_menu) { + app().log().error("Failed to load object menu widget\n"); + return false; + } + _menu->init(app(), _block); _menu->signal_embed_gui.connect( sigc::mem_fun(this, &NodeModule::on_embed_gui_toggled)); diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp index e123a571..20f9cf90 100644 --- a/src/gui/Port.cpp +++ b/src/gui/Port.cpp @@ -141,6 +141,11 @@ Port::show_menu(GdkEventButton* ev) { PortMenu* menu = NULL; WidgetFactory::get_widget_derived("object_menu", menu); + if (!menu) { + _app.log().error("Failed to load port menu widget\n"); + return false; + } + menu->init(_app, model(), _flipped); menu->popup(ev->button, ev->time); return true; diff --git a/src/gui/WindowFactory.cpp b/src/gui/WindowFactory.cpp index f6d07262..ebd008e6 100644 --- a/src/gui/WindowFactory.cpp +++ b/src/gui/WindowFactory.cpp @@ -14,8 +14,10 @@ along with Ingen. If not, see <http://www.gnu.org/licenses/>. */ +#include <stdexcept> #include <string> +#include "ingen/Log.hpp" #include "ingen/client/GraphModel.hpp" #include "App.hpp" @@ -51,6 +53,11 @@ WindowFactory::WindowFactory(App& app) WidgetFactory::get_widget_derived("properties_win", _properties_win); WidgetFactory::get_widget_derived("rename_win", _rename_win); + if (!(_load_plugin_win && _load_graph_win && _new_subgraph_win + && _properties_win && _rename_win)) { + throw std::runtime_error("failed to load window widgets\n"); + } + _load_plugin_win->init_window(app); _load_graph_win->init(app); _new_subgraph_win->init_window(app); @@ -157,6 +164,11 @@ WindowFactory::new_graph_window(SPtr<const GraphModel> graph, GraphWindow* win = NULL; WidgetFactory::get_widget_derived("graph_win", win); + if (!win) { + _app.log().error("Failed to load graph window widget\n"); + return NULL; + } + win->init_window(_app); win->box()->set_graph(graph, view); |