improve XRC loading performance on Unix by avoiding MIME database loading

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-06-18 18:37:40 +00:00
parent 707dcbad73
commit 9f50431f18
6 changed files with 118 additions and 18 deletions

View File

@@ -28,6 +28,7 @@
#include "wx/wfstream.h"
#include "wx/utils.h"
#include "wx/hashset.h"
#include "wx/mimetype.h"
WX_DECLARE_HASH_SET(wxString, wxStringHash, wxStringEqual, StringSet);
@@ -607,6 +608,14 @@ _T("#include <wx/filesys.h>\n")
_T("#include <wx/fs_mem.h>\n")
_T("#include <wx/xrc/xmlres.h>\n")
_T("#include <wx/xrc/xh_all.h>\n")
_T("\n")
_T("#if wxCHECK_VERSION(2,8,5) && wxABI_VERSION >= 20805\n")
_T(" #define XRC_ADD_FILE(name, data, size, mime) \\\n")
_T(" wxMemoryFSHandler::AddFileWithMimeType(name, data, size, mime)\n")
_T("#else\n")
_T(" #define XRC_ADD_FILE(name, data, size, mime) \\\n")
_T(" wxMemoryFSHandler::AddFile(name, data, size)\n")
_T("#endif\n")
_T("\n"));
for (i = 0; i < flist.Count(); i++)
@@ -631,8 +640,21 @@ _T("\n"));
for (i = 0; i < flist.Count(); i++)
{
wxString s;
s.Printf(_T(" wxMemoryFSHandler::AddFile(wxT(\"XRC_resource/") + flist[i] +
_T("\"), xml_res_file_%i, xml_res_size_%i);\n"), i, i);
wxString mime;
wxString ext = wxFileName(flist[i]).GetExt();
if ( ext.Lower() == _T("xrc") )
mime = _T("text/xml");
else
{
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
if ( ft )
ft->GetMimeType(&mime);
}
s.Printf(_T(" XRC_ADD_FILE(wxT(\"XRC_resource/") + flist[i] +
_T("\"), xml_res_file_%i, xml_res_size_%i, _T(\"%s\"));\n"),
i, i, mime.c_str());
file.Write(s);
}