annotate main/systeminit.cpp @ 0:cd5d7ff8ef38

* Reorganising code base. This revision will not compile.
author Chris Cannam
date Mon, 31 Jul 2006 12:03:45 +0000
parents
children
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 Sonic Visualiser
Chris@0 5 An audio file viewer and annotation editor.
Chris@0 6 Centre for Digital Music, Queen Mary, University of London.
Chris@0 7 This file copyright 2006 Chris Cannam.
Chris@0 8
Chris@0 9 This program is free software; you can redistribute it and/or
Chris@0 10 modify it under the terms of the GNU General Public License as
Chris@0 11 published by the Free Software Foundation; either version 2 of the
Chris@0 12 License, or (at your option) any later version. See the file
Chris@0 13 COPYING included with this distribution for more information.
Chris@0 14 */
Chris@0 15
Chris@0 16 #include <QApplication>
Chris@0 17 #include <QFont>
Chris@0 18
Chris@0 19 #include <iostream>
Chris@0 20
Chris@0 21 #ifdef Q_WS_X11
Chris@0 22 #include <X11/Xlib.h>
Chris@0 23 #include <X11/Xutil.h>
Chris@0 24 #include <X11/Xatom.h>
Chris@0 25 #include <X11/SM/SMlib.h>
Chris@0 26
Chris@0 27 static int handle_x11_error(Display *dpy, XErrorEvent *err)
Chris@0 28 {
Chris@0 29 char errstr[256];
Chris@0 30 XGetErrorText(dpy, err->error_code, errstr, 256);
Chris@0 31 if (err->error_code != BadWindow) {
Chris@0 32 std::cerr << "waveform: X Error: "
Chris@0 33 << errstr << " " << int(err->error_code)
Chris@0 34 << "\nin major opcode: "
Chris@0 35 << int(err->request_code) << std::endl;
Chris@0 36 }
Chris@0 37 return 0;
Chris@0 38 }
Chris@0 39 #endif
Chris@0 40
Chris@0 41 #ifdef Q_WS_WIN32
Chris@0 42
Chris@0 43 #include <fcntl.h>
Chris@0 44
Chris@0 45 // Set default file open mode to binary
Chris@0 46 #undef _fmode
Chris@0 47 int _fmode = _O_BINARY;
Chris@0 48
Chris@0 49 void redirectStderr()
Chris@0 50 {
Chris@0 51 HANDLE stderrHandle = GetStdHandle(STD_ERROR_HANDLE);
Chris@0 52 if (!stderrHandle) return;
Chris@0 53
Chris@0 54 AllocConsole();
Chris@0 55
Chris@0 56 CONSOLE_SCREEN_BUFFER_INFO info;
Chris@0 57 GetConsoleScreenBufferInfo(stderrHandle, &info);
Chris@0 58 info.dwSize.Y = 1000;
Chris@0 59 SetConsoleScreenBufferSize(stderrHandle, info.dwSize);
Chris@0 60
Chris@0 61 int h = _open_osfhandle((long)stderrHandle, _O_TEXT);
Chris@0 62 if (h) {
Chris@0 63 FILE *fd = _fdopen(h, "w");
Chris@0 64 if (fd) {
Chris@0 65 *stderr = *fd;
Chris@0 66 setvbuf(stderr, NULL, _IONBF, 0);
Chris@0 67 }
Chris@0 68 }
Chris@0 69 }
Chris@0 70
Chris@0 71 #endif
Chris@0 72
Chris@0 73 extern void svSystemSpecificInitialisation()
Chris@0 74 {
Chris@0 75 #ifdef Q_WS_X11
Chris@0 76 XSetErrorHandler(handle_x11_error);
Chris@0 77 #endif
Chris@0 78
Chris@0 79 #ifdef Q_WS_WIN32
Chris@0 80 redirectStderr();
Chris@0 81 QFont fn = qApp->font();
Chris@0 82 fn.setFamily("Tahoma");
Chris@0 83 qApp->setFont(fn);
Chris@0 84 #else
Chris@0 85 #ifdef Q_WS_X11
Chris@0 86 QFont fn = qApp->font();
Chris@0 87 fn.setPointSize(fn.pointSize() + 2);
Chris@0 88 qApp->setFont(fn);
Chris@0 89 #endif
Chris@0 90 #endif
Chris@0 91 }
Chris@0 92