VirtualBox

source: vbox/trunk/src/VBox/Frontends/VirtualBox/include/VBoxDefs.h@ 13374

Last change on this file since 13374 was 12627, checked in by vboxsync, 16 years ago

FE/Qt: reduce the number of dependencies to iprt/asm.h

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.7 KB
Line 
1/** @file
2 *
3 * VBox frontends: Qt GUI ("VirtualBox"):
4 * Header with common definitions and global functions
5 */
6
7/*
8 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 *
18 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19 * Clara, CA 95054 USA or visit http://www.sun.com if you need
20 * additional information or have any questions.
21 */
22
23#ifndef __VBoxDefs_h__
24#define __VBoxDefs_h__
25
26#include <qevent.h>
27
28#define LOG_GROUP LOG_GROUP_GUI
29#include <VBox/log.h>
30#include <iprt/assert.h>
31#include <iprt/alloc.h>
32
33#ifdef VBOX_GUI_DEBUG
34
35#define AssertWrapperOk(w) \
36 AssertMsg (w.isOk(), (#w " is not okay (RC=0x%08X)", w.lastRC()))
37#define AssertWrapperOkMsg(w, m) \
38 AssertMsg (w.isOk(), (#w ": " m " (RC=0x%08X)", w.lastRC()))
39
40#else // !VBOX_GUI_DEBUG
41
42#define AssertWrapperOk(w) do {} while (0)
43#define AssertWrapperOkMsg(w, m) do {} while (0)
44
45#endif // !VBOX_GUI_DEBUG
46
47#ifndef SIZEOF_ARRAY
48#define SIZEOF_ARRAY(a) (sizeof(a) / sizeof(a[0]))
49#endif
50
51#if defined (VBOX_GUI_USE_QIMAGE) || \
52 defined (VBOX_GUI_USE_SDL) || \
53 defined (VBOX_GUI_USE_DDRAW)
54 #if !defined (VBOX_GUI_USE_EXT_FRAMEBUFFER)
55 #define VBOX_GUI_USE_EXT_FRAMEBUFFER
56 #endif
57#else
58 #if defined (VBOX_GUI_USE_EXT_FRAMEBUFFER)
59 #undef VBOX_GUI_USE_EXT_FRAMEBUFFER
60 #endif
61#endif
62
63/////////////////////////////////////////////////////////////////////////////
64
65#if defined (VBOX_GUI_DEBUG)
66
67#include <VBox/types.h> // for uint64_t type
68
69#include <qthread.h>
70#include <qdatetime.h>
71
72/**
73 * A class to measure intervals using rdtsc instruction.
74 */
75class VMCPUTimer : public QThread // for crossplatform msleep()
76{
77public:
78 static uint64_t ticks();
79 inline static uint64_t msecs( uint64_t tcks ) {
80 return tcks / ticks_per_msec;
81 }
82 inline static uint64_t msecsSince( uint64_t tcks ) {
83 tcks = ticks() - tcks;
84 return tcks / ticks_per_msec;
85 }
86 inline static void calibrate( int ms )
87 {
88 QTime t;
89 uint64_t tcks = ticks();
90 t.start();
91 msleep( ms );
92 tcks = ticks() - tcks;
93 int msecs = t.elapsed();
94 ticks_per_msec = tcks / msecs;
95 }
96 inline static uint64_t ticksPerMsec() {
97 return ticks_per_msec;
98 }
99private:
100 static uint64_t ticks_per_msec;
101};
102
103#endif // VBOX_GUI_DEBUG
104
105/* A common namespace for all enums */
106struct VBoxDefs
107{
108 /** Disk image type. */
109 enum DiskType { InvalidType, HD = 0x01, CD = 0x02, FD = 0x04 };
110
111 /** VM display rendering mode. */
112 enum RenderMode
113 {
114 InvalidRenderMode, TimerMode, QImageMode, SDLMode, DDRAWMode, Quartz2DMode
115 };
116
117 /** Additional Qt event types. */
118 enum
119 {
120 AsyncEventType = QEvent::User + 100,
121 ResizeEventType,
122 RepaintEventType,
123 SetRegionEventType,
124 MouseCapabilityEventType,
125 MousePointerChangeEventType,
126 MachineStateChangeEventType,
127 AdditionsStateChangeEventType,
128 MediaChangeEventType,
129 MachineDataChangeEventType,
130 MachineRegisteredEventType,
131 SessionStateChangeEventType,
132 SnapshotEventType,
133 CanShowRegDlgEventType,
134 NetworkAdapterChangeEventType,
135 USBCtlStateChangeEventType,
136 USBDeviceStateChangeEventType,
137 SharedFolderChangeEventType,
138 RuntimeErrorEventType,
139 ModifierKeyChangeEventType,
140 EnumerateMediaEventType,
141#if defined (Q_WS_WIN)
142 ShellExecuteEventType,
143#endif
144 ActivateMenuEventType,
145#if defined (Q_WS_MAC)
146 ShowWindowEventType,
147#endif
148 };
149
150 static const char* GUI_LastWindowPosition;
151 static const char* GUI_LastWindowPosition_Max;
152 static const char* GUI_Fullscreen;
153 static const char* GUI_Seamless;
154 static const char* GUI_AutoresizeGuest;
155 static const char* GUI_FirstRun;
156 static const char* GUI_SaveMountedAtRuntime;
157 static const char* GUI_LastCloseAction;
158 static const char* GUI_SuppressMessages;
159 static const char* GUI_PermanentSharedFoldersAtRuntime;
160#ifdef Q_WS_X11
161 static const char* GUI_LicenseKey;
162#endif
163 static const char* GUI_RegistrationDlgWinID;
164 static const char* GUI_RegistrationData;
165 static const char* GUI_LastVMSelected;
166 static const char* GUI_InfoDlgState;
167};
168
169#endif // __VBoxDefs_h__
170
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette