diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Resource.cc | 10 | ||||
| -rw-r--r-- | src/Resource.h | 1 | ||||
| -rw-r--r-- | src/openbox.cc | 16 |
3 files changed, 14 insertions, 13 deletions
diff --git a/src/Resource.cc b/src/Resource.cc index b3605218..1f6f8438 100644 --- a/src/Resource.cc +++ b/src/Resource.cc @@ -35,17 +35,27 @@ #include <assert.h> +bool obResource::m_initialized = false; + obResource::obResource(const std::string &file) { setFile(file); m_modified = false; m_database = NULL; m_autosave = true; + if (!m_initialized) { + XrmInitialize(); + m_initialized = true; + } } obResource::obResource() { m_modified = false; m_database = NULL; m_autosave = true; + if (!m_initialized) { + XrmInitialize(); + m_initialized = true; + } } obResource::~obResource() { diff --git a/src/Resource.h b/src/Resource.h index 985e29d8..912ae753 100644 --- a/src/Resource.h +++ b/src/Resource.h @@ -65,6 +65,7 @@ public: std::string &value) const; private: + static bool m_initialized; std::string m_file; bool m_modified; bool m_autosave; diff --git a/src/openbox.cc b/src/openbox.cc index 2f41fcbb..55c07acd 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -197,7 +197,6 @@ Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc) menuTimestamps = new LinkedList<MenuTimestamp>; - XrmInitialize(); load_rc(); #ifdef HAVE_GETPID @@ -1491,18 +1490,9 @@ void Openbox::reconfigure(void) { void Openbox::real_reconfigure(void) { grab(); - XrmDatabase new_openboxrc = (XrmDatabase) 0; - char style[MAXPATHLEN + 64]; - - sprintf(style, "session.styleFile: %s", resource.style_file); - XrmPutLineResource(&new_openboxrc, style); - - XrmDatabase old_openboxrc = XrmGetFileDatabase(rc_file); - - XrmMergeDatabases(new_openboxrc, &old_openboxrc); - XrmPutFileDatabase(old_openboxrc, rc_file); - if (old_openboxrc) XrmDestroyDatabase(old_openboxrc); - + config.load(); + config.setValue("session.styleFile", resource.style_file); // autosave's + for (int i = 0, n = menuTimestamps->count(); i < n; i++) { MenuTimestamp *ts = menuTimestamps->remove(0); |
