Index: pingus_level_test.cxx
===================================================================
--- pingus_level_test.cxx	(revision 2451)
+++ pingus_level_test.cxx	(working copy)
@@ -30,7 +30,7 @@
   try
     {
       CL_SetupCore setup_core;
-      PingusLevel level = XMLPingusLevel("levelout.xml");
+      PingusLevel level = XMLPingusLevel("levelout.xml", "levelout.xml");
 
       std::cout << "Levelname:        " << level.get_levelname() << std::endl;
       std::cout << "Description:      " << level.get_description() << std::endl;
Index: plf_res_mgr.cxx
===================================================================
--- plf_res_mgr.cxx	(revision 2451)
+++ plf_res_mgr.cxx	(working copy)
@@ -40,7 +40,7 @@
     { // Entry not cached, so load it and add it to cache
       pout(PINGUS_DEBUG_LOADING) << "PLFResMgr: Loading level from DISK: '" << res_name << "' -> '" << filename << "'" << std::endl;
 
-      PingusLevel plf = XMLPingusLevel(filename);
+      PingusLevel plf = XMLPingusLevel(res_name, filename);
 
       PLFEntry entry;
 
@@ -61,7 +61,7 @@
           pout(PINGUS_DEBUG_LOADING) << "PLFResMgr: level changed on DISK, reloading: '" << res_name << "' -> '" << filename << "'" << std::endl;
 
           // Reload the file since it has changed on disk
-          PingusLevel plf = XMLPingusLevel(filename);
+          PingusLevel plf = XMLPingusLevel(res_name, filename);
 
           PLFEntry entry;
 
Index: theme.cxx
===================================================================
--- theme.cxx	(revision 2451)
+++ theme.cxx	(working copy)
@@ -325,7 +325,7 @@
 
       try
 	      {
-                XMLPingusLevel plf(filename);
+                XMLPingusLevel plf(filename, filename);
 	        levelnames.push_back(System::translate(plf.get_levelname()));
 	      }
 	    catch (PingusError& err)
Index: xml_pdf.cxx
===================================================================
--- xml_pdf.cxx	(revision 2451)
+++ xml_pdf.cxx	(working copy)
@@ -61,7 +61,8 @@
   if (levelname.empty())
     PingusError::raise("XMLPDF: No level given");
 
-  plf = XMLPingusLevel(path_manager.complete("levels/" + levelname + ".pingus"));
+  plf = XMLPingusLevel(path_manager.complete("levels/" + levelname + ".pingus"),
+                       path_manager.complete("levels/" + levelname + ".pingus"));
 
   std::cout << "XXXXXXXXX Read Demo file: " << std::endl;
   write_xml(std::cout);
Index: xml_pingus_level.cxx
===================================================================
--- xml_pingus_level.cxx	(revision 2451)
+++ xml_pingus_level.cxx	(working copy)
@@ -34,9 +34,10 @@
 
 namespace Pingus {
 
-XMLPingusLevel::XMLPingusLevel(const std::string& filename)
+XMLPingusLevel::XMLPingusLevel(const std::string& res_name,
+                               const std::string& filename)
 {
-  impl->resname = CL_String::get_filename(filename);
+  impl->resname = res_name;
 
   CL_InputSourceProvider_File provider(".");
   CL_DomDocument doc(provider.open_source(filename), true);
Index: xml_pingus_level.hxx
===================================================================
--- xml_pingus_level.hxx	(revision 2451)
+++ xml_pingus_level.hxx	(working copy)
@@ -29,7 +29,8 @@
 {
 private:
 public:
-  XMLPingusLevel(const std::string& filename);
+  XMLPingusLevel(const std::string& res_name,
+                 const std::string& filename);
 };
 
 } // namespace Pingus
