changing the start (position) of a marker with a scene change needs to update the...
[ardour.git] / gtk2_ardour / main.cc
index 9c2036290ce5e0bcaa1646f910876b1c0465c295..5dd3695dc9036b9fdb0209c49b873b61b60e3cc2 100644 (file)
@@ -57,6 +57,9 @@
 
 #include "i18n.h"
 
+#ifdef COMPILER_MSVC
+#include <fcntl.h> // Needed for '_fmode'
+#endif
 
 using namespace std;
 using namespace Gtk;
@@ -138,9 +141,15 @@ sigpipe_handler (int /*signal*/)
        }
 }
 
-#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
@@ -148,13 +157,19 @@ extern int windows_vst_gui_init (int* argc, char** argv[]);
    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 */
@@ -167,10 +182,10 @@ int main (int argc, char *argv[])
        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
 
@@ -201,6 +216,16 @@ int main (int argc, char *argv[])
 #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);
        }
 
@@ -263,6 +288,6 @@ int main (int argc, char *argv[])
 
        return 0;
 }
-#ifdef LXVST_SUPPORT
+#if (defined WINDOWS_VST_SUPPORT && !defined PLATFORM_WINDOWS)
 } // end of extern "C" block
 #endif