VirtualBox

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

Last change on this file since 14707 was 13580, checked in by vboxsync, 16 years ago

Ported s2 branch (r37120:38456).

  • 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-2008 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 /** Media type. */
109 enum MediaType
110 {
111 MediaType_Invalid,
112 MediaType_HardDisk,
113 MediaType_DVD,
114 MediaType_Floppy,
115 MediaType_All
116 };
117
118 /** VM display rendering mode. */
119 enum RenderMode
120 {
121 InvalidRenderMode, TimerMode, QImageMode, SDLMode, DDRAWMode, Quartz2DMode
122 };
123
124 /** Additional Qt event types. */
125 enum
126 {
127 AsyncEventType = QEvent::User + 100,
128 ResizeEventType,
129 RepaintEventType,
130 SetRegionEventType,
131 MouseCapabilityEventType,
132 MousePointerChangeEventType,
133 MachineStateChangeEventType,
134 AdditionsStateChangeEventType,
135 MediaDriveChangeEventType,
136 MachineDataChangeEventType,
137 MachineRegisteredEventType,
138 SessionStateChangeEventType,
139 SnapshotEventType,
140 CanShowRegDlgEventType,
141 NetworkAdapterChangeEventType,
142 USBCtlStateChangeEventType,
143 USBDeviceStateChangeEventType,
144 SharedFolderChangeEventType,
145 RuntimeErrorEventType,
146 ModifierKeyChangeEventType,
147 MediaEnumEventType,
148#if defined (Q_WS_WIN)
149 ShellExecuteEventType,
150#endif
151 ActivateMenuEventType,
152#if defined (Q_WS_MAC)
153 ShowWindowEventType,
154#endif
155 };
156
157 static const char* GUI_LastWindowPosition;
158 static const char* GUI_LastWindowPosition_Max;
159 static const char* GUI_Fullscreen;
160 static const char* GUI_Seamless;
161 static const char* GUI_AutoresizeGuest;
162 static const char* GUI_FirstRun;
163 static const char* GUI_SaveMountedAtRuntime;
164 static const char* GUI_LastCloseAction;
165 static const char* GUI_SuppressMessages;
166 static const char* GUI_PermanentSharedFoldersAtRuntime;
167#ifdef Q_WS_X11
168 static const char* GUI_LicenseKey;
169#endif
170 static const char* GUI_RegistrationDlgWinID;
171 static const char* GUI_RegistrationData;
172 static const char* GUI_LastVMSelected;
173 static const char* GUI_InfoDlgState;
174};
175
176#endif // __VBoxDefs_h__
177
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