diff --git a/ChangeLog b/ChangeLog index f8a4370b9a..8ecd5219cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-08-07 Tor Lillqvist + + * app/main.c: Code built by the still unstable mingw-w64 toolchain + gets bogus argc and argv when built as subsystem:windows, so use + __argc and __argv instead, which seem to be OK. + + * libgimp/gimp.h: Similar change here. + 2008-08-07 Sven Neumann * app/base/tile-manager.c (tile_manager_invalidate_tile): fixed diff --git a/app/main.c b/app/main.c index 2f3a2f0639..ec0da139e2 100644 --- a/app/main.c +++ b/app/main.c @@ -278,6 +278,16 @@ main (int argc, gchar *basename; gint i; +#if defined (__GNUC__) && defined (_WIN64) + /* mingw-w64, at least the unstable build from late July 2008, + * starts subsystem:windows programs in main(), but passes them + * bogus argc and argv. __argc and __argv are OK, though, so just + * use them. + */ + argc = __argc; + argv = __argv; +#endif + g_thread_init (NULL); #ifdef GIMP_UNSTABLE @@ -421,7 +431,11 @@ main (int argc, #ifdef G_OS_WIN32 -/* In case we build this as a windowed application. Well, we do. */ +/* Provide WinMain in case we build GIMP as a subsystem:windows + * application. Well, we do. When built with mingw, though, user code + * execution still starts in main() in that case. So WinMain() gets + * used on MSVC builds only. + */ #ifdef __GNUC__ # ifndef _stdcall diff --git a/libgimp/gimp.h b/libgimp/gimp.h index 42605ec5cf..489576eca0 100644 --- a/libgimp/gimp.h +++ b/libgimp/gimp.h @@ -199,7 +199,10 @@ struct _GimpParam int \ main (int argc, char *argv[]) \ { \ - return gimp_main (&PLUG_IN_INFO, argc, argv); \ + /* Use __argc and __argv here, too, as they work \ + * better with mingw-w64. \ + */ \ + return gimp_main (&PLUG_IN_INFO, __argc, __argv); \ } #else # define MAIN() \