#include "i18n.h"
+#ifdef COMPILER_MSVC
+#include <fcntl.h> // Needed for '_fmode'
+#endif
using namespace std;
using namespace Gtk;
}
}
-#if (defined(LXVST_SUPPORT) || (defined(COMPILER_MSVC) && defined(NDEBUG) && !defined(RDC_BUILD)))
+#if (defined(COMPILER_MSVC) && defined(NDEBUG) && !defined(RDC_BUILD))
+/*
+ * Release build with MSVC uses ardour_main()
+ */
+int ardour_main (int argc, char *argv[])
+
+#elif (defined WINDOWS_VST_SUPPORT && !defined PLATFORM_WINDOWS)
-#ifdef LXVST_SUPPORT
+// prototype for function in windows_vst_plugin_ui.cc
extern int windows_vst_gui_init (int* argc, char** argv[]);
/* this is called from the entry point of a wine-compiled
as a shared library.
*/
extern "C" {
-#endif
+
int ardour_main (int argc, char *argv[])
#else
int main (int argc, char *argv[])
#endif
{
+#ifdef COMPILER_MSVC
+ // Essential!! Make sure that any files used by Ardour
+ // will be created or opened in BINARY mode!
+ _fmode = O_BINARY;
+#endif
+
fixup_bundle_environment (argc, argv, &localedir);
load_custom_fonts(); /* needs to happen before any gtk and pango init calls */
gtk_set_locale ();
#endif
-#ifdef LXVST_SUPPORT
- /* this does some magic that is needed to make GTK and Wine's own
- X11 client interact properly.
- */
+#if (defined WINDOWS_VST_SUPPORT && !defined PLATFORM_WINDOWS)
+ /* this does some magic that is needed to make GTK and X11 client interact properly.
+ * the platform dependent code is in windows_vst_plugin_ui.cc
+ */
windows_vst_gui_init (&argc, &argv);
#endif
#endif
if (parse_opts (argc, argv)) {
+#if (defined(COMPILER_MSVC) && defined(NDEBUG) && !defined(RDC_BUILD))
+ // Since we don't ordinarily have access to stdout and stderr with
+ // an MSVC app, let the user know we encountered a parsing error.
+ Gtk::Main app(&argc, &argv); // Calls 'gtk_init()'
+
+ Gtk::MessageDialog dlgReportParseError (_("\n Ardour could not understand your command line "),
+ false, MESSAGE_ERROR, BUTTONS_CLOSE, true);
+ dlgReportParseError.set_title (_("An error was encountered while launching Ardour"));
+ dlgReportParseError.run ();
+#endif
exit (1);
}
return 0;
}
-#ifdef LXVST_SUPPORT
+#if (defined WINDOWS_VST_SUPPORT && !defined PLATFORM_WINDOWS)
} // end of extern "C" block
#endif