# HG changeset patch
# User Mike Miller
# Date 1344775403 14400
# Branch gui
# Node ID 6f123db8bdc57391a6eff1be068fba90f7391e43
# Parent 973296940c8948e52f93c355b7ed4bdcffa24649
Make resource_manager a singleton with Octave conventions
* resource-manager.cc (resource_manager::instance_ok): New function.
* resource-manager.h (resource_manager::instance): Call instance_ok.
(resource_manager::instance_ok, resource_manager::cleanup_instance):
New functions.
diff --git a/gui/src/resource-manager.cc b/gui/src/resource-manager.cc
--- a/gui/src/resource-manager.cc
+++ b/gui/src/resource-manager.cc
@@ -25,14 +25,37 @@
#include
#include
+#include "error.h"
#include "file-ops.h"
#include "oct-env.h"
+#include "singleton-cleanup.h"
#include "defaults.h"
#include "resource-manager.h"
-resource_manager resource_manager::_singleton;
+resource_manager *resource_manager::_instance = 0;
+
+bool
+resource_manager::instance_ok ()
+{
+ bool retval = true;
+
+ if (! _instance)
+ {
+ _instance = new resource_manager ();
+
+ if (_instance)
+ singleton_cleanup_list::add (cleanup_instance);
+ }
+
+ if (! _instance)
+ {
+ ::error ("unable to create resource_manager object!");
+ }
+
+ return retval;
+}
resource_manager::resource_manager ()
{
diff --git a/gui/src/resource-manager.h b/gui/src/resource-manager.h
--- a/gui/src/resource-manager.h
+++ b/gui/src/resource-manager.h
@@ -32,7 +32,7 @@
static resource_manager *
instance ()
{
- return &_singleton;
+ return (instance_ok ()) ? _instance : 0;
}
QSettings *get_settings ();
@@ -48,9 +48,13 @@
private:
resource_manager ();
+ static bool instance_ok ();
+
+ static void cleanup_instance () { delete _instance; _instance = 0; }
+
QSettings *_settings;
QString _home_path;
- static resource_manager _singleton;
+ static resource_manager *_instance;
bool _first_run;
};