1706f2543Smrg/*
2706f2543Smrg *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
3706f2543Smrg *
4706f2543Smrg *Permission is hereby granted, free of charge, to any person obtaining
5706f2543Smrg * a copy of this software and associated documentation files (the
6706f2543Smrg *"Software"), to deal in the Software without restriction, including
7706f2543Smrg *without limitation the rights to use, copy, modify, merge, publish,
8706f2543Smrg *distribute, sublicense, and/or sell copies of the Software, and to
9706f2543Smrg *permit persons to whom the Software is furnished to do so, subject to
10706f2543Smrg *the following conditions:
11706f2543Smrg *
12706f2543Smrg *The above copyright notice and this permission notice shall be
13706f2543Smrg *included in all copies or substantial portions of the Software.
14706f2543Smrg *
15706f2543Smrg *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16706f2543Smrg *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17706f2543Smrg *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18706f2543Smrg *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR
19706f2543Smrg *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
20706f2543Smrg *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21706f2543Smrg *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22706f2543Smrg *
23706f2543Smrg *Except as contained in this notice, the name of the XFree86 Project
24706f2543Smrg *shall not be used in advertising or otherwise to promote the sale, use
25706f2543Smrg *or other dealings in this Software without prior written authorization
26706f2543Smrg *from the XFree86 Project.
27706f2543Smrg *
28706f2543Smrg * Authors:	Dakshinamurthy Karra
29706f2543Smrg *		Suhaib M Siddiqi
30706f2543Smrg *		Peter Busch
31706f2543Smrg *		Harold L Hunt II
32706f2543Smrg *		Kensuke Matsuzaki
33706f2543Smrg */
34706f2543Smrg
35706f2543Smrg#ifndef _WIN_H_
36706f2543Smrg#define _WIN_H_
37706f2543Smrg
38706f2543Smrg#ifndef NO
39706f2543Smrg#define NO					0
40706f2543Smrg#endif
41706f2543Smrg#ifndef YES
42706f2543Smrg#define YES					1
43706f2543Smrg#endif
44706f2543Smrg
45706f2543Smrg/* Turn debug messages on or off */
46706f2543Smrg#ifndef CYGDEBUG
47706f2543Smrg#define CYGDEBUG				NO
48706f2543Smrg#endif
49706f2543Smrg
50706f2543Smrg/* WM_XBUTTON Messages. They should go into w32api. */
51706f2543Smrg#ifndef WM_XBUTTONDOWN
52706f2543Smrg# define WM_XBUTTONDOWN 523
53706f2543Smrg#endif
54706f2543Smrg#ifndef WM_XBUTTONUP
55706f2543Smrg# define WM_XBUTTONUP 524
56706f2543Smrg#endif
57706f2543Smrg#ifndef WM_XBUTTONDBLCLK
58706f2543Smrg# define WM_XBUTTONDBLCLK 525
59706f2543Smrg#endif
60706f2543Smrg
61706f2543Smrg
62706f2543Smrg#define WIN_DEFAULT_BPP				0
63706f2543Smrg#define WIN_DEFAULT_WHITEPIXEL			255
64706f2543Smrg#define WIN_DEFAULT_BLACKPIXEL			0
65706f2543Smrg#define WIN_DEFAULT_LINEBIAS			0
66706f2543Smrg#define WIN_DEFAULT_E3B_TIME			50 /* milliseconds */
67706f2543Smrg#define WIN_DEFAULT_DPI				75
68706f2543Smrg#define WIN_DEFAULT_REFRESH			0
69706f2543Smrg#define WIN_DEFAULT_WIN_KILL			TRUE
70706f2543Smrg#define WIN_DEFAULT_UNIX_KILL			FALSE
71706f2543Smrg#define WIN_DEFAULT_CLIP_UPDATES_NBOXES		0
72706f2543Smrg#ifdef XWIN_EMULATEPSEUDO
73706f2543Smrg#define WIN_DEFAULT_EMULATE_PSEUDO		FALSE
74706f2543Smrg#endif
75706f2543Smrg#define WIN_DEFAULT_USER_GAVE_HEIGHT_AND_WIDTH	FALSE
76706f2543Smrg
77706f2543Smrg/*
78706f2543Smrg * Windows only supports 256 color palettes
79706f2543Smrg */
80706f2543Smrg#define WIN_NUM_PALETTE_ENTRIES			256
81706f2543Smrg
82706f2543Smrg/*
83706f2543Smrg * Number of times to call Restore in an attempt to restore the primary surface
84706f2543Smrg */
85706f2543Smrg#define WIN_REGAIN_SURFACE_RETRIES		1
86706f2543Smrg
87706f2543Smrg/*
88706f2543Smrg * Build a supported display depths mask by shifting one to the left
89706f2543Smrg * by the number of bits in the supported depth.
90706f2543Smrg */
91706f2543Smrg#define WIN_SUPPORTED_BPPS	( (1 << (32 - 1)) | (1 << (24 - 1)) \
92706f2543Smrg				| (1 << (16 - 1)) | (1 << (15 - 1)) \
93706f2543Smrg				| (1 << ( 8 - 1)))
94706f2543Smrg#define WIN_CHECK_DEPTH		YES
95706f2543Smrg
96706f2543Smrg/*
97706f2543Smrg * Timer IDs for WM_TIMER
98706f2543Smrg */
99706f2543Smrg#define WIN_E3B_TIMER_ID		1
100706f2543Smrg#define WIN_POLLING_MOUSE_TIMER_ID	2
101706f2543Smrg
102706f2543Smrg#define MOUSE_POLLING_INTERVAL		50
103706f2543Smrg
104706f2543Smrg#define WIN_E3B_OFF		-1
105706f2543Smrg#define WIN_FD_INVALID		-1
106706f2543Smrg
107706f2543Smrg#define WIN_SERVER_NONE		0x0L	/* 0 */
108706f2543Smrg#define WIN_SERVER_SHADOW_GDI	0x1L	/* 1 */
109706f2543Smrg#define WIN_SERVER_SHADOW_DD	0x2L	/* 2 */
110706f2543Smrg#define WIN_SERVER_SHADOW_DDNL	0x4L	/* 4 */
111706f2543Smrg#ifdef XWIN_PRIMARYFB
112706f2543Smrg#define WIN_SERVER_PRIMARY_DD	0x8L	/* 8 */
113706f2543Smrg#endif
114706f2543Smrg#ifdef XWIN_NATIVEGDI
115706f2543Smrg# define WIN_SERVER_NATIVE_GDI	0x10L	/* 16 */
116706f2543Smrg#endif
117706f2543Smrg
118706f2543Smrg#define AltMapIndex		Mod1MapIndex
119706f2543Smrg#define NumLockMapIndex		Mod2MapIndex
120706f2543Smrg#define AltLangMapIndex		Mod3MapIndex
121706f2543Smrg#define KanaMapIndex		Mod4MapIndex
122706f2543Smrg#define ScrollLockMapIndex	Mod5MapIndex
123706f2543Smrg
124706f2543Smrg#define WIN_MOD_LALT		0x00000001
125706f2543Smrg#define WIN_MOD_RALT		0x00000002
126706f2543Smrg#define WIN_MOD_LCONTROL	0x00000004
127706f2543Smrg#define WIN_MOD_RCONTROL	0x00000008
128706f2543Smrg
129706f2543Smrg#define WIN_24BPP_MASK_RED	0x00FF0000
130706f2543Smrg#define WIN_24BPP_MASK_GREEN	0x0000FF00
131706f2543Smrg#define WIN_24BPP_MASK_BLUE	0x000000FF
132706f2543Smrg
133706f2543Smrg#define WIN_MAX_KEYS_PER_KEY	4
134706f2543Smrg
135706f2543Smrg#include <sys/types.h>
136706f2543Smrg#include <sys/stat.h>
137706f2543Smrg#include <stdio.h>
138706f2543Smrg
139706f2543Smrg#include <errno.h>
140706f2543Smrg#if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
141706f2543Smrg#define HANDLE void *
142706f2543Smrg#include <pthread.h>
143706f2543Smrg#undef HANDLE
144706f2543Smrg#endif
145706f2543Smrg
146706f2543Smrg#ifdef HAS_MMAP
147706f2543Smrg#include <sys/mman.h>
148706f2543Smrg#ifndef MAP_FILE
149706f2543Smrg#define MAP_FILE 0
150706f2543Smrg#endif /* MAP_FILE */
151706f2543Smrg#endif /* HAS_MMAP */
152706f2543Smrg
153706f2543Smrg#include <X11/X.h>
154706f2543Smrg#include <X11/Xproto.h>
155706f2543Smrg#include <X11/Xos.h>
156706f2543Smrg#include <X11/Xprotostr.h>
157706f2543Smrg#include "scrnintstr.h"
158706f2543Smrg#include "pixmapstr.h"
159706f2543Smrg#include "pixmap.h"
160706f2543Smrg#include "region.h"
161706f2543Smrg#include "gcstruct.h"
162706f2543Smrg#include "colormap.h"
163706f2543Smrg#include "colormapst.h"
164706f2543Smrg#include "miscstruct.h"
165706f2543Smrg#include "servermd.h"
166706f2543Smrg#include "windowstr.h"
167706f2543Smrg#include "mi.h"
168706f2543Smrg#include "micmap.h"
169706f2543Smrg#include "mifillarc.h"
170706f2543Smrg#include "mifpoly.h"
171706f2543Smrg#include "mibstore.h"
172706f2543Smrg#include "input.h"
173706f2543Smrg#include "mipointer.h"
174706f2543Smrg#include "X11/keysym.h"
175706f2543Smrg#include "mibstore.h"
176706f2543Smrg#include "micoord.h"
177706f2543Smrg#include "dix.h"
178706f2543Smrg#include "miline.h"
179706f2543Smrg#include "shadow.h"
180706f2543Smrg#include "fb.h"
181706f2543Smrg#include "rootless.h"
182706f2543Smrg
183706f2543Smrg#include "mipict.h"
184706f2543Smrg#include "picturestr.h"
185706f2543Smrg
186706f2543Smrg#ifdef RANDR
187706f2543Smrg#include "randrstr.h"
188706f2543Smrg#endif
189706f2543Smrg
190706f2543Smrg/*
191706f2543Smrg * Windows headers
192706f2543Smrg */
193706f2543Smrg#include "winms.h"
194706f2543Smrg#include "winresource.h"
195706f2543Smrg
196706f2543Smrg
197706f2543Smrg/*
198706f2543Smrg * Define Windows constants
199706f2543Smrg */
200706f2543Smrg
201706f2543Smrg#define WM_TRAYICON		(WM_USER + 1000)
202706f2543Smrg#define WM_INIT_SYS_MENU	(WM_USER + 1001)
203706f2543Smrg#define WM_GIVEUP		(WM_USER + 1002)
204706f2543Smrg
205706f2543Smrg
206706f2543Smrg/* Local includes */
207706f2543Smrg#include "winwindow.h"
208706f2543Smrg#include "winmsg.h"
209706f2543Smrg
210706f2543Smrg
211706f2543Smrg/*
212706f2543Smrg * Debugging macros
213706f2543Smrg */
214706f2543Smrg
215706f2543Smrg#if CYGDEBUG
216706f2543Smrg#define DEBUG_MSG(str,...) \
217706f2543Smrgif (fDebugProcMsg) \
218706f2543Smrg{ \
219706f2543Smrg  char *pszTemp; \
220706f2543Smrg  int iLength; \
221706f2543Smrg  if (asprintf (&pszTemp, str, ##__VA_ARGS__) != -1) { \
222706f2543Smrg    MessageBox (NULL, pszTemp, szFunctionName, MB_OK); \
223706f2543Smrg    free (pszTemp); \
224706f2543Smrg  } \
225706f2543Smrg}
226706f2543Smrg#else
227706f2543Smrg#define DEBUG_MSG(str,...)
228706f2543Smrg#endif
229706f2543Smrg
230706f2543Smrg#if CYGDEBUG
231706f2543Smrg#define DEBUG_FN_NAME(str) PTSTR szFunctionName = str
232706f2543Smrg#else
233706f2543Smrg#define DEBUG_FN_NAME(str)
234706f2543Smrg#endif
235706f2543Smrg
236706f2543Smrg#if CYGDEBUG || YES
237706f2543Smrg#define DEBUGVARS BOOL fDebugProcMsg = FALSE
238706f2543Smrg#else
239706f2543Smrg#define DEBUGVARS
240706f2543Smrg#endif
241706f2543Smrg
242706f2543Smrg#if CYGDEBUG || YES
243706f2543Smrg#define DEBUGPROC_MSG fDebugProcMsg = TRUE
244706f2543Smrg#else
245706f2543Smrg#define DEBUGPROC_MSG
246706f2543Smrg#endif
247706f2543Smrg
248706f2543Smrg#define PROFILEPOINT(point,thresh)\
249706f2543Smrg{\
250706f2543Smrgstatic unsigned int PROFPT##point = 0;\
251706f2543Smrgif (++PROFPT##point % thresh == 0)\
252706f2543SmrgErrorF (#point ": PROFILEPOINT hit %u times\n", PROFPT##point);\
253706f2543Smrg}
254706f2543Smrg
255706f2543Smrg
256706f2543Smrg/* We use xor this macro for detecting toggle key state changes */
257706f2543Smrg#define WIN_XOR(a,b) ((!(a) && (b)) || ((a) && !(b)))
258706f2543Smrg
259706f2543Smrg#define DEFINE_ATOM_HELPER(func,atom_name)			\
260706f2543Smrgstatic Atom func (void) {					\
261706f2543Smrg    static int generation;					\
262706f2543Smrg    static Atom atom;						\
263706f2543Smrg    if (generation != serverGeneration) {			\
264706f2543Smrg	generation = serverGeneration;				\
265706f2543Smrg	atom = MakeAtom (atom_name, strlen (atom_name), TRUE);	\
266706f2543Smrg    }								\
267706f2543Smrg    return atom;						\
268706f2543Smrg}
269706f2543Smrg
270706f2543Smrg/*
271706f2543Smrg * Typedefs for engine dependent function pointers
272706f2543Smrg */
273706f2543Smrg
274706f2543Smrgtypedef Bool (*winAllocateFBProcPtr)(ScreenPtr);
275706f2543Smrg
276706f2543Smrgtypedef void (*winFreeFBProcPtr)(ScreenPtr);
277706f2543Smrg
278706f2543Smrgtypedef void (*winShadowUpdateProcPtr)(ScreenPtr, shadowBufPtr);
279706f2543Smrg
280706f2543Smrgtypedef Bool (*winInitScreenProcPtr)(ScreenPtr);
281706f2543Smrg
282706f2543Smrgtypedef Bool (*winCloseScreenProcPtr)(int, ScreenPtr);
283706f2543Smrg
284706f2543Smrgtypedef Bool (*winInitVisualsProcPtr)(ScreenPtr);
285706f2543Smrg
286706f2543Smrgtypedef Bool (*winAdjustVideoModeProcPtr)(ScreenPtr);
287706f2543Smrg
288706f2543Smrgtypedef Bool (*winCreateBoundingWindowProcPtr)(ScreenPtr);
289706f2543Smrg
290706f2543Smrgtypedef Bool (*winFinishScreenInitProcPtr)(int, ScreenPtr, int, char **);
291706f2543Smrg
292706f2543Smrgtypedef Bool (*winBltExposedRegionsProcPtr)(ScreenPtr);
293706f2543Smrg
294706f2543Smrgtypedef Bool (*winActivateAppProcPtr)(ScreenPtr);
295706f2543Smrg
296706f2543Smrgtypedef Bool (*winRedrawScreenProcPtr)(ScreenPtr pScreen);
297706f2543Smrg
298706f2543Smrgtypedef Bool (*winRealizeInstalledPaletteProcPtr)(ScreenPtr pScreen);
299706f2543Smrg
300706f2543Smrgtypedef Bool (*winInstallColormapProcPtr)(ColormapPtr pColormap);
301706f2543Smrg
302706f2543Smrgtypedef Bool (*winStoreColorsProcPtr)(ColormapPtr pmap,
303706f2543Smrg				      int ndef, xColorItem *pdefs);
304706f2543Smrg
305706f2543Smrgtypedef Bool (*winCreateColormapProcPtr)(ColormapPtr pColormap);
306706f2543Smrg
307706f2543Smrgtypedef Bool (*winDestroyColormapProcPtr)(ColormapPtr pColormap);
308706f2543Smrg
309706f2543Smrgtypedef Bool (*winHotKeyAltTabProcPtr)(ScreenPtr);
310706f2543Smrg
311706f2543Smrgtypedef Bool (*winCreatePrimarySurfaceProcPtr)(ScreenPtr);
312706f2543Smrg
313706f2543Smrgtypedef Bool (*winReleasePrimarySurfaceProcPtr)(ScreenPtr);
314706f2543Smrg
315706f2543Smrgtypedef Bool (*winFinishCreateWindowsWindowProcPtr)(WindowPtr pWin);
316706f2543Smrg
317706f2543Smrgtypedef Bool (*winCreateScreenResourcesProc)(ScreenPtr);
318706f2543Smrg
319706f2543Smrg#ifdef XWIN_NATIVEGDI
320706f2543Smrg/* Typedefs for native GDI wrappers */
321706f2543Smrgtypedef Bool (*RealizeFontPtr) (ScreenPtr pScreen, FontPtr pFont);
322706f2543Smrgtypedef Bool (*UnrealizeFontPtr)(ScreenPtr pScreen, FontPtr pFont);
323706f2543Smrg#endif
324706f2543Smrg
325706f2543Smrg
326706f2543Smrg/*
327706f2543Smrg * GC (graphics context) privates
328706f2543Smrg */
329706f2543Smrg
330706f2543Smrgtypedef struct
331706f2543Smrg{
332706f2543Smrg  HDC			hdc;
333706f2543Smrg  HDC			hdcMem;
334706f2543Smrg} winPrivGCRec, *winPrivGCPtr;
335706f2543Smrg
336706f2543Smrg
337706f2543Smrg/*
338706f2543Smrg * Pixmap privates
339706f2543Smrg */
340706f2543Smrg
341706f2543Smrgtypedef struct
342706f2543Smrg{
343706f2543Smrg  HDC			hdcSelected;
344706f2543Smrg  HBITMAP		hBitmap;
345706f2543Smrg  BYTE			*pbBits;
346706f2543Smrg  DWORD			dwScanlineBytes;
347706f2543Smrg  BITMAPINFOHEADER	*pbmih;
348706f2543Smrg} winPrivPixmapRec, *winPrivPixmapPtr;
349706f2543Smrg
350706f2543Smrg
351706f2543Smrg/*
352706f2543Smrg * Colormap privates
353706f2543Smrg */
354706f2543Smrg
355706f2543Smrgtypedef struct
356706f2543Smrg{
357706f2543Smrg  HPALETTE		hPalette;
358706f2543Smrg  LPDIRECTDRAWPALETTE	lpDDPalette;
359706f2543Smrg  RGBQUAD		rgbColors[WIN_NUM_PALETTE_ENTRIES];
360706f2543Smrg  PALETTEENTRY		peColors[WIN_NUM_PALETTE_ENTRIES];
361706f2543Smrg} winPrivCmapRec, *winPrivCmapPtr;
362706f2543Smrg
363706f2543Smrg/*
364706f2543Smrg * Windows Cursor handling.
365706f2543Smrg */
366706f2543Smrg
367706f2543Smrgtypedef struct {
368706f2543Smrg  /* from GetSystemMetrics */
369706f2543Smrg  int sm_cx;
370706f2543Smrg  int sm_cy;
371706f2543Smrg
372706f2543Smrg  BOOL visible;
373706f2543Smrg  HCURSOR handle;
374706f2543Smrg  QueryBestSizeProcPtr QueryBestSize;
375706f2543Smrg  miPointerSpriteFuncPtr spriteFuncs;
376706f2543Smrg} winCursorRec;
377706f2543Smrg
378706f2543Smrg/*
379706f2543Smrg * Resize modes
380706f2543Smrg */
381706f2543Smrgtypedef enum {
382706f2543Smrg  notAllowed,
383706f2543Smrg  resizeWithScrollbars,
384706f2543Smrg  resizeWithRandr
385706f2543Smrg} winResizeMode;
386706f2543Smrg
387706f2543Smrg/*
388706f2543Smrg * Screen information structure that we need before privates are available
389706f2543Smrg * in the server startup sequence.
390706f2543Smrg */
391706f2543Smrg
392706f2543Smrgtypedef struct
393706f2543Smrg{
394706f2543Smrg  ScreenPtr		pScreen;
395706f2543Smrg
396706f2543Smrg  /* Did the user specify a height and width? */
397706f2543Smrg  Bool			fUserGaveHeightAndWidth;
398706f2543Smrg
399706f2543Smrg  DWORD			dwScreen;
400706f2543Smrg
401706f2543Smrg  int			iMonitor;
402706f2543Smrg  DWORD			dwUserWidth;
403706f2543Smrg  DWORD			dwUserHeight;
404706f2543Smrg  DWORD			dwWidth;
405706f2543Smrg  DWORD			dwHeight;
406706f2543Smrg  DWORD			dwPaddedWidth;
407706f2543Smrg
408706f2543Smrg  /* Did the user specify a screen position? */
409706f2543Smrg  Bool			fUserGavePosition;
410706f2543Smrg  DWORD                 dwInitialX;
411706f2543Smrg  DWORD                 dwInitialY;
412706f2543Smrg
413706f2543Smrg  /*
414706f2543Smrg   * dwStride is the number of whole pixels that occupy a scanline,
415706f2543Smrg   * including those pixels that are not displayed.  This is basically
416706f2543Smrg   * a rounding up of the width.
417706f2543Smrg   */
418706f2543Smrg  DWORD			dwStride;
419706f2543Smrg
420706f2543Smrg  /* Offset of the screen in the window when using scrollbars */
421706f2543Smrg  DWORD			dwXOffset;
422706f2543Smrg  DWORD			dwYOffset;
423706f2543Smrg
424706f2543Smrg  DWORD			dwBPP;
425706f2543Smrg  DWORD			dwDepth;
426706f2543Smrg  DWORD			dwRefreshRate;
427706f2543Smrg  char			*pfb;
428706f2543Smrg  DWORD			dwEngine;
429706f2543Smrg  DWORD			dwEnginePreferred;
430706f2543Smrg  DWORD			dwClipUpdatesNBoxes;
431706f2543Smrg#ifdef XWIN_EMULATEPSEUDO
432706f2543Smrg  Bool			fEmulatePseudo;
433706f2543Smrg#endif
434706f2543Smrg  Bool			fFullScreen;
435706f2543Smrg  Bool			fDecoration;
436706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
437706f2543Smrg  Bool			fMWExtWM;
438706f2543Smrg  Bool			fInternalWM;
439706f2543Smrg  Bool			fAnotherWMRunning;
440706f2543Smrg#endif
441706f2543Smrg  Bool			fRootless;
442706f2543Smrg#ifdef XWIN_MULTIWINDOW
443706f2543Smrg  Bool			fMultiWindow;
444706f2543Smrg#endif
445706f2543Smrg#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
446706f2543Smrg  Bool			fMultiMonitorOverride;
447706f2543Smrg#endif
448706f2543Smrg  Bool                  fMultipleMonitors;
449706f2543Smrg  Bool			fLessPointer;
450706f2543Smrg  winResizeMode		iResizeMode;
451706f2543Smrg  Bool			fNoTrayIcon;
452706f2543Smrg  int			iE3BTimeout;
453706f2543Smrg  /* Windows (Alt+F4) and Unix (Ctrl+Alt+Backspace) Killkey */
454706f2543Smrg  Bool                  fUseWinKillKey;
455706f2543Smrg  Bool                  fUseUnixKillKey;
456706f2543Smrg  Bool			fIgnoreInput;
457706f2543Smrg
458706f2543Smrg  /* Did the user explicitly set this screen? */
459706f2543Smrg  Bool			fExplicitScreen;
460706f2543Smrg} winScreenInfo, *winScreenInfoPtr;
461706f2543Smrg
462706f2543Smrg
463706f2543Smrg/*
464706f2543Smrg * Screen privates
465706f2543Smrg */
466706f2543Smrg
467706f2543Smrgtypedef struct _winPrivScreenRec
468706f2543Smrg{
469706f2543Smrg  winScreenInfoPtr	pScreenInfo;
470706f2543Smrg
471706f2543Smrg  Bool			fEnabled;
472706f2543Smrg  Bool			fClosed;
473706f2543Smrg  Bool			fActive;
474706f2543Smrg  Bool			fBadDepth;
475706f2543Smrg
476706f2543Smrg  int			iDeltaZ;
477706f2543Smrg
478706f2543Smrg  int			iConnectedClients;
479706f2543Smrg
480706f2543Smrg  CloseScreenProcPtr	CloseScreen;
481706f2543Smrg
482706f2543Smrg  DWORD			dwRedMask;
483706f2543Smrg  DWORD			dwGreenMask;
484706f2543Smrg  DWORD			dwBlueMask;
485706f2543Smrg  DWORD			dwBitsPerRGB;
486706f2543Smrg
487706f2543Smrg  DWORD			dwModeKeyStates;
488706f2543Smrg
489706f2543Smrg  /* Handle to icons that must be freed */
490706f2543Smrg  HICON			hiconNotifyIcon;
491706f2543Smrg
492706f2543Smrg  /* Palette management */
493706f2543Smrg  ColormapPtr		pcmapInstalled;
494706f2543Smrg
495706f2543Smrg  /* Pointer to the root visual so we only have to look it up once */
496706f2543Smrg  VisualPtr		pRootVisual;
497706f2543Smrg
498706f2543Smrg  /* 3 button emulation variables */
499706f2543Smrg  int			iE3BCachedPress;
500706f2543Smrg  Bool			fE3BFakeButton2Sent;
501706f2543Smrg
502706f2543Smrg  /* Privates used by shadow fb GDI server */
503706f2543Smrg  HBITMAP		hbmpShadow;
504706f2543Smrg  HDC			hdcScreen;
505706f2543Smrg  HDC			hdcShadow;
506706f2543Smrg  HWND			hwndScreen;
507706f2543Smrg  BITMAPINFOHEADER      *pbmih;
508706f2543Smrg
509706f2543Smrg  /* Privates used by shadow fb and primary fb DirectDraw servers */
510706f2543Smrg  LPDIRECTDRAW		pdd;
511706f2543Smrg  LPDIRECTDRAWSURFACE2	pddsPrimary;
512706f2543Smrg  LPDIRECTDRAW2		pdd2;
513706f2543Smrg
514706f2543Smrg  /* Privates used by shadow fb DirectDraw server */
515706f2543Smrg  LPDIRECTDRAWSURFACE2	pddsShadow;
516706f2543Smrg  LPDDSURFACEDESC	pddsdShadow;
517706f2543Smrg
518706f2543Smrg  /* Privates used by primary fb DirectDraw server */
519706f2543Smrg  LPDIRECTDRAWSURFACE2	pddsOffscreen;
520706f2543Smrg  LPDDSURFACEDESC	pddsdOffscreen;
521706f2543Smrg  LPDDSURFACEDESC	pddsdPrimary;
522706f2543Smrg
523706f2543Smrg  /* Privates used by shadow fb DirectDraw Nonlocking server */
524706f2543Smrg  LPDIRECTDRAW4		pdd4;
525706f2543Smrg  LPDIRECTDRAWSURFACE4	pddsShadow4;
526706f2543Smrg  LPDIRECTDRAWSURFACE4	pddsPrimary4;
527706f2543Smrg  BOOL			fRetryCreateSurface;
528706f2543Smrg
529706f2543Smrg  /* Privates used by both shadow fb DirectDraw servers */
530706f2543Smrg  LPDIRECTDRAWCLIPPER	pddcPrimary;
531706f2543Smrg
532706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
533706f2543Smrg  /* Privates used by multi-window external window manager */
534706f2543Smrg  RootlessFrameID	widTop;
535706f2543Smrg  Bool			fRestacking;
536706f2543Smrg#endif
537706f2543Smrg
538706f2543Smrg#ifdef XWIN_MULTIWINDOW
539706f2543Smrg  /* Privates used by multi-window */
540706f2543Smrg  pthread_t		ptWMProc;
541706f2543Smrg  pthread_t		ptXMsgProc;
542706f2543Smrg  void			*pWMInfo;
543706f2543Smrg#endif
544706f2543Smrg
545706f2543Smrg#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
546706f2543Smrg  /* Privates used by both multi-window and rootless */
547706f2543Smrg  Bool			fRootWindowShown;
548706f2543Smrg#endif
549706f2543Smrg
550706f2543Smrg#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
551706f2543Smrg  /* Privates used for any module running in a seperate thread */
552706f2543Smrg  pthread_mutex_t	pmServerStarted;
553706f2543Smrg  Bool			fServerStarted;
554706f2543Smrg#endif
555706f2543Smrg
556706f2543Smrg  /* Engine specific functions */
557706f2543Smrg  winAllocateFBProcPtr			pwinAllocateFB;
558706f2543Smrg  winFreeFBProcPtr			pwinFreeFB;
559706f2543Smrg  winShadowUpdateProcPtr		pwinShadowUpdate;
560706f2543Smrg  winInitScreenProcPtr			pwinInitScreen;
561706f2543Smrg  winCloseScreenProcPtr			pwinCloseScreen;
562706f2543Smrg  winInitVisualsProcPtr			pwinInitVisuals;
563706f2543Smrg  winAdjustVideoModeProcPtr		pwinAdjustVideoMode;
564706f2543Smrg  winCreateBoundingWindowProcPtr	pwinCreateBoundingWindow;
565706f2543Smrg  winFinishScreenInitProcPtr		pwinFinishScreenInit;
566706f2543Smrg  winBltExposedRegionsProcPtr		pwinBltExposedRegions;
567706f2543Smrg  winActivateAppProcPtr			pwinActivateApp;
568706f2543Smrg  winRedrawScreenProcPtr		pwinRedrawScreen;
569706f2543Smrg  winRealizeInstalledPaletteProcPtr	pwinRealizeInstalledPalette;
570706f2543Smrg  winInstallColormapProcPtr		pwinInstallColormap;
571706f2543Smrg  winStoreColorsProcPtr			pwinStoreColors;
572706f2543Smrg  winCreateColormapProcPtr		pwinCreateColormap;
573706f2543Smrg  winDestroyColormapProcPtr		pwinDestroyColormap;
574706f2543Smrg  winHotKeyAltTabProcPtr		pwinHotKeyAltTab;
575706f2543Smrg  winCreatePrimarySurfaceProcPtr	pwinCreatePrimarySurface;
576706f2543Smrg  winReleasePrimarySurfaceProcPtr	pwinReleasePrimarySurface;
577706f2543Smrg
578706f2543Smrg  winCreateScreenResourcesProc       pwinCreateScreenResources;
579706f2543Smrg
580706f2543Smrg#ifdef XWIN_MULTIWINDOW
581706f2543Smrg  /* Window Procedures for MultiWindow mode */
582706f2543Smrg  winFinishCreateWindowsWindowProcPtr	pwinFinishCreateWindowsWindow;
583706f2543Smrg#endif
584706f2543Smrg
585706f2543Smrg  /* Window Procedures for Rootless mode */
586706f2543Smrg  CreateWindowProcPtr			CreateWindow;
587706f2543Smrg  DestroyWindowProcPtr			DestroyWindow;
588706f2543Smrg  PositionWindowProcPtr			PositionWindow;
589706f2543Smrg  ChangeWindowAttributesProcPtr		ChangeWindowAttributes;
590706f2543Smrg  RealizeWindowProcPtr			RealizeWindow;
591706f2543Smrg  UnrealizeWindowProcPtr		UnrealizeWindow;
592706f2543Smrg  ValidateTreeProcPtr			ValidateTree;
593706f2543Smrg  PostValidateTreeProcPtr		PostValidateTree;
594706f2543Smrg  WindowExposuresProcPtr		WindowExposures;
595706f2543Smrg  CopyWindowProcPtr			CopyWindow;
596706f2543Smrg  ClearToBackgroundProcPtr		ClearToBackground;
597706f2543Smrg  ClipNotifyProcPtr			ClipNotify;
598706f2543Smrg  RestackWindowProcPtr			RestackWindow;
599706f2543Smrg  ReparentWindowProcPtr			ReparentWindow;
600706f2543Smrg  ResizeWindowProcPtr			ResizeWindow;
601706f2543Smrg  MoveWindowProcPtr			MoveWindow;
602706f2543Smrg  SetShapeProcPtr			SetShape;
603706f2543Smrg
604706f2543Smrg  winCursorRec                          cursor;
605706f2543Smrg
606706f2543Smrg#ifdef XWIN_NATIVEGDI
607706f2543Smrg  RealizeFontPtr                        RealizeFont;
608706f2543Smrg  UnrealizeFontPtr                      UnrealizeFont;
609706f2543Smrg#endif
610706f2543Smrg
611706f2543Smrg} winPrivScreenRec;
612706f2543Smrg
613706f2543Smrg
614706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
615706f2543Smrgtypedef struct {
616706f2543Smrg  RootlessWindowPtr	pFrame;
617706f2543Smrg  HWND			hWnd;
618706f2543Smrg  int			dwWidthBytes;
619706f2543Smrg  BITMAPINFOHEADER	*pbmihShadow;
620706f2543Smrg  HBITMAP		hbmpShadow;
621706f2543Smrg  HDC			hdcShadow;
622706f2543Smrg  HDC			hdcScreen;
623706f2543Smrg  BOOL			fResized;
624706f2543Smrg  BOOL			fRestackingNow;
625706f2543Smrg  BOOL			fClose;
626706f2543Smrg  BOOL			fMovingOrSizing;
627706f2543Smrg  BOOL			fDestroyed;//for debug
628706f2543Smrg  char			*pfb;
629706f2543Smrg} win32RootlessWindowRec, *win32RootlessWindowPtr;
630706f2543Smrg#endif
631706f2543Smrg
632706f2543Smrg
633706f2543Smrgtypedef struct {
634706f2543Smrg  pointer		value;
635706f2543Smrg  XID			id;
636706f2543Smrg} WindowIDPairRec, *WindowIDPairPtr;
637706f2543Smrg
638706f2543Smrg
639706f2543Smrg/*
640706f2543Smrg * Extern declares for general global variables
641706f2543Smrg */
642706f2543Smrg
643706f2543Smrg#include "winglobals.h"
644706f2543Smrg
645706f2543Smrgextern winScreenInfo *		g_ScreenInfo;
646706f2543Smrgextern miPointerScreenFuncRec	g_winPointerCursorFuncs;
647706f2543Smrgextern DWORD			g_dwEvents;
648706f2543Smrg#ifdef HAS_DEVWINDOWS
649706f2543Smrgextern int			g_fdMessageQueue;
650706f2543Smrg#endif
651706f2543Smrgextern DevPrivateKeyRec		g_iScreenPrivateKeyRec;
652706f2543Smrg#define g_iScreenPrivateKey  	(&g_iScreenPrivateKeyRec)
653706f2543Smrgextern DevPrivateKeyRec		g_iCmapPrivateKeyRec;
654706f2543Smrg#define g_iCmapPrivateKey 	(&g_iCmapPrivateKeyRec)
655706f2543Smrgextern DevPrivateKeyRec		g_iGCPrivateKeyRec;
656706f2543Smrg#define g_iGCPrivateKey 	(&g_iGCPrivateKeyRec)
657706f2543Smrgextern DevPrivateKeyRec		g_iPixmapPrivateKeyRec;
658706f2543Smrg#define g_iPixmapPrivateKey 	(&g_iPixmapPrivateKeyRec)
659706f2543Smrgextern DevPrivateKeyRec		g_iWindowPrivateKeyRec;
660706f2543Smrg#define g_iWindowPrivateKey 	(&g_iWindowPrivateKeyRec)
661706f2543Smrg
662706f2543Smrgextern unsigned long		g_ulServerGeneration;
663706f2543Smrgextern DWORD			g_dwEnginesSupported;
664706f2543Smrgextern HINSTANCE		g_hInstance;
665706f2543Smrgextern int                      g_copyROP[];
666706f2543Smrgextern int                      g_patternROP[];
667706f2543Smrgextern const char *		g_pszQueryHost;
668706f2543Smrgextern DeviceIntPtr             g_pwinPointer;
669706f2543Smrgextern DeviceIntPtr             g_pwinKeyboard;
670706f2543Smrg
671706f2543Smrg/*
672706f2543Smrg * Extern declares for dynamically loaded library function pointers
673706f2543Smrg */
674706f2543Smrg
675706f2543Smrgextern FARPROC			g_fpDirectDrawCreate;
676706f2543Smrgextern FARPROC			g_fpDirectDrawCreateClipper;
677706f2543Smrgextern FARPROC			g_fpTrackMouseEvent;
678706f2543Smrg
679706f2543Smrg
680706f2543Smrg/*
681706f2543Smrg * Screen privates macros
682706f2543Smrg */
683706f2543Smrg
684706f2543Smrg#define winGetScreenPriv(pScreen) ((winPrivScreenPtr) \
685706f2543Smrg    dixLookupPrivate(&(pScreen)->devPrivates, g_iScreenPrivateKey))
686706f2543Smrg
687706f2543Smrg#define winSetScreenPriv(pScreen,v) \
688706f2543Smrg    dixSetPrivate(&(pScreen)->devPrivates, g_iScreenPrivateKey, v)
689706f2543Smrg
690706f2543Smrg#define winScreenPriv(pScreen) \
691706f2543Smrg	winPrivScreenPtr pScreenPriv = winGetScreenPriv(pScreen)
692706f2543Smrg
693706f2543Smrg
694706f2543Smrg/*
695706f2543Smrg * Colormap privates macros
696706f2543Smrg */
697706f2543Smrg
698706f2543Smrg#define winGetCmapPriv(pCmap) ((winPrivCmapPtr) \
699706f2543Smrg    dixLookupPrivate(&(pCmap)->devPrivates, g_iCmapPrivateKey))
700706f2543Smrg
701706f2543Smrg#define winSetCmapPriv(pCmap,v) \
702706f2543Smrg    dixSetPrivate(&(pCmap)->devPrivates, g_iCmapPrivateKey, v)
703706f2543Smrg
704706f2543Smrg#define winCmapPriv(pCmap) \
705706f2543Smrg	winPrivCmapPtr pCmapPriv = winGetCmapPriv(pCmap)
706706f2543Smrg
707706f2543Smrg
708706f2543Smrg/*
709706f2543Smrg * GC privates macros
710706f2543Smrg */
711706f2543Smrg
712706f2543Smrg#define winGetGCPriv(pGC) ((winPrivGCPtr) \
713706f2543Smrg    dixLookupPrivate(&(pGC)->devPrivates, g_iGCPrivateKey))
714706f2543Smrg
715706f2543Smrg#define winSetGCPriv(pGC,v) \
716706f2543Smrg    dixSetPrivate(&(pGC)->devPrivates, g_iGCPrivateKey, v)
717706f2543Smrg
718706f2543Smrg#define winGCPriv(pGC) \
719706f2543Smrg	winPrivGCPtr pGCPriv = winGetGCPriv(pGC)
720706f2543Smrg
721706f2543Smrg
722706f2543Smrg/*
723706f2543Smrg * Pixmap privates macros
724706f2543Smrg */
725706f2543Smrg
726706f2543Smrg#define winGetPixmapPriv(pPixmap) ((winPrivPixmapPtr) \
727706f2543Smrg    dixLookupPrivate(&(pPixmap)->devPrivates, g_iPixmapPrivateKey))
728706f2543Smrg
729706f2543Smrg#define winSetPixmapPriv(pPixmap,v) \
730706f2543Smrg    dixLookupPrivate(&(pPixmap)->devPrivates, g_iPixmapPrivateKey, v)
731706f2543Smrg
732706f2543Smrg#define winPixmapPriv(pPixmap) \
733706f2543Smrg	winPrivPixmapPtr pPixmapPriv = winGetPixmapPriv(pPixmap)
734706f2543Smrg
735706f2543Smrg
736706f2543Smrg/*
737706f2543Smrg * Window privates macros
738706f2543Smrg */
739706f2543Smrg
740706f2543Smrg#define winGetWindowPriv(pWin) ((winPrivWinPtr) \
741706f2543Smrg    dixLookupPrivate(&(pWin)->devPrivates, g_iWindowPrivateKey))
742706f2543Smrg
743706f2543Smrg#define winSetWindowPriv(pWin,v) \
744706f2543Smrg    dixLookupPrivate(&(pWin)->devPrivates, g_iWindowPrivateKey, v)
745706f2543Smrg
746706f2543Smrg#define winWindowPriv(pWin) \
747706f2543Smrg	winPrivWinPtr pWinPriv = winGetWindowPriv(pWin)
748706f2543Smrg
749706f2543Smrg/*
750706f2543Smrg * wrapper macros
751706f2543Smrg */
752706f2543Smrg#define _WIN_WRAP(priv, real, mem, func) {\
753706f2543Smrg    priv->mem = real->mem; \
754706f2543Smrg    real->mem = func; \
755706f2543Smrg}
756706f2543Smrg
757706f2543Smrg#define _WIN_UNWRAP(priv, real, mem) {\
758706f2543Smrg    real->mem = priv->mem; \
759706f2543Smrg}
760706f2543Smrg
761706f2543Smrg#define WIN_WRAP(mem, func) _WIN_WRAP(pScreenPriv, pScreen, mem, func)
762706f2543Smrg
763706f2543Smrg#define WIN_UNWRAP(mem) _WIN_UNWRAP(pScreenPriv, pScreen, mem)
764706f2543Smrg
765706f2543Smrg/*
766706f2543Smrg * BEGIN DDX and DIX Function Prototypes
767706f2543Smrg */
768706f2543Smrg
769706f2543Smrg
770706f2543Smrg/*
771706f2543Smrg * winallpriv.c
772706f2543Smrg */
773706f2543Smrg
774706f2543SmrgBool
775706f2543SmrgwinAllocatePrivates (ScreenPtr pScreen);
776706f2543Smrg
777706f2543SmrgBool
778706f2543SmrgwinInitCmapPrivates (ColormapPtr pCmap, int index);
779706f2543Smrg
780706f2543SmrgBool
781706f2543SmrgwinAllocateCmapPrivates (ColormapPtr pCmap);
782706f2543Smrg
783706f2543Smrg
784706f2543Smrg/*
785706f2543Smrg * winauth.c
786706f2543Smrg */
787706f2543Smrg
788706f2543Smrg#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
789706f2543SmrgBool
790706f2543SmrgwinGenerateAuthorization (void);
791706f2543Smrgvoid winSetAuthorization(void);
792706f2543Smrg#endif
793706f2543Smrg
794706f2543Smrg
795706f2543Smrg/*
796706f2543Smrg * winblock.c
797706f2543Smrg */
798706f2543Smrg
799706f2543Smrgvoid
800706f2543SmrgwinBlockHandler (int nScreen,
801706f2543Smrg		 pointer pBlockData,
802706f2543Smrg		 pointer pTimeout,
803706f2543Smrg		 pointer pReadMask);
804706f2543Smrg
805706f2543Smrg
806706f2543Smrg#ifdef XWIN_NATIVEGDI
807706f2543Smrg/*
808706f2543Smrg * winclip.c
809706f2543Smrg */
810706f2543Smrg
811706f2543SmrgRegionPtr
812706f2543SmrgwinPixmapToRegionNativeGDI (PixmapPtr pPix);
813706f2543Smrg#endif
814706f2543Smrg
815706f2543Smrg
816706f2543Smrg#ifdef XWIN_CLIPBOARD
817706f2543Smrg/*
818706f2543Smrg * winclipboardinit.c
819706f2543Smrg */
820706f2543Smrg
821706f2543SmrgBool
822706f2543SmrgwinInitClipboard (void);
823706f2543Smrg
824706f2543Smrgvoid
825706f2543SmrgwinFixClipboardChain (void);
826706f2543Smrg#endif
827706f2543Smrg
828706f2543Smrg
829706f2543Smrg/*
830706f2543Smrg * wincmap.c
831706f2543Smrg */
832706f2543Smrg
833706f2543Smrgvoid
834706f2543SmrgwinSetColormapFunctions (ScreenPtr pScreen);
835706f2543Smrg
836706f2543SmrgBool
837706f2543SmrgwinCreateDefColormap (ScreenPtr pScreen);
838706f2543Smrg
839706f2543Smrg
840706f2543Smrg/*
841706f2543Smrg * wincreatewnd.c
842706f2543Smrg */
843706f2543Smrg
844706f2543SmrgBool
845706f2543SmrgwinCreateBoundingWindowFullScreen (ScreenPtr pScreen);
846706f2543Smrg
847706f2543SmrgBool
848706f2543SmrgwinCreateBoundingWindowWindowed (ScreenPtr pScreen);
849706f2543Smrg
850706f2543Smrg
851706f2543Smrg/*
852706f2543Smrg * windialogs.c
853706f2543Smrg */
854706f2543Smrg
855706f2543Smrgvoid
856706f2543SmrgwinDisplayExitDialog (winPrivScreenPtr pScreenPriv);
857706f2543Smrg
858706f2543Smrgvoid
859706f2543SmrgwinDisplayDepthChangeDialog (winPrivScreenPtr pScreenPriv);
860706f2543Smrg
861706f2543Smrgvoid
862706f2543SmrgwinDisplayAboutDialog (winPrivScreenPtr pScreenPriv);
863706f2543Smrg
864706f2543Smrg
865706f2543Smrg/*
866706f2543Smrg * winengine.c
867706f2543Smrg */
868706f2543Smrg
869706f2543Smrgvoid
870706f2543SmrgwinDetectSupportedEngines (void);
871706f2543Smrg
872706f2543SmrgBool
873706f2543SmrgwinSetEngine (ScreenPtr pScreen);
874706f2543Smrg
875706f2543SmrgBool
876706f2543SmrgwinGetDDProcAddresses (void);
877706f2543Smrg
878706f2543Smrgvoid
879706f2543SmrgwinReleaseDDProcAddresses(void);
880706f2543Smrg
881706f2543Smrg
882706f2543Smrg/*
883706f2543Smrg * winerror.c
884706f2543Smrg */
885706f2543Smrg
886706f2543Smrg#ifdef DDXOSVERRORF
887706f2543Smrgvoid
888706f2543SmrgOSVenderVErrorF (const char *pszFormat, va_list va_args);
889706f2543Smrg#endif
890706f2543Smrg
891706f2543Smrgvoid
892706f2543SmrgwinMessageBoxF (const char *pszError, UINT uType, ...);
893706f2543Smrg
894706f2543Smrg
895706f2543Smrg#ifdef XWIN_NATIVEGDI
896706f2543Smrg/*
897706f2543Smrg * winfillsp.c
898706f2543Smrg */
899706f2543Smrg
900706f2543Smrgvoid
901706f2543SmrgwinFillSpansNativeGDI (DrawablePtr	pDrawable,
902706f2543Smrg		       GCPtr		pGC,
903706f2543Smrg		       int		nSpans,
904706f2543Smrg		       DDXPointPtr	pPoints,
905706f2543Smrg		       int		*pWidths,
906706f2543Smrg		       int		fSorted);
907706f2543Smrg#endif
908706f2543Smrg
909706f2543Smrg
910706f2543Smrg#ifdef XWIN_NATIVEGDI
911706f2543Smrg/*
912706f2543Smrg * winfont.c
913706f2543Smrg */
914706f2543Smrg
915706f2543SmrgBool
916706f2543SmrgwinRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont);
917706f2543Smrg
918706f2543SmrgBool
919706f2543SmrgwinUnrealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont);
920706f2543Smrg#endif
921706f2543Smrg
922706f2543Smrg
923706f2543Smrg#ifdef XWIN_NATIVEGDI
924706f2543Smrg/*
925706f2543Smrg * wingc.c
926706f2543Smrg */
927706f2543Smrg
928706f2543SmrgBool
929706f2543SmrgwinCreateGCNativeGDI (GCPtr pGC);
930706f2543Smrg#endif
931706f2543Smrg
932706f2543Smrg
933706f2543Smrg#ifdef XWIN_NATIVEGDI
934706f2543Smrg/*
935706f2543Smrg * wingetsp.c
936706f2543Smrg */
937706f2543Smrg
938706f2543Smrgvoid
939706f2543SmrgwinGetSpansNativeGDI (DrawablePtr	pDrawable,
940706f2543Smrg		      int		wMax,
941706f2543Smrg		      DDXPointPtr	pPoints,
942706f2543Smrg		      int		*pWidths,
943706f2543Smrg		      int		nSpans,
944706f2543Smrg		      char		*pDst);
945706f2543Smrg#endif
946706f2543Smrg
947706f2543Smrg
948706f2543Smrg/*
949706f2543Smrg * winglobals.c
950706f2543Smrg */
951706f2543Smrg
952706f2543Smrgvoid
953706f2543SmrgwinInitializeGlobals (void);
954706f2543Smrg
955706f2543Smrg
956706f2543Smrg/*
957706f2543Smrg * winkeybd.c
958706f2543Smrg */
959706f2543Smrg
960706f2543Smrgvoid
961706f2543SmrgwinTranslateKey (WPARAM wParam, LPARAM lParam, int *piScanCode);
962706f2543Smrg
963706f2543Smrgint
964706f2543SmrgwinKeybdProc (DeviceIntPtr pDeviceInt, int iState);
965706f2543Smrg
966706f2543Smrgvoid
967706f2543SmrgwinInitializeModeKeyStates (void);
968706f2543Smrg
969706f2543Smrgvoid
970706f2543SmrgwinRestoreModeKeyStates (void);
971706f2543Smrg
972706f2543SmrgBool
973706f2543SmrgwinIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam);
974706f2543Smrg
975706f2543Smrgvoid
976706f2543SmrgwinKeybdReleaseKeys (void);
977706f2543Smrg
978706f2543Smrgvoid
979706f2543SmrgwinSendKeyEvent (DWORD dwKey, Bool fDown);
980706f2543Smrg
981706f2543SmrgBOOL
982706f2543SmrgwinCheckKeyPressed(WPARAM wParam, LPARAM lParam);
983706f2543Smrg
984706f2543Smrgvoid
985706f2543SmrgwinFixShiftKeys (int iScanCode);
986706f2543Smrg
987706f2543Smrg/*
988706f2543Smrg * winkeyhook.c
989706f2543Smrg */
990706f2543Smrg
991706f2543SmrgBool
992706f2543SmrgwinInstallKeyboardHookLL (void);
993706f2543Smrg
994706f2543Smrgvoid
995706f2543SmrgwinRemoveKeyboardHookLL (void);
996706f2543Smrg
997706f2543Smrg
998706f2543Smrg/*
999706f2543Smrg * winmisc.c
1000706f2543Smrg */
1001706f2543Smrg
1002706f2543Smrg#ifdef XWIN_NATIVEGDI
1003706f2543Smrgvoid
1004706f2543SmrgwinQueryBestSizeNativeGDI (int class, unsigned short *pWidth,
1005706f2543Smrg			   unsigned short *pHeight, ScreenPtr pScreen);
1006706f2543Smrg#endif
1007706f2543Smrg
1008706f2543SmrgCARD8
1009706f2543SmrgwinCountBits (DWORD dw);
1010706f2543Smrg
1011706f2543SmrgBool
1012706f2543SmrgwinUpdateFBPointer (ScreenPtr pScreen, void *pbits);
1013706f2543Smrg
1014706f2543Smrg#ifdef XWIN_NATIVEGDI
1015706f2543SmrgBOOL
1016706f2543SmrgwinPaintBackground (HWND hwnd, COLORREF colorref);
1017706f2543Smrg#endif
1018706f2543Smrg
1019706f2543Smrg
1020706f2543Smrg/*
1021706f2543Smrg * winmouse.c
1022706f2543Smrg */
1023706f2543Smrg
1024706f2543Smrgint
1025706f2543SmrgwinMouseProc (DeviceIntPtr pDeviceInt, int iState);
1026706f2543Smrg
1027706f2543Smrgint
1028706f2543SmrgwinMouseWheel (ScreenPtr pScreen, int iDeltaZ);
1029706f2543Smrg
1030706f2543Smrgvoid
1031706f2543SmrgwinMouseButtonsSendEvent (int iEventType, int iButton);
1032706f2543Smrg
1033706f2543Smrgint
1034706f2543SmrgwinMouseButtonsHandle (ScreenPtr pScreen,
1035706f2543Smrg		       int iEventType, int iButton,
1036706f2543Smrg		       WPARAM wParam);
1037706f2543Smrg
1038706f2543Smrgvoid
1039706f2543SmrgwinEnqueueMotion(int x, int y);
1040706f2543Smrg
1041706f2543Smrg#ifdef XWIN_NATIVEGDI
1042706f2543Smrg/*
1043706f2543Smrg * winnativegdi.c
1044706f2543Smrg */
1045706f2543Smrg
1046706f2543SmrgHBITMAP
1047706f2543SmrgwinCreateDIBNativeGDI (int iWidth, int iHeight, int iDepth,
1048706f2543Smrg		       BYTE **ppbBits, BITMAPINFO **ppbmi);
1049706f2543Smrg
1050706f2543SmrgBool
1051706f2543SmrgwinSetEngineFunctionsNativeGDI (ScreenPtr pScreen);
1052706f2543Smrg#endif
1053706f2543Smrg
1054706f2543Smrg
1055706f2543Smrg#ifdef XWIN_PRIMARYFB
1056706f2543Smrg/*
1057706f2543Smrg * winpfbddd.c
1058706f2543Smrg */
1059706f2543Smrg
1060706f2543SmrgBool
1061706f2543SmrgwinSetEngineFunctionsPrimaryDD (ScreenPtr pScreen);
1062706f2543Smrg#endif
1063706f2543Smrg
1064706f2543Smrg
1065706f2543Smrg#ifdef XWIN_NATIVEGDI
1066706f2543Smrg/*
1067706f2543Smrg * winpixmap.c
1068706f2543Smrg */
1069706f2543Smrg
1070706f2543SmrgPixmapPtr
1071706f2543SmrgwinCreatePixmapNativeGDI (ScreenPtr pScreen, int width, int height, int depth,
1072706f2543Smrg			  unsigned usage_hint);
1073706f2543Smrg
1074706f2543SmrgBool
1075706f2543SmrgwinDestroyPixmapNativeGDI (PixmapPtr pPixmap);
1076706f2543Smrg
1077706f2543SmrgBool
1078706f2543SmrgwinModifyPixmapHeaderNativeGDI (PixmapPtr pPixmap,
1079706f2543Smrg				int iWidth, int iHeight,
1080706f2543Smrg				int iDepth,
1081706f2543Smrg				int iBitsPerPixel,
1082706f2543Smrg				int devKind,
1083706f2543Smrg				pointer pPixData);
1084706f2543Smrg#endif
1085706f2543Smrg
1086706f2543Smrg#ifdef XWIN_NATIVEGDI
1087706f2543Smrg/*
1088706f2543Smrg * winpolyline.c
1089706f2543Smrg */
1090706f2543Smrg
1091706f2543Smrgvoid
1092706f2543SmrgwinPolyLineNativeGDI (DrawablePtr	pDrawable,
1093706f2543Smrg		      GCPtr		pGC,
1094706f2543Smrg		      int		mode,
1095706f2543Smrg		      int		npt,
1096706f2543Smrg		      DDXPointPtr	ppt);
1097706f2543Smrg#endif
1098706f2543Smrg
1099706f2543Smrg
1100706f2543Smrg#ifdef XWIN_NATIVEGDI
1101706f2543Smrg/*
1102706f2543Smrg * winpushpxl.c
1103706f2543Smrg */
1104706f2543Smrg
1105706f2543Smrgvoid
1106706f2543SmrgwinPushPixels (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable,
1107706f2543Smrg	       int dx, int dy, int xOrg, int yOrg);
1108706f2543Smrg#endif
1109706f2543Smrg
1110706f2543Smrg
1111706f2543Smrg/*
1112706f2543Smrg * winscrinit.c
1113706f2543Smrg */
1114706f2543Smrg
1115706f2543SmrgBool
1116706f2543SmrgwinScreenInit (int index,
1117706f2543Smrg	       ScreenPtr pScreen,
1118706f2543Smrg	       int argc, char **argv);
1119706f2543Smrg
1120706f2543SmrgBool
1121706f2543SmrgwinFinishScreenInitFB (int index,
1122706f2543Smrg		       ScreenPtr pScreen,
1123706f2543Smrg		       int argc, char **argv);
1124706f2543Smrg
1125706f2543Smrg#if defined(XWIN_NATIVEGDI)
1126706f2543SmrgBool
1127706f2543SmrgwinFinishScreenInitNativeGDI (int index,
1128706f2543Smrg			      ScreenPtr pScreen,
1129706f2543Smrg			      int argc, char **argv);
1130706f2543Smrg#endif
1131706f2543Smrg
1132706f2543Smrg
1133706f2543Smrg#ifdef XWIN_NATIVEGDI
1134706f2543Smrg/*
1135706f2543Smrg * winsetsp.c
1136706f2543Smrg */
1137706f2543Smrg
1138706f2543Smrgvoid
1139706f2543SmrgwinSetSpansNativeGDI (DrawablePtr	pDrawable,
1140706f2543Smrg		      GCPtr		pGC,
1141706f2543Smrg		      char		*pSrc,
1142706f2543Smrg		      DDXPointPtr	pPoints,
1143706f2543Smrg		      int		*pWidth,
1144706f2543Smrg		      int		nSpans,
1145706f2543Smrg		      int		fSorted);
1146706f2543Smrg#endif
1147706f2543Smrg
1148706f2543Smrg
1149706f2543Smrg/*
1150706f2543Smrg * winshaddd.c
1151706f2543Smrg */
1152706f2543Smrg
1153706f2543SmrgBool
1154706f2543SmrgwinSetEngineFunctionsShadowDD (ScreenPtr pScreen);
1155706f2543Smrg
1156706f2543Smrg
1157706f2543Smrg/*
1158706f2543Smrg * winshadddnl.c
1159706f2543Smrg */
1160706f2543Smrg
1161706f2543SmrgBool
1162706f2543SmrgwinSetEngineFunctionsShadowDDNL (ScreenPtr pScreen);
1163706f2543Smrg
1164706f2543Smrg
1165706f2543Smrg/*
1166706f2543Smrg * winshadgdi.c
1167706f2543Smrg */
1168706f2543Smrg
1169706f2543SmrgBool
1170706f2543SmrgwinSetEngineFunctionsShadowGDI (ScreenPtr pScreen);
1171706f2543Smrg
1172706f2543Smrg
1173706f2543Smrg/*
1174706f2543Smrg * winwakeup.c
1175706f2543Smrg */
1176706f2543Smrg
1177706f2543Smrgvoid
1178706f2543SmrgwinWakeupHandler (int nScreen,
1179706f2543Smrg		  pointer pWakeupData,
1180706f2543Smrg		  unsigned long ulResult,
1181706f2543Smrg		  pointer pReadmask);
1182706f2543Smrg
1183706f2543Smrg
1184706f2543Smrg/*
1185706f2543Smrg * winwindow.c
1186706f2543Smrg */
1187706f2543Smrg
1188706f2543Smrg#ifdef XWIN_NATIVEGDI
1189706f2543SmrgBool
1190706f2543SmrgwinCreateWindowNativeGDI (WindowPtr pWin);
1191706f2543Smrg
1192706f2543SmrgBool
1193706f2543SmrgwinDestroyWindowNativeGDI (WindowPtr pWin);
1194706f2543Smrg
1195706f2543SmrgBool
1196706f2543SmrgwinPositionWindowNativeGDI (WindowPtr pWin, int x, int y);
1197706f2543Smrg
1198706f2543Smrgvoid
1199706f2543SmrgwinCopyWindowNativeGDI (WindowPtr pWin,
1200706f2543Smrg			DDXPointRec ptOldOrg,
1201706f2543Smrg			RegionPtr prgnSrc);
1202706f2543Smrg
1203706f2543SmrgBool
1204706f2543SmrgwinChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask);
1205706f2543Smrg
1206706f2543SmrgBool
1207706f2543SmrgwinUnmapWindowNativeGDI (WindowPtr pWindow);
1208706f2543Smrg
1209706f2543SmrgBool
1210706f2543SmrgwinMapWindowNativeGDI (WindowPtr pWindow);
1211706f2543Smrg#endif
1212706f2543Smrg
1213706f2543SmrgBool
1214706f2543SmrgwinCreateWindowRootless (WindowPtr pWindow);
1215706f2543Smrg
1216706f2543SmrgBool
1217706f2543SmrgwinDestroyWindowRootless (WindowPtr pWindow);
1218706f2543Smrg
1219706f2543SmrgBool
1220706f2543SmrgwinPositionWindowRootless (WindowPtr pWindow, int x, int y);
1221706f2543Smrg
1222706f2543SmrgBool
1223706f2543SmrgwinChangeWindowAttributesRootless (WindowPtr pWindow, unsigned long mask);
1224706f2543Smrg
1225706f2543SmrgBool
1226706f2543SmrgwinUnmapWindowRootless (WindowPtr pWindow);
1227706f2543Smrg
1228706f2543SmrgBool
1229706f2543SmrgwinMapWindowRootless (WindowPtr pWindow);
1230706f2543Smrg
1231706f2543Smrgvoid
1232706f2543SmrgwinSetShapeRootless (WindowPtr pWindow, int kind);
1233706f2543Smrg
1234706f2543Smrg
1235706f2543Smrg/*
1236706f2543Smrg * winmultiwindowicons.c - Used by both multi-window and Win32Rootless
1237706f2543Smrg */
1238706f2543Smrg
1239706f2543SmrgHICON
1240706f2543SmrgwinXIconToHICON (WindowPtr pWin, int iconSize);
1241706f2543Smrg
1242706f2543Smrgvoid
1243706f2543SmrgwinSelectIcons(WindowPtr pWin, HICON *pIcon, HICON *pSmallIcon);
1244706f2543Smrg
1245706f2543Smrg#ifdef XWIN_MULTIWINDOW
1246706f2543Smrg/*
1247706f2543Smrg * winmultiwindowshape.c
1248706f2543Smrg */
1249706f2543Smrg
1250706f2543Smrgvoid
1251706f2543SmrgwinReshapeMultiWindow (WindowPtr pWin);
1252706f2543Smrg
1253706f2543Smrgvoid
1254706f2543SmrgwinSetShapeMultiWindow (WindowPtr pWindow, int kind);
1255706f2543Smrg
1256706f2543Smrgvoid
1257706f2543SmrgwinUpdateRgnMultiWindow (WindowPtr pWindow);
1258706f2543Smrg#endif
1259706f2543Smrg
1260706f2543Smrg
1261706f2543Smrg#ifdef XWIN_MULTIWINDOW
1262706f2543Smrg/*
1263706f2543Smrg * winmultiwindowwindow.c
1264706f2543Smrg */
1265706f2543Smrg
1266706f2543SmrgBool
1267706f2543SmrgwinCreateWindowMultiWindow (WindowPtr pWindow);
1268706f2543Smrg
1269706f2543SmrgBool
1270706f2543SmrgwinDestroyWindowMultiWindow (WindowPtr pWindow);
1271706f2543Smrg
1272706f2543SmrgBool
1273706f2543SmrgwinPositionWindowMultiWindow (WindowPtr pWindow, int x, int y);
1274706f2543Smrg
1275706f2543SmrgBool
1276706f2543SmrgwinChangeWindowAttributesMultiWindow (WindowPtr pWindow, unsigned long mask);
1277706f2543Smrg
1278706f2543SmrgBool
1279706f2543SmrgwinUnmapWindowMultiWindow (WindowPtr pWindow);
1280706f2543Smrg
1281706f2543SmrgBool
1282706f2543SmrgwinMapWindowMultiWindow (WindowPtr pWindow);
1283706f2543Smrg
1284706f2543Smrgvoid
1285706f2543SmrgwinReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent);
1286706f2543Smrg
1287706f2543Smrgvoid
1288706f2543SmrgwinRestackWindowMultiWindow (WindowPtr pWin, WindowPtr pOldNextSib);
1289706f2543Smrg
1290706f2543Smrgvoid
1291706f2543SmrgwinReorderWindowsMultiWindow (void);
1292706f2543Smrg
1293706f2543Smrgvoid
1294706f2543SmrgwinResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w,
1295706f2543Smrg			    unsigned int h, WindowPtr pSib);
1296706f2543Smrgvoid
1297706f2543SmrgwinMoveWindowMultiWindow (WindowPtr pWin, int x, int y,
1298706f2543Smrg			  WindowPtr pSib, VTKind kind);
1299706f2543Smrg
1300706f2543Smrgvoid
1301706f2543SmrgwinCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt,
1302706f2543Smrg			  RegionPtr oldRegion);
1303706f2543Smrg
1304706f2543SmrgXID
1305706f2543SmrgwinGetWindowID (WindowPtr pWin);
1306706f2543Smrg
1307706f2543Smrgint
1308706f2543SmrgwinAdjustXWindow (WindowPtr pWin, HWND hwnd);
1309706f2543Smrg#endif
1310706f2543Smrg
1311706f2543Smrg
1312706f2543Smrg#ifdef XWIN_MULTIWINDOW
1313706f2543Smrg/*
1314706f2543Smrg * winmultiwindowwndproc.c
1315706f2543Smrg */
1316706f2543Smrg
1317706f2543SmrgLRESULT CALLBACK
1318706f2543SmrgwinTopLevelWindowProc (HWND hwnd, UINT message,
1319706f2543Smrg		       WPARAM wParam, LPARAM lParam);
1320706f2543Smrg#endif
1321706f2543Smrg
1322706f2543Smrg
1323706f2543Smrg/*
1324706f2543Smrg * wintrayicon.c
1325706f2543Smrg */
1326706f2543Smrg
1327706f2543Smrgvoid
1328706f2543SmrgwinInitNotifyIcon (winPrivScreenPtr pScreenPriv);
1329706f2543Smrg
1330706f2543Smrgvoid
1331706f2543SmrgwinDeleteNotifyIcon (winPrivScreenPtr pScreenPriv);
1332706f2543Smrg
1333706f2543SmrgLRESULT
1334706f2543SmrgwinHandleIconMessage (HWND hwnd, UINT message,
1335706f2543Smrg		      WPARAM wParam, LPARAM lParam,
1336706f2543Smrg		      winPrivScreenPtr pScreenPriv);
1337706f2543Smrg
1338706f2543Smrg
1339706f2543Smrg/*
1340706f2543Smrg * winwndproc.c
1341706f2543Smrg */
1342706f2543Smrg
1343706f2543SmrgLRESULT CALLBACK
1344706f2543SmrgwinWindowProc (HWND hWnd, UINT message,
1345706f2543Smrg	       WPARAM wParam, LPARAM lParam);
1346706f2543Smrg
1347706f2543Smrg
1348706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
1349706f2543Smrg/*
1350706f2543Smrg * winwin32rootless.c
1351706f2543Smrg */
1352706f2543Smrg
1353706f2543SmrgBool
1354706f2543SmrgwinMWExtWMCreateFrame (RootlessWindowPtr pFrame, ScreenPtr pScreen,
1355706f2543Smrg			     int newX, int newY, RegionPtr pShape);
1356706f2543Smrg
1357706f2543Smrgvoid
1358706f2543SmrgwinMWExtWMDestroyFrame (RootlessFrameID wid);
1359706f2543Smrg
1360706f2543Smrgvoid
1361706f2543SmrgwinMWExtWMMoveFrame (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
1362706f2543Smrg
1363706f2543Smrgvoid
1364706f2543SmrgwinMWExtWMResizeFrame (RootlessFrameID wid, ScreenPtr pScreen,
1365706f2543Smrg			     int newX, int newY, unsigned int newW, unsigned int newH,
1366706f2543Smrg			     unsigned int gravity);
1367706f2543Smrg
1368706f2543Smrgvoid
1369706f2543SmrgwinMWExtWMRestackFrame (RootlessFrameID wid, RootlessFrameID nextWid);
1370706f2543Smrg
1371706f2543Smrgvoid
1372706f2543SmrgwinMWExtWMReshapeFrame (RootlessFrameID wid, RegionPtr pShape);
1373706f2543Smrg
1374706f2543Smrgvoid
1375706f2543SmrgwinMWExtWMUnmapFrame (RootlessFrameID wid);
1376706f2543Smrg
1377706f2543Smrgvoid
1378706f2543SmrgwinMWExtWMStartDrawing (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
1379706f2543Smrg
1380706f2543Smrgvoid
1381706f2543SmrgwinMWExtWMStopDrawing (RootlessFrameID wid, Bool flush);
1382706f2543Smrg
1383706f2543Smrgvoid
1384706f2543SmrgwinMWExtWMUpdateRegion (RootlessFrameID wid, RegionPtr pDamage);
1385706f2543Smrg
1386706f2543Smrgvoid
1387706f2543SmrgwinMWExtWMDamageRects (RootlessFrameID wid, int count, const BoxRec *rects,
1388706f2543Smrg			     int shift_x, int shift_y);
1389706f2543Smrg
1390706f2543Smrgvoid
1391706f2543SmrgwinMWExtWMRootlessSwitchWindow (RootlessWindowPtr pFrame, WindowPtr oldWin);
1392706f2543Smrg
1393706f2543Smrgvoid
1394706f2543SmrgwinMWExtWMCopyBytes (unsigned int width, unsigned int height,
1395706f2543Smrg			   const void *src, unsigned int srcRowBytes,
1396706f2543Smrg			   void *dst, unsigned int dstRowBytes);
1397706f2543Smrg
1398706f2543Smrgvoid
1399706f2543SmrgwinMWExtWMCopyWindow (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
1400706f2543Smrg			    int dx, int dy);
1401706f2543Smrg#endif
1402706f2543Smrg
1403706f2543Smrg
1404706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
1405706f2543Smrg/*
1406706f2543Smrg * winwin32rootlesswindow.c
1407706f2543Smrg */
1408706f2543Smrg
1409706f2543Smrgvoid
1410706f2543SmrgwinMWExtWMReorderWindows (ScreenPtr pScreen);
1411706f2543Smrg
1412706f2543Smrgvoid
1413706f2543SmrgwinMWExtWMMoveXWindow (WindowPtr pWin, int x, int y);
1414706f2543Smrg
1415706f2543Smrgvoid
1416706f2543SmrgwinMWExtWMResizeXWindow (WindowPtr pWin, int w, int h);
1417706f2543Smrg
1418706f2543Smrgvoid
1419706f2543SmrgwinMWExtWMMoveResizeXWindow (WindowPtr pWin, int x, int y, int w, int h);
1420706f2543Smrg
1421706f2543Smrgvoid
1422706f2543SmrgwinMWExtWMUpdateIcon (Window id);
1423706f2543Smrg
1424706f2543Smrgvoid
1425706f2543SmrgwinMWExtWMUpdateWindowDecoration (win32RootlessWindowPtr pRLWinPriv,
1426706f2543Smrg				  winScreenInfoPtr pScreenInfo);
1427706f2543Smrg
1428706f2543SmrgwBOOL CALLBACK
1429706f2543SmrgwinMWExtWMDecorateWindow (HWND hwnd, LPARAM lParam);
1430706f2543Smrg
1431706f2543SmrgBool
1432706f2543SmrgwinIsInternalWMRunning (winScreenInfoPtr pScreenInfo);
1433706f2543Smrg
1434706f2543Smrgvoid
1435706f2543SmrgwinMWExtWMRestackWindows (ScreenPtr pScreen);
1436706f2543Smrg#endif
1437706f2543Smrg
1438706f2543Smrg
1439706f2543Smrg#ifdef XWIN_MULTIWINDOWEXTWM
1440706f2543Smrg/*
1441706f2543Smrg * winwin32rootlesswndproc.c
1442706f2543Smrg */
1443706f2543Smrg
1444706f2543SmrgLRESULT CALLBACK
1445706f2543SmrgwinMWExtWMWindowProc (HWND hwnd, UINT message,
1446706f2543Smrg			    WPARAM wParam, LPARAM lParam);
1447706f2543Smrg#endif
1448706f2543Smrg
1449706f2543Smrg
1450706f2543Smrg/*
1451706f2543Smrg * winwindowswm.c
1452706f2543Smrg */
1453706f2543Smrg
1454706f2543Smrgvoid
1455706f2543SmrgwinWindowsWMSendEvent (int type, unsigned int mask, int which, int arg,
1456706f2543Smrg		       Window window, int x, int y, int w, int h);
1457706f2543Smrg
1458706f2543Smrgvoid
1459706f2543SmrgwinWindowsWMExtensionInit (void);
1460706f2543Smrg
1461706f2543Smrg/*
1462706f2543Smrg * wincursor.c
1463706f2543Smrg */
1464706f2543Smrg
1465706f2543SmrgBool
1466706f2543SmrgwinInitCursor (ScreenPtr pScreen);
1467706f2543Smrg
1468706f2543Smrg/*
1469706f2543Smrg * winprocarg.c
1470706f2543Smrg */
1471706f2543Smrgvoid
1472706f2543SmrgwinInitializeScreens(int maxscreens);
1473706f2543Smrg
1474706f2543Smrg/*
1475706f2543Smrg * winrandr.c
1476706f2543Smrg */
1477706f2543SmrgBool
1478706f2543SmrgwinRandRInit (ScreenPtr pScreen);
1479706f2543Smrgvoid
1480706f2543SmrgwinDoRandRScreenSetSize (ScreenPtr  pScreen,
1481706f2543Smrg                         CARD16	    width,
1482706f2543Smrg                         CARD16	    height,
1483706f2543Smrg                         CARD32	    mmWidth,
1484706f2543Smrg                         CARD32	    mmHeight);
1485706f2543Smrg
1486706f2543Smrg/*
1487706f2543Smrg * END DDX and DIX Function Prototypes
1488706f2543Smrg */
1489706f2543Smrg
1490706f2543Smrg#endif /* _WIN_H_ */
1491706f2543Smrg
1492