annotate system/Init.cpp @ 1879:652c5360e682

Ensure transforms are populated before instantiateDefaultPluginFor runs - otherwise if we have prior knowledge of a transform id, we can find ourselves trying to instantiate it before the plugin factory has heard of it and e.g. knows which server to use
author Chris Cannam
date Thu, 25 Jun 2020 12:20:06 +0100
parents a090221caeda
children
rev   line source
Chris@404 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@404 2
Chris@404 3 /*
Chris@404 4 Sonic Visualiser
Chris@404 5 An audio file viewer and annotation editor.
Chris@404 6 Centre for Digital Music, Queen Mary, University of London.
Chris@404 7 This file copyright 2006 Chris Cannam.
Chris@404 8
Chris@404 9 This program is free software; you can redistribute it and/or
Chris@404 10 modify it under the terms of the GNU General Public License as
Chris@404 11 published by the Free Software Foundation; either version 2 of the
Chris@404 12 License, or (at your option) any later version. See the file
Chris@404 13 COPYING included with this distribution for more information.
Chris@404 14 */
Chris@404 15
Chris@404 16 #include <iostream>
Chris@404 17
Chris@658 18 #include <qglobal.h>
Chris@658 19
Chris@842 20 #ifdef Q_OS_WIN32
Chris@404 21
Chris@404 22 #include <fcntl.h>
Chris@658 23
Chris@658 24 // required for SetDllDirectory
Chris@658 25 #define _WIN32_WINNT 0x0502
Chris@404 26 #include <windows.h>
Chris@404 27
Chris@404 28 // Set default file open mode to binary
Chris@404 29 //#undef _fmode
Chris@404 30 //int _fmode = _O_BINARY;
Chris@404 31
Chris@404 32 void redirectStderr()
Chris@404 33 {
Chris@658 34 #ifdef NO_PROBABLY_NOT
Chris@404 35 HANDLE stderrHandle = GetStdHandle(STD_ERROR_HANDLE);
Chris@404 36 if (!stderrHandle) return;
Chris@404 37
Chris@404 38 AllocConsole();
Chris@404 39
Chris@404 40 CONSOLE_SCREEN_BUFFER_INFO info;
Chris@404 41 GetConsoleScreenBufferInfo(stderrHandle, &info);
Chris@404 42 info.dwSize.Y = 1000;
Chris@404 43 SetConsoleScreenBufferSize(stderrHandle, info.dwSize);
Chris@404 44
Chris@404 45 int h = _open_osfhandle((long)stderrHandle, _O_TEXT);
Chris@404 46 if (h) {
Chris@404 47 FILE *fd = _fdopen(h, "w");
Chris@404 48 if (fd) {
Chris@404 49 *stderr = *fd;
Chris@404 50 setvbuf(stderr, NULL, _IONBF, 0);
Chris@404 51 }
Chris@404 52 }
Chris@658 53 #endif
Chris@404 54 }
Chris@404 55
Chris@404 56 #endif
Chris@404 57
Chris@404 58 extern void svSystemSpecificInitialisation()
Chris@404 59 {
Chris@842 60 #ifdef Q_OS_WIN32
Chris@404 61 redirectStderr();
Chris@658 62
Chris@658 63 // Remove the CWD from the DLL search path, just in case
Chris@658 64 SetDllDirectory(L"");
Chris@658 65 putenv("PATH=");
Chris@1601 66
Chris@1601 67 // Some older versions of MinGW require this in order to get
Chris@1601 68 // C99/POSIX-standard behaviour for (s)printf formatting
Chris@1601 69 putenv("PRINTF_EXPONENT_DIGITS=2");
Chris@404 70 #else
Chris@404 71 #endif
Chris@404 72 }
Chris@404 73