summaryrefslogtreecommitdiffstats
path: root/src/gui/WindowFactory.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-17 06:47:24 +0000
committerDavid Robillard <d@drobilla.net>2014-11-17 06:47:24 +0000
commitb9e61de6668c6450d7b28040519ec2cb3b1ad87f (patch)
tree8f713df92343d28ae3676c8dba9431677069334f /src/gui/WindowFactory.cpp
parent8d34a6da879f0f8c39dfd4adfa616301fb655f18 (diff)
downloadingen-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/WindowFactory.cpp')
-rw-r--r--src/gui/WindowFactory.cpp12
1 files changed, 12 insertions, 0 deletions
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);