Move the preprocessor directive GTKMM_ATKMM_ENABLED so it'll get #defined at an earli...
authorJohn Emmas <johne53@tiscali.co.uk>
Mon, 23 Nov 2015 16:28:43 +0000 (16:28 +0000)
committerJohn Emmas <johne53@tiscali.co.uk>
Wed, 23 Dec 2015 15:09:16 +0000 (15:09 +0000)
When building any program that uses Gtkmm (with Atkmm support) ALL modules need to agree about the status of GTKMM_ATKMM_ENABLED. Otherwise 'Gtk::Widget' can have different sizes in different modules. If that happens we can end up with all manner of inexplicable run-time crashes and hangs.

GTKMM_ATKMM_ENABLED gets #defined in 'gtkmmconfig.h'. So let's #include that file at the earliest possible opportunity (where we know it'll then have a consistent value for every compilation unit).

msvc_extra_headers/ardourext/sys/targetsxs.h.input

index 6569407ac8511455ccd702f93acc5e56bcbfd4fb..24d1b29ab38fae6a503e4594766a632a3f2b45e2 100644 (file)
@@ -64,6 +64,15 @@ __declspec(selectany) int _forceAtlDllManifestRTM;
    implementation for commonly used integer types. */
 #include <stdint.h>
 
+/* When building Gtkmm with Atkmm support, ALL modules need
+   to agree about the status of GTKMM_ATKMM_ENABLED. Otherwise
+   we end up with all manner of imexplicable run time crashes
+   and hangs (due to Gtk::Widget having different sizes in
+   different modules). GTKMM_ATKMM_ENABLED gets #defined in
+   'gtkmmconfig.h'. So let's #include that file here, where
+   we know it'll get #included for every compilation unit. */
+#include <gtkmmconfig.h>
+
 #if defined(_MSC_VER) && !defined(__MINGW__) && !defined(__MINGW32__)
 /* Define these libraries as getting built as DLLs */
 #define LIBAUDIOGRAPHER_DLL