diff options
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 38 |
1 files changed, 11 insertions, 27 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 2645d7d..efb89b8 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -45,7 +45,7 @@ | |||
45 | #include "FbTk/EventManager.hh" | 45 | #include "FbTk/EventManager.hh" |
46 | #include "FbTk/StringUtil.hh" | 46 | #include "FbTk/StringUtil.hh" |
47 | #include "FbTk/Util.hh" | 47 | #include "FbTk/Util.hh" |
48 | #include "FbTk/Resource.hh" | 48 | #include "FbTk/LResource.hh" |
49 | #include "FbTk/SimpleCommand.hh" | 49 | #include "FbTk/SimpleCommand.hh" |
50 | #include "FbTk/XrmDatabaseHelper.hh" | 50 | #include "FbTk/XrmDatabaseHelper.hh" |
51 | #include "FbTk/Command.hh" | 51 | #include "FbTk/Command.hh" |
@@ -227,10 +227,9 @@ Fluxbox::Fluxbox(int argc, char **argv, | |||
227 | const std::string& dpy_name, | 227 | const std::string& dpy_name, |
228 | const std::string& rc_path, const std::string& rc_filename, bool xsync) | 228 | const std::string& rc_path, const std::string& rc_filename, bool xsync) |
229 | : FbTk::App(dpy_name.c_str()), | 229 | : FbTk::App(dpy_name.c_str()), |
230 | m_l(new lua::state()), | ||
230 | m_fbatoms(FbAtoms::instance()), | 231 | m_fbatoms(FbAtoms::instance()), |
231 | m_resourcemanager("session", "Session", rc_filename.c_str(), true), | 232 | m_resourcemanager("session", *m_l), |
232 | // TODO: shouldn't need a separate one for screen | ||
233 | m_screen_rm(m_resourcemanager), | ||
234 | 233 | ||
235 | m_RC_PATH(rc_path), | 234 | m_RC_PATH(rc_path), |
236 | m_RC_INIT_FILE("init"), | 235 | m_RC_INIT_FILE("init"), |
@@ -396,9 +395,8 @@ Fluxbox::Fluxbox(int argc, char **argv, | |||
396 | // create screens | 395 | // create screens |
397 | for (size_t s = 0; s < screens.size(); s++) { | 396 | for (size_t s = 0; s < screens.size(); s++) { |
398 | std::string sc_nr = FbTk::StringUtil::number2String(screens[s]); | 397 | std::string sc_nr = FbTk::StringUtil::number2String(screens[s]); |
399 | BScreen *screen = new BScreen(m_screen_rm.lock(), | 398 | BScreen *screen = new BScreen(m_resourcemanager, |
400 | std::string("screen") + sc_nr, | 399 | std::string("screen") + sc_nr, |
401 | std::string("Screen") + sc_nr, | ||
402 | screens[s], ::ResourceLayer::NUM_LAYERS); | 400 | screens[s], ::ResourceLayer::NUM_LAYERS); |
403 | 401 | ||
404 | // already handled | 402 | // already handled |
@@ -440,20 +438,13 @@ Fluxbox::Fluxbox(int argc, char **argv, | |||
440 | 438 | ||
441 | m_reconfigure_wait = false; | 439 | m_reconfigure_wait = false; |
442 | 440 | ||
443 | m_resourcemanager.unlock(); | ||
444 | ungrab(); | 441 | ungrab(); |
445 | 442 | ||
446 | if (m_resourcemanager.lockDepth() != 0) { | ||
447 | fbdbg<<"--- resource manager lockdepth = "<<m_resourcemanager.lockDepth()<<endl; | ||
448 | } | ||
449 | |||
450 | m_starting = false; | 443 | m_starting = false; |
451 | // | 444 | // |
452 | // For dumping theme items | 445 | // For dumping theme items |
453 | // FbTk::ThemeManager::instance().listItems(); | 446 | // FbTk::ThemeManager::instance().listItems(); |
454 | // | 447 | // |
455 | // m_resourcemanager.dump(); | ||
456 | |||
457 | } | 448 | } |
458 | 449 | ||
459 | 450 | ||
@@ -1136,7 +1127,6 @@ void Fluxbox::save_rc() { | |||
1136 | 1127 | ||
1137 | if (!dbfile.empty()) { | 1128 | if (!dbfile.empty()) { |
1138 | m_resourcemanager.save(dbfile.c_str(), dbfile.c_str()); | 1129 | m_resourcemanager.save(dbfile.c_str(), dbfile.c_str()); |
1139 | m_screen_rm.save(dbfile.c_str(), dbfile.c_str()); | ||
1140 | } else | 1130 | } else |
1141 | cerr<<_FB_CONSOLETEXT(Fluxbox, BadRCFile, "rc filename is invalid!", "Bad settings file")<<endl; | 1131 | cerr<<_FB_CONSOLETEXT(Fluxbox, BadRCFile, "rc filename is invalid!", "Bad settings file")<<endl; |
1142 | 1132 | ||
@@ -1190,9 +1180,14 @@ string Fluxbox::getDefaultDataFilename(const char *name) const { | |||
1190 | /// loads resources | 1180 | /// loads resources |
1191 | void Fluxbox::load_rc() { | 1181 | void Fluxbox::load_rc() { |
1192 | _FB_USES_NLS; | 1182 | _FB_USES_NLS; |
1183 | lua::stack_sentry s(*m_l); | ||
1193 | 1184 | ||
1194 | string dbfile(getRcFilename()); | 1185 | string dbfile(getRcFilename()); |
1195 | 1186 | ||
1187 | m_l->loadfile(dbfile.c_str()); | ||
1188 | m_l->call(0, 0); | ||
1189 | |||
1190 | /* XXX | ||
1196 | if (!dbfile.empty()) { | 1191 | if (!dbfile.empty()) { |
1197 | if (!m_resourcemanager.load(dbfile.c_str())) { | 1192 | if (!m_resourcemanager.load(dbfile.c_str())) { |
1198 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; | 1193 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; |
@@ -1203,7 +1198,7 @@ void Fluxbox::load_rc() { | |||
1203 | } else { | 1198 | } else { |
1204 | if (!m_resourcemanager.load(DEFAULT_INITFILE)) | 1199 | if (!m_resourcemanager.load(DEFAULT_INITFILE)) |
1205 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl; | 1200 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl; |
1206 | } | 1201 | } */ |
1207 | 1202 | ||
1208 | if (m_rc_menufile->empty()) | 1203 | if (m_rc_menufile->empty()) |
1209 | m_rc_menufile.setDefaultValue(); | 1204 | m_rc_menufile.setDefaultValue(); |
@@ -1230,6 +1225,7 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1230 | 1225 | ||
1231 | XrmDatabaseHelper database; | 1226 | XrmDatabaseHelper database; |
1232 | 1227 | ||
1228 | // XXX make this a regular resource | ||
1233 | database = XrmGetFileDatabase(dbfile.c_str()); | 1229 | database = XrmGetFileDatabase(dbfile.c_str()); |
1234 | if (database==0) | 1230 | if (database==0) |
1235 | database = XrmGetFileDatabase(DEFAULT_INITFILE); | 1231 | database = XrmGetFileDatabase(DEFAULT_INITFILE); |
@@ -1264,18 +1260,6 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1264 | } | 1260 | } |
1265 | 1261 | ||
1266 | } | 1262 | } |
1267 | |||
1268 | if (!dbfile.empty()) { | ||
1269 | if (!m_screen_rm.load(dbfile.c_str())) { | ||
1270 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; | ||
1271 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFileTrying, "Retrying with", "Retrying rc file loading with (the following file)")<<": "<<DEFAULT_INITFILE<<endl; | ||
1272 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1273 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl; | ||
1274 | } | ||
1275 | } else { | ||
1276 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1277 | cerr<<_FB_CONSOLETEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl; | ||
1278 | } | ||
1279 | } | 1263 | } |
1280 | 1264 | ||
1281 | void Fluxbox::reconfigure() { | 1265 | void Fluxbox::reconfigure() { |