1706f2543Smrg
2706f2543Smrg/*
3706f2543Smrg * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
4706f2543Smrg *
5706f2543Smrg * Permission is hereby granted, free of charge, to any person obtaining a
6706f2543Smrg * copy of this software and associated documentation files (the "Software"),
7706f2543Smrg * to deal in the Software without restriction, including without limitation
8706f2543Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9706f2543Smrg * and/or sell copies of the Software, and to permit persons to whom the
10706f2543Smrg * Software is furnished to do so, subject to the following conditions:
11706f2543Smrg *
12706f2543Smrg * The above copyright notice and this permission notice shall be included in
13706f2543Smrg * all copies or substantial portions of the Software.
14706f2543Smrg *
15706f2543Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16706f2543Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17706f2543Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18706f2543Smrg * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19706f2543Smrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20706f2543Smrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21706f2543Smrg * OTHER DEALINGS IN THE SOFTWARE.
22706f2543Smrg *
23706f2543Smrg * Except as contained in this notice, the name of the copyright holder(s)
24706f2543Smrg * and author(s) shall not be used in advertising or otherwise to promote
25706f2543Smrg * the sale, use or other dealings in this Software without prior written
26706f2543Smrg * authorization from the copyright holder(s) and author(s).
27706f2543Smrg */
28706f2543Smrg
29706f2543Smrg/*
30706f2543Smrg * This file contains all the XFree86 global variables.
31706f2543Smrg */
32706f2543Smrg
33706f2543Smrg#ifdef HAVE_XORG_CONFIG_H
34706f2543Smrg#include <xorg-config.h>
35706f2543Smrg#endif
36706f2543Smrg
37706f2543Smrg#include <X11/X.h>
38706f2543Smrg#include "os.h"
39706f2543Smrg#include "windowstr.h"
40706f2543Smrg#include "propertyst.h"
41706f2543Smrg#include "xf86.h"
42706f2543Smrg#include "xf86Priv.h"
43706f2543Smrg#include "xf86Parser.h"
44706f2543Smrg#include "xf86Xinput.h"
45706f2543Smrg#include "xf86InPriv.h"
46706f2543Smrg#include "xf86Config.h"
47706f2543Smrg
48706f2543Smrg/* Globals that video drivers may access */
49706f2543Smrg
50706f2543SmrgDevPrivateKeyRec xf86CreateRootWindowKeyRec;
51706f2543SmrgDevPrivateKeyRec xf86ScreenKeyRec;
52706f2543Smrg
53706f2543SmrgScrnInfoPtr *xf86Screens = NULL;	/* List of ScrnInfos */
54706f2543Smrgconst unsigned char byte_reversed[256] =
55706f2543Smrg{
56706f2543Smrg    0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
57706f2543Smrg    0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
58706f2543Smrg    0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
59706f2543Smrg    0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
60706f2543Smrg    0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
61706f2543Smrg    0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
62706f2543Smrg    0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
63706f2543Smrg    0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
64706f2543Smrg    0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
65706f2543Smrg    0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
66706f2543Smrg    0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
67706f2543Smrg    0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
68706f2543Smrg    0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
69706f2543Smrg    0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
70706f2543Smrg    0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
71706f2543Smrg    0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
72706f2543Smrg    0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
73706f2543Smrg    0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
74706f2543Smrg    0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
75706f2543Smrg    0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
76706f2543Smrg    0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
77706f2543Smrg    0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
78706f2543Smrg    0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
79706f2543Smrg    0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
80706f2543Smrg    0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
81706f2543Smrg    0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
82706f2543Smrg    0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
83706f2543Smrg    0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
84706f2543Smrg    0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
85706f2543Smrg    0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
86706f2543Smrg    0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
87706f2543Smrg    0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
88706f2543Smrg};
89706f2543Smrg
90706f2543Smrg/* Globals that input drivers may access */
91706f2543SmrgInputInfoPtr xf86InputDevs = NULL;
92706f2543Smrg
93706f2543Smrg
94706f2543Smrg/* Globals that video drivers may not access */
95706f2543Smrg
96706f2543Smrgxf86InfoRec xf86Info = {
97706f2543Smrg    .consoleFd                  = -1,
98706f2543Smrg    .vtno                       = -1,
99706f2543Smrg    .vtSysreq                   = FALSE,
100706f2543Smrg    .lastEventTime              = -1,
101706f2543Smrg    .vtRequestsPending          = FALSE,
102706f2543Smrg#ifdef sun
103706f2543Smrg    .vtPendingNum               = -1,
104706f2543Smrg#endif
105706f2543Smrg    .dontVTSwitch               = FALSE,
106706f2543Smrg    .dontZap                    = FALSE,
107706f2543Smrg    .dontZoom                   = FALSE,
108706f2543Smrg    .notrapSignals              = FALSE,
109706f2543Smrg    .caughtSignal               = FALSE,
110706f2543Smrg    .currentScreen              = NULL,
111706f2543Smrg#ifdef CSRG_BASED
112706f2543Smrg    .screenFd                   = -1,
113706f2543Smrg    .consType                   = -1,
114706f2543Smrg#endif
115706f2543Smrg    .allowMouseOpenFail         = FALSE,
116706f2543Smrg    .vidModeEnabled             = TRUE,
117706f2543Smrg    .vidModeAllowNonLocal       = FALSE,
118706f2543Smrg    .miscModInDevEnabled        = TRUE,
119706f2543Smrg    .miscModInDevAllowNonLocal  = FALSE,
120706f2543Smrg    .pixmap24                   = Pix24DontCare,
121706f2543Smrg    .pix24From                  = X_DEFAULT,
122706f2543Smrg#ifdef SUPPORT_PC98
123706f2543Smrg    .pc98                       = FALSE,
124706f2543Smrg#endif
125706f2543Smrg    .pmFlag                     = TRUE,
126706f2543Smrg    .log                        = LogNone,
127706f2543Smrg    .disableRandR               = FALSE,
128706f2543Smrg    .randRFrom                  = X_DEFAULT,
129706f2543Smrg#if defined(CONFIG_HAL) || defined(CONFIG_UDEV)
130706f2543Smrg    .forceInputDevices          = FALSE,
131706f2543Smrg    .autoAddDevices             = TRUE,
132706f2543Smrg    .autoEnableDevices          = TRUE
133706f2543Smrg#else
134706f2543Smrg    .forceInputDevices          = TRUE,
135706f2543Smrg    .autoAddDevices             = FALSE,
136706f2543Smrg    .autoEnableDevices          = FALSE
137706f2543Smrg#endif
138706f2543Smrg};
139706f2543Smrgconst char *xf86ConfigFile = NULL;
140706f2543Smrgconst char *xf86ConfigDir = NULL;
141706f2543Smrgconst char *xf86ModulePath = DEFAULT_MODULE_PATH;
142706f2543SmrgMessageType xf86ModPathFrom = X_DEFAULT;
143706f2543Smrgconst char *xf86LogFile = DEFAULT_LOGPREFIX;
144706f2543SmrgMessageType xf86LogFileFrom = X_DEFAULT;
145706f2543SmrgBool xf86LogFileWasOpened = FALSE;
146706f2543SmrgserverLayoutRec xf86ConfigLayout = {NULL, };
147706f2543SmrgconfDRIRec xf86ConfigDRI = {0, };
148706f2543SmrgXF86ConfigPtr xf86configptr = NULL;
149706f2543SmrgBool xf86Resetting = FALSE;
150706f2543SmrgBool xf86Initialising = FALSE;
151706f2543SmrgBool xf86DoConfigure = FALSE;
152706f2543SmrgBool xf86DoShowOptions = FALSE;
153706f2543SmrgDriverPtr *xf86DriverList = NULL;
154706f2543Smrgint xf86NumDrivers = 0;
155706f2543SmrgInputDriverPtr *xf86InputDriverList = NULL;
156706f2543Smrgint xf86NumInputDrivers = 0;
157706f2543Smrgint xf86NumScreens = 0;
158706f2543Smrg
159706f2543Smrgconst char *xf86VisualNames[] = {
160706f2543Smrg	"StaticGray",
161706f2543Smrg	"GrayScale",
162706f2543Smrg	"StaticColor",
163706f2543Smrg	"PseudoColor",
164706f2543Smrg	"TrueColor",
165706f2543Smrg	"DirectColor"
166706f2543Smrg};
167706f2543Smrg
168706f2543Smrg/* Parameters set only from the command line */
169706f2543Smrgchar *xf86ServerName = "no-name";
170706f2543SmrgBool xf86fpFlag = FALSE;
171706f2543SmrgBool xf86sFlag = FALSE;
172706f2543SmrgBool xf86bsEnableFlag = FALSE;
173706f2543SmrgBool xf86bsDisableFlag = FALSE;
174706f2543SmrgBool xf86silkenMouseDisableFlag = FALSE;
175706f2543SmrgBool xf86xkbdirFlag = FALSE;
176706f2543Smrg#ifdef HAVE_ACPI
177706f2543SmrgBool xf86acpiDisableFlag = FALSE;
178706f2543Smrg#endif
179706f2543Smrgchar *xf86LayoutName = NULL;
180706f2543Smrgchar *xf86ScreenName = NULL;
181706f2543Smrgchar *xf86PointerName = NULL;
182706f2543Smrgchar *xf86KeyboardName = NULL;
183706f2543Smrgint xf86Verbose = DEFAULT_VERBOSE;
184706f2543Smrgint xf86LogVerbose = DEFAULT_LOG_VERBOSE;
185706f2543Smrgint xf86FbBpp = -1;
186706f2543SmrgPix24Flags xf86Pix24 = Pix24DontCare;
187706f2543Smrgint xf86Depth = -1;
188706f2543Smrgrgb xf86Weight = {0, 0, 0};
189706f2543SmrgBool xf86FlipPixels = FALSE;
190706f2543SmrgGamma xf86Gamma = {0.0, 0.0, 0.0};
191706f2543SmrgBool xf86AllowMouseOpenFail = FALSE;
192706f2543Smrg#ifdef XF86VIDMODE
193706f2543SmrgBool xf86VidModeDisabled = FALSE;
194706f2543SmrgBool xf86VidModeAllowNonLocal = FALSE;
195706f2543Smrg#endif
196706f2543SmrgRootWinPropPtr *xf86RegisteredPropertiesTable = NULL;
197706f2543SmrgBool xorgHWAccess = FALSE;
198