lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: #include "System.h" lbajardsilogic@0: lbajardsilogic@0: #ifdef Q_WS_X11 lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: static int handle_x11_error(Display *dpy, XErrorEvent *err) lbajardsilogic@0: { lbajardsilogic@0: char errstr[256]; lbajardsilogic@0: XGetErrorText(dpy, err->error_code, errstr, 256); lbajardsilogic@0: if (err->error_code != BadWindow) { lbajardsilogic@41: std::cerr << "Sound Access: X Error: " lbajardsilogic@0: << errstr << " " << int(err->error_code) lbajardsilogic@0: << "\nin major opcode: " lbajardsilogic@0: << int(err->request_code) << std::endl; lbajardsilogic@0: } lbajardsilogic@0: return 0; lbajardsilogic@0: } lbajardsilogic@0: #endif lbajardsilogic@0: lbajardsilogic@0: #ifdef Q_WS_WIN32 lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: // Set default file open mode to binary lbajardsilogic@0: //#undef _fmode lbajardsilogic@0: //int _fmode = _O_BINARY; lbajardsilogic@0: lbajardsilogic@0: void redirectStderr() lbajardsilogic@0: { lbajardsilogic@37: AllocConsole(); lbajardsilogic@37: lbajardsilogic@37: HANDLE stderrHandle = GetStdHandle(STD_ERROR_HANDLE); lbajardsilogic@0: if (!stderrHandle) return; lbajardsilogic@0: lbajardsilogic@0: CONSOLE_SCREEN_BUFFER_INFO info; lbajardsilogic@0: GetConsoleScreenBufferInfo(stderrHandle, &info); lbajardsilogic@0: info.dwSize.Y = 1000; lbajardsilogic@0: SetConsoleScreenBufferSize(stderrHandle, info.dwSize); lbajardsilogic@0: lbajardsilogic@0: int h = _open_osfhandle((long)stderrHandle, _O_TEXT); lbajardsilogic@0: if (h) { lbajardsilogic@0: FILE *fd = _fdopen(h, "w"); lbajardsilogic@0: if (fd) { lbajardsilogic@0: *stderr = *fd; lbajardsilogic@0: setvbuf(stderr, NULL, _IONBF, 0); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: lbajardsilogic@63: extern void svSystemSpecificInitialisation(bool redirect) lbajardsilogic@0: { lbajardsilogic@0: #ifdef Q_WS_X11 lbajardsilogic@0: XSetErrorHandler(handle_x11_error); lbajardsilogic@0: #endif lbajardsilogic@0: lbajardsilogic@0: #ifdef Q_WS_WIN32 lbajardsilogic@63: if (redirect) lbajardsilogic@63: redirectStderr(); lbajardsilogic@0: QFont fn = qApp->font(); lbajardsilogic@0: fn.setFamily("Tahoma"); lbajardsilogic@0: qApp->setFont(fn); lbajardsilogic@0: #else lbajardsilogic@0: #ifdef Q_WS_X11 lbajardsilogic@0: QFont fn = qApp->font(); lbajardsilogic@0: fn.setPointSize(fn.pointSize() + 2); lbajardsilogic@0: qApp->setFont(fn); lbajardsilogic@0: #endif lbajardsilogic@0: #endif lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: