Release 960824

Sat Aug 24 13:57:01 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [controls/scroll.c]
	Renamed SCROLLINFO to SCROLLBAR_INFO to avoid conflict with Win32.

	* [graphics/driver.c] [include/x11drv.h]
	New files for graphics driver handling.

	* [if1632/relay.c] [include/registers.h] [tools/build.c]
	Implemented Win32 register functions. Not really tested yet.

	* [include/gdi.h]
	Added a lot of functions to the DC func table.

	* [loader/pe_image.c]
	Initialise %fs before calling out to 32-bit code.

	* [windows/hook.c]
	Fixed bug in HOOK_GetHook().

	* [windows/win.c]
	Fixed FindWindow to return an error if the class name doesn't exist.

Wed Aug 21 15:15:53 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [if1632/Makefile.in] [misc/mpr.c] [if1632/mpr.spec]
	mpr.dll specs added.

	* [if1632/kernel32.spec] [win32/newfns.c] [memory/global.c]
	QueryPerformanceCounter(), GlobalMemoryStatus() added.

	* [if1632/user32.spec] [win32/error.c]
	SetLastErrorEx() added.

	* [misc/commdlg.c]
	lpstrFilter might be NULL in FILE_WMInitDialog (NS 3.0 setup).

	* [misc/registry.c]
	Some missing NULL ptr checks added, misc clean up.

Tue Aug 20 21:00:00 1996 Alex Korobka  <alex@pharm.sunysb.edu>

	* [controls/menu.c]
	Adjust popup menu coordinates so that it always stays within 
	the desktop.

	* [misc/main.c]
	Fixed GetEnvironment() return value for lpEnv == NULL case.

Mon Aug 19 22:48:36 1996  Jukka Iivonen <iivonen@cc.helsinki.fi>

	* [misc/crtdll.c] [if1632/crtdll.spec]
	Added some is* functions, strlen and tolower.
	
Mon Aug 19 13:33:13 1996  Stephen Simmons  <ssimmons@vitsemi.com>

	* [tools/wineconf]
	New perl script to generate the wine.conf file.

Fri Aug 16 15:31:44 1996   John Harvey <john@division.co.uk>

	* [if1632/gdi.spec]
        Lots of printer functions.
	
	* [include/callback.h]
        New functions for printer driver support.

	* [include/gdi.h]
        New/changed structures to support printer driver.

	* [misc/escape.c]
        New version that uses function table in DC structure.

	* [objects/dc.c]
        CreateDC copes with things other than Display.
	X code for CreateDC moved to graphics/x11drv directory.
	CreateCompatibleDC copies func table from original DC.

	* [objects/font.c]
        GetTextExtentPoint32A,GetTextMetrics16 use function table in
        DC and code moved to drivers directory.

	* [misc/printdrv.c] [graphics/*/*] [include/win16drv.h]
        New files for printer support. 

Fri Aug 16 12:33:00 1996  Bruce Milner <Bruce.Milner@genetics.utah.edu>

	* [controls/scroll.c]
	Added SetScrollInfo32 and GetScrollInfo32.  These just call existing
	code. There are a few options in which I'm probably the wrong person
	for the job (page size and disable bar). There are comments in the
	code as to what they should do.

	* [objects/gdiobj.c] [objects/font.c] [include/font.h]
	Added 32 bit version of FONT_GetObject.
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c
new file mode 100644
index 0000000..5933d73
--- /dev/null
+++ b/graphics/x11drv/init.c
@@ -0,0 +1,148 @@
+/*
+ * X11 graphics driver initialisation functions
+ *
+ * Copyright 1996 Alexandre Julliard
+ */
+
+#include <string.h>
+#include "x11drv.h"
+#include "bitmap.h"
+#include "gdi.h"
+
+
+static BOOL32 X11DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device,
+                               LPCSTR output, const DEVMODE* initData );
+static BOOL32 X11DRV_DeleteDC( DC *dc );
+
+static const DC_FUNCTIONS X11DRV_Funcs =
+{
+    NULL,                            /* pArc */
+    NULL,                            /* pBitBlt */
+    NULL,                            /* pChord */
+    X11DRV_CreateDC,                 /* pCreateDC */
+    X11DRV_DeleteDC,                 /* pDeleteDC */
+    NULL,                            /* pDeleteObject */
+    NULL,                            /* pEllipse */
+    NULL,                            /* pEscape */
+    NULL,                            /* pExcludeClipRect */
+    NULL,                            /* pExcludeVisRect */
+    NULL,                            /* pExtFloodFill */
+    NULL,                            /* pExtTextOut */
+    NULL,                            /* pFillRgn */
+    NULL,                            /* pFloodFill */
+    NULL,                            /* pFrameRgn */
+    X11DRV_GetTextExtentPoint,       /* pGetTextExtentPoint */
+    NULL,                            /* pGetTextMetrics */
+    NULL,                            /* pIntersectClipRect */
+    NULL,                            /* pIntersectVisRect */
+    NULL,                            /* pInvertRgn */
+    NULL,                            /* pLineTo */
+    NULL,                            /* pMoveToEx */
+    NULL,                            /* pOffsetClipRgn */
+    NULL,                            /* pOffsetViewportOrgEx */
+    NULL,                            /* pOffsetWindowOrgEx */
+    NULL,                            /* pPaintRgn */
+    NULL,                            /* pPatBlt */
+    NULL,                            /* pPie */
+    NULL,                            /* pPolyPolygon */
+    NULL,                            /* pPolygon */
+    NULL,                            /* pPolyline */
+    NULL,                            /* pRealizePalette */
+    NULL,                            /* pRectangle */
+    NULL,                            /* pRestoreDC */
+    NULL,                            /* pRoundRect */
+    NULL,                            /* pSaveDC */
+    NULL,                            /* pScaleViewportExtEx */
+    NULL,                            /* pScaleWindowExtEx */
+    NULL,                            /* pSelectClipRgn */
+    NULL,                            /* pSelectObject */
+    NULL,                            /* pSelectPalette */
+    NULL,                            /* pSetBkColor */
+    NULL,                            /* pSetBkMode */
+    NULL,                            /* pSetDIBitsToDevice */
+    NULL,                            /* pSetMapMode */
+    NULL,                            /* pSetMapperFlags */
+    NULL,                            /* pSetPixel */
+    NULL,                            /* pSetPolyFillMode */
+    NULL,                            /* pSetROP2 */
+    NULL,                            /* pSetRelAbs */
+    NULL,                            /* pSetStretchBltMode */
+    NULL,                            /* pSetTextAlign */
+    NULL,                            /* pSetTextCharacterExtra */
+    NULL,                            /* pSetTextColor */
+    NULL,                            /* pSetTextJustification */
+    NULL,                            /* pSetViewportExtEx */
+    NULL,                            /* pSetViewportOrgEx */
+    NULL,                            /* pSetWindowExtEx */
+    NULL,                            /* pSetWindowOrgEx */
+    NULL,                            /* pStretchBlt */
+    NULL,                            /* pStretchDIBits */
+    NULL                             /* pTextOut */
+};
+
+static DeviceCaps X11DRV_DevCaps;
+
+/**********************************************************************
+ *	     X11DRV_Init
+ */
+BOOL32 X11DRV_Init(void)
+{
+    return DRIVER_RegisterDriver( "DISPLAY", &X11DRV_Funcs );
+}
+
+
+/**********************************************************************
+ *	     X11DRV_CreateDC
+ */
+static BOOL32 X11DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device,
+                               LPCSTR output, const DEVMODE* initData )
+{
+    X11DRV_PDEVICE *physDev;
+
+    if (!X11DRV_DevCaps.version) DC_FillDevCaps( &X11DRV_DevCaps );
+
+    physDev = &dc->u.x;  /* for now */
+
+    memset( physDev, 0, sizeof(*physDev) );
+    dc->physDev        = physDev;
+    dc->w.devCaps      = &X11DRV_DevCaps;
+    if (dc->w.flags & DC_MEMORY)
+    {
+        BITMAPOBJ *bmp = (BITMAPOBJ *) GDI_GetObjPtr( dc->w.hBitmap,
+                                                      BITMAP_MAGIC );
+        physDev->drawable  = bmp->pixmap;
+        physDev->gc        = XCreateGC( display, physDev->drawable, 0, NULL );
+        dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel;
+        dc->w.hVisRgn      = CreateRectRgn( 0, 0, bmp->bitmap.bmWidth,
+                                            bmp->bitmap.bmHeight );
+    }
+    else
+    {
+        physDev->drawable  = rootWindow;
+        physDev->gc        = XCreateGC( display, physDev->drawable, 0, NULL );
+        dc->w.bitsPerPixel = screenDepth;
+        dc->w.hVisRgn      = CreateRectRgn( 0, 0, screenWidth, screenHeight );
+    }
+
+    if (!dc->w.hVisRgn)
+    {
+        XFreeGC( display, physDev->gc );
+        return FALSE;
+    }
+
+    XSetGraphicsExposures( display, physDev->gc, False );
+    XSetSubwindowMode( display, physDev->gc, IncludeInferiors );
+
+    return TRUE;
+}
+
+
+/**********************************************************************
+ *	     X11DRV_DeleteDC
+ */
+static BOOL32 X11DRV_DeleteDC( DC *dc )
+{
+    X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+    XFreeGC( display, physDev->gc );
+    return TRUE;
+}