// Release lock again
gdk_threads_leave();
-
+
{
// If another idle source was added, remove it
#if wxUSE_THREADS
extern "C" {
static gint wxapp_poll_func( GPollFD *ufds, guint nfds, gint timeout )
{
+ gdk_threads_enter();
+
+ wxMutexGuiLeave();
g_mainThreadLocked = true;
gint res = (*wxgs_poll_func)(ufds, nfds, timeout);
+ wxMutexGuiEnter();
g_mainThreadLocked = false;
+ gdk_threads_leave();
+
return res;
}
}
bool wxApp::Initialize(int& argc, wxChar **argv)
{
- bool init_result;
+ if ( !wxAppBase::Initialize(argc, argv) )
+ return false;
#if wxUSE_THREADS
if (!g_thread_supported())
g_thread_init(NULL);
- gdk_threads_init();
wxgs_poll_func = g_main_context_get_poll_func(NULL);
g_main_context_set_poll_func(NULL, wxapp_poll_func);
#endif // wxUSE_THREADS
- gtk_set_locale();
-
// We should have the wxUSE_WCHAR_T test on the _outside_
#if wxUSE_WCHAR_T
// gtk+ 2.0 supports Unicode through UTF-8 strings
static wxConvBrokenFileNames fileconv(encName);
wxConvFileName = &fileconv;
+
+ bool init_result;
+
#if wxUSE_UNICODE
// gtk_init() wants UTF-8, not wchar_t, so convert
int i;
{
while ( strcmp(wxConvUTF8.cWX2MB(argv[i]), argvGTK[i]) != 0 )
{
- memmove(argv + i, argv + i + 1, argc - i);
+ memmove(argv + i, argv + i + 1, (argc - i)*sizeof(*argv));
}
}
// we can not enter threads before gtk_init is done
gdk_threads_enter();
- if ( !wxAppBase::Initialize(argc, argv) )
- {
- gdk_threads_leave();
-
- return false;
- }
-
wxSetDetectableAutoRepeat( true );
#if wxUSE_INTL
wxAddEmissionHook();
}
}
-
-#if wxUSE_THREADS
-void wxMutexGuiEnter()
-{
- gdk_threads_enter();
-}
-
-void wxMutexGuiLeave()
-{
- gdk_threads_leave();
-}
-#endif