]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appcmn.cpp
implemented fallback for AlphaBlend() for the systems not supporting it
[wxWidgets.git] / src / common / appcmn.cpp
index 11493d4ba968450a9de33880f6ebf6b9026c254e..25bda2572b28e387b86e76ed21dd6975ba0d7071 100644 (file)
@@ -377,10 +377,7 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
         wxTheme *theme = wxTheme::Create(themeName);
         if ( !theme )
         {
-#if wxUSE_LOG
             wxLogError(_("Unsupported theme '%s'."), themeName.c_str());
-#endif
-
             return FALSE;
         }
 
@@ -397,9 +394,7 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
         unsigned w, h, bpp;
         if ( wxSscanf(modeDesc.c_str(), _T("%ux%u-%u"), &w, &h, &bpp) != 3 )
         {
-#if wxUSE_LOG
             wxLogError(_("Invalid display mode specification '%s'."), modeDesc.c_str());
-#endif
             return FALSE;
         }
 
@@ -464,9 +459,7 @@ bool wxAppBase::CheckBuildOptions(const wxBuildOptions& opts)
         msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %d.%d (%s), and your program used %d.%d (%s)."),
                    verMaj, verMin, libDebug.c_str(), opts.m_verMaj, opts.m_verMin, progDebug.c_str());
         
-#if wxUSE_LOG
         wxLogFatalError(msg);
-#endif
 
         // normally wxLogFatalError doesn't return
         return FALSE;
@@ -555,12 +548,28 @@ void ShowAssertDialog(const wxChar *szFile,
         wxStrcat(szBuf, wxT("."));
     }
 
+#if wxUSE_THREADS
+    // if we are not in the main thread,
+    // output the assert directly and trap since dialogs cannot be displayed
+    if (!wxThread::IsMain()) {
+        wxStrcat(szBuf, wxT(" [in child thread]"));
+#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
+        wxStrcat(szBuf, wxT("\r\n"));
+        OutputDebugString(szBuf);
+#else
+        // send to stderr
+        wxFprintf(stderr, wxT("%s\n"), szBuf);
+        fflush(stderr);
+#endif
+        // He-e-e-e-elp!! we're asserting in a child thread
+        wxTrap();
+    }
+#endif // wxUSE_THREADS
+
     if ( !s_bNoAsserts )
     {
-#if wxUSE_LOG
         // send it to the normal log destination
         wxLogDebug(szBuf);
-#endif
 
 #if (wxUSE_GUI && wxUSE_MSGDLG) || defined(__WXMSW__)
         // this message is intentionally not translated - it is for