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:
@@ -45,9 +45,56 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
|||||||
if ( !wxAppBase::Initialize(argc, argv) )
|
if ( !wxAppBase::Initialize(argc, argv) )
|
||||||
return false;
|
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)) )
|
if ( !wxDfbCheckReturn(DirectFBInit(&argc, &argv)) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
#endif // Unicode/ANSI
|
||||||
|
|
||||||
// update internal arg[cv] as DFB may have removed processed options:
|
// update internal arg[cv] as DFB may have removed processed options:
|
||||||
this->argc = argc;
|
this->argc = argc;
|
||||||
this->argv = argv;
|
this->argv = argv;
|
||||||
|
Reference in New Issue
Block a user