Mercurial > hg > svcore
diff system/Init.cpp @ 222:c7122e70f8ec
Fixes for Windows build
author | Chris Cannam |
---|---|
date | Thu, 25 Jan 2007 17:41:00 +0000 |
parents | f8cf055dbf34 |
children | dc46851837d6 |
line wrap: on
line diff
--- a/system/Init.cpp Thu Jan 25 15:55:12 2007 +0000 +++ b/system/Init.cpp Thu Jan 25 17:41:00 2007 +0000 @@ -1,92 +1,93 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Sonic Visualiser - An audio file viewer and annotation editor. - Centre for Digital Music, Queen Mary, University of London. - This file copyright 2006 Chris Cannam. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. See the file - COPYING included with this distribution for more information. -*/ - -#include <QApplication> -#include <QFont> - -#include <iostream> - -#ifdef Q_WS_X11 -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/Xatom.h> -#include <X11/SM/SMlib.h> - -static int handle_x11_error(Display *dpy, XErrorEvent *err) -{ - char errstr[256]; - XGetErrorText(dpy, err->error_code, errstr, 256); - if (err->error_code != BadWindow) { - std::cerr << "Sonic Visualiser: X Error: " - << errstr << " " << int(err->error_code) - << "\nin major opcode: " - << int(err->request_code) << std::endl; - } - return 0; -} -#endif - -#ifdef Q_WS_WIN32 - -#include <fcntl.h> - -// Set default file open mode to binary -#undef _fmode -int _fmode = _O_BINARY; - -void redirectStderr() -{ - HANDLE stderrHandle = GetStdHandle(STD_ERROR_HANDLE); - if (!stderrHandle) return; - - AllocConsole(); - - CONSOLE_SCREEN_BUFFER_INFO info; - GetConsoleScreenBufferInfo(stderrHandle, &info); - info.dwSize.Y = 1000; - SetConsoleScreenBufferSize(stderrHandle, info.dwSize); - - int h = _open_osfhandle((long)stderrHandle, _O_TEXT); - if (h) { - FILE *fd = _fdopen(h, "w"); - if (fd) { - *stderr = *fd; - setvbuf(stderr, NULL, _IONBF, 0); - } - } -} - -#endif - -extern void svSystemSpecificInitialisation() -{ -#ifdef Q_WS_X11 - XSetErrorHandler(handle_x11_error); -#endif - -#ifdef Q_WS_WIN32 - redirectStderr(); - QFont fn = qApp->font(); - fn.setFamily("Tahoma"); - qApp->setFont(fn); -#else -#ifdef Q_WS_X11 - QFont fn = qApp->font(); - fn.setPointSize(fn.pointSize() + 2); - qApp->setFont(fn); -#endif -#endif -} - +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2006 Chris Cannam. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include <QApplication> +#include <QFont> + +#include <iostream> + +#ifdef Q_WS_X11 +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xatom.h> +#include <X11/SM/SMlib.h> + +static int handle_x11_error(Display *dpy, XErrorEvent *err) +{ + char errstr[256]; + XGetErrorText(dpy, err->error_code, errstr, 256); + if (err->error_code != BadWindow) { + std::cerr << "Sonic Visualiser: X Error: " + << errstr << " " << int(err->error_code) + << "\nin major opcode: " + << int(err->request_code) << std::endl; + } + return 0; +} +#endif + +#ifdef Q_WS_WIN32 + +#include <fcntl.h> +#include <windows.h> + +// Set default file open mode to binary +//#undef _fmode +//int _fmode = _O_BINARY; + +void redirectStderr() +{ + HANDLE stderrHandle = GetStdHandle(STD_ERROR_HANDLE); + if (!stderrHandle) return; + + AllocConsole(); + + CONSOLE_SCREEN_BUFFER_INFO info; + GetConsoleScreenBufferInfo(stderrHandle, &info); + info.dwSize.Y = 1000; + SetConsoleScreenBufferSize(stderrHandle, info.dwSize); + + int h = _open_osfhandle((long)stderrHandle, _O_TEXT); + if (h) { + FILE *fd = _fdopen(h, "w"); + if (fd) { + *stderr = *fd; + setvbuf(stderr, NULL, _IONBF, 0); + } + } +} + +#endif + +extern void svSystemSpecificInitialisation() +{ +#ifdef Q_WS_X11 + XSetErrorHandler(handle_x11_error); +#endif + +#ifdef Q_WS_WIN32 + redirectStderr(); + QFont fn = qApp->font(); + fn.setFamily("Tahoma"); + qApp->setFont(fn); +#else +#ifdef Q_WS_X11 + QFont fn = qApp->font(); + fn.setPointSize(fn.pointSize() + 2); + qApp->setFont(fn); +#endif +#endif +} +