diff options
Diffstat (limited to 'src/FbTk/Resource.cc')
-rw-r--r-- | src/FbTk/Resource.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/FbTk/Resource.cc b/src/FbTk/Resource.cc index 4be85de..85e78da 100644 --- a/src/FbTk/Resource.cc +++ b/src/FbTk/Resource.cc | |||
@@ -226,4 +226,33 @@ void ResourceManager::unlock() { | |||
226 | } | 226 | } |
227 | } | 227 | } |
228 | 228 | ||
229 | // add the resource and load its value | ||
230 | void ResourceManager::addResource(Resource_base &r) { | ||
231 | m_resourcelist.push_back(&r); | ||
232 | m_resourcelist.unique(); | ||
233 | |||
234 | // lock ensures that the database is loaded. | ||
235 | lock(); | ||
236 | |||
237 | if (m_database == 0) { | ||
238 | unlock(); | ||
239 | return; | ||
240 | } | ||
241 | |||
242 | XrmValue value; | ||
243 | char *value_type; | ||
244 | |||
245 | // now, load the value for this resource | ||
246 | if (XrmGetResource(**m_database, r.name().c_str(), | ||
247 | r.altName().c_str(), &value_type, &value)) { | ||
248 | r.setFromString(value.addr); | ||
249 | } else { | ||
250 | std::cerr<<"Failed to read: "<<r.name()<<std::endl; | ||
251 | std::cerr<<"Setting default value"<<std::endl; | ||
252 | r.setDefaultValue(); | ||
253 | } | ||
254 | |||
255 | unlock(); | ||
256 | } | ||
257 | |||
229 | } // end namespace FbTk | 258 | } // end namespace FbTk |