temporary fix for wxDFB compilation in Unicode mode

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2007-05-09 16:48:11 +00:00
parent 371bc2f714
commit b11af9ed9d

View File

@ -45,9 +45,56 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
if ( !wxAppBase::Initialize(argc, argv) )
return false;
// FIXME-UTF8: This code is taken from wxGTK and duplicated here. This
// is just a temporary fix to make wxDFB compile in Unicode
// build, the real fix is to change Initialize()'s signature
// to use char* on Unix.
#if wxUSE_UNICODE
// DirectFBInit() wants UTF-8, not wchar_t, so convert
int i;
char **argvDFB = new char *[argc + 1];
for ( i = 0; i < argc; i++ )
{
argvDFB[i] = strdup(wxConvUTF8.cWX2MB(argv[i]));
}
argvDFB[argc] = NULL;
int argcDFB = argc;
if ( !wxDfbCheckReturn(DirectFBInit(&argcDFB, &argvDFB)) )
return false;
if ( argcDFB != argc )
{
// we have to drop the parameters which were consumed by DFB+
for ( i = 0; i < argcDFB; i++ )
{
while ( strcmp(wxConvUTF8.cWX2MB(argv[i]), argvDFB[i]) != 0 )
{
memmove(argv + i, argv + i + 1, (argc - i)*sizeof(*argv));
}
}
argc = argcDFB;
}
//else: DirectFBInit() didn't modify our parameters
// free our copy
for ( i = 0; i < argcDFB; i++ )
{
free(argvDFB[i]);
}
delete [] argvDFB;
#else // ANSI
if ( !wxDfbCheckReturn(DirectFBInit(&argc, &argv)) )
return false;
#endif // Unicode/ANSI
// update internal arg[cv] as DFB may have removed processed options:
this->argc = argc;
this->argv = argv;