This is release 0.9.24 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - Support for multiple monitors using Xinerama.
  - Various MSI fixes and improvements.
  - A ton of memory leaks fixed.
  - Many common controls fixes.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.24.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.24.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Changes since 0.9.23:

Alexandre Julliard (49):
      ntdll: More workarounds for more kernel bugs in VFAT ioctl mapping on x86-64.
      urlmon: Create a message window for each binding to make sure they are cleaned up properly.
      server: A window timer id should be an unsigned long.
      libuuid: Fixed typo in CLSID_SynchronizeContainer.
      makedep: Added support for generating dependencies of IDL client/proxy/server/iid files.
      Make.rules: Added support for building IDL client/proxy/server/iid files.
      configure: Don't define _WIN64 on the command line to avoid trouble with system headers.
      msi/tests: Make sure to delete the test data file.
      advapi32: Cast-qual warning fix.
      winex11.drv: Hack to work around an Xlib bug when XInitThreads is used.
      winex11.drv: Avoid X error with unsupported pen styles.
      Avoid usage of sizeof in traces that causes warnings on MacOSX.
      gdi32: Renamed the gdi directory to gdi32.
      winecoreaudio.drv: Win64 printf format fixes.
      wineaudioio.drv: Win64 printf format fixes.
      dnsapi: Avoid non-portable types.
      configure: Check for the Xinerama extension.
      winex11.drv: Preliminary support for Xinerama.
      user: Moved GetMonitorInfo and EnumDisplayMonitors to the display driver.
      user: Take multiple monitors into account when placing a popup menu.
      user: Take multiple monitors into account when placing a window.
      user: Take multiple monitors into account when placing a dialog.
      user: Fixed combo box drop position on multi-monitor setups.
      user: Maximize windows to the right monitor on multi-monitor setups.
      comctl32: Position the tooltip window correctly on multi-monitor setups.
      user: Adapt system metrics for multi-monitor setups.
      user: Fixed MonitorFromWindow behavior for an invalid window handle.
      user: Make sure the desktop window exists before calling monitor functions.
      notepad: Fallback to default position if saved position if off-screen.
      Revert "kernel32: Exit from initial thread with ExitThread not by ExitProcess."
      comctl32: Properly handle negative coordinates for mouse events.
      hhctrl.ocx: Properly handle negative coordinates for mouse events.
      msi: Properly handle negative coordinates for mouse events.
      shell32: Properly handle negative coordinates for mouse events.
      user32: Properly handle negative coordinates for mouse events.
      oleview: Properly handle negative coordinates for mouse events.
      regedit: Properly handle negative coordinates for mouse events.
      wineconsole: Properly handle negative coordinates for mouse events.
      winefile: Properly handle negative coordinates for mouse events.
      winemine: Properly handle negative coordinates for mouse events.
      winhelp: Properly handle negative coordinates for mouse events.
      user32: Fixed maximized window size on multi-monitor setups.
      server: Always ignore the root window position when computing coordinates offsets.
      winex11.drv: Offset X11 coordinates with the primary monitor position.
      kernel32: Close the directory handle in FindNextFile as soon as we reach the end of the directory.
      winedump: Avoid some dead code.
      wined3d: Fix a memory leak (spotted by Eric Pouech).
      wined3d: The WineD3D_GLContext structure doesn't need to be exported.
      wined3d: Simplify some uses of the WineD3D_Context object.

Andrew Talbot (13):
      user: Dead code fix (Coverity).
      atl: Cast-qual warnings fix.
      dbghelp: Cast-qual warnings fix.
      cabinet: Cast-qual warnings fix.
      comctl32: Cast-qual warnings fix.
      comctl32: Cast-qual warnings fix.
      comdlg32: Cast-qual warnings fix.
      comdlg32: Cast-qual warning fix.
      crypt32: Cast-qual warnings fix.
      user: Remove superfluous shadow variable.
      crypt32: Cast-qual warnings fix.
      d3d8: Cast-qual warnings fix.
      crypt32: Cast-qual warnings fix.

Andrey Turkin (2):
      mshtml: Insert missing "return" operator.
      ddraw: Add missing dereference operators.

Aric Stewart (1):
      winex11.drv: Only create a fontSet if we are going to be using it in the XIC.

Byeong-Sik Jeon (4):
      Korean: Use SUBLANG_NEUTRAL in Korean resources.
      winefile: Update Korean resources.
      oleview: Update Korean resources.
      notepad: Update Korean resources.

Christoph Frick (1):
      gdi32: Add wglShareList to gdi32.spec.

Cihan Altinay (1):
      shdocvw: Make sure BSTR is allocated before calling sink.

Damjan Jovanovic (1):
      rpcrt4: Added support for RPC TCP servers.

David Anderson (1):
      dbghelp: Avoid printing too many "What the heck" messages from winedbg.

Detlef Riekenberg (8):
      localspl/tests: Another test for InitializePrintMonitor.
      localspl/tests: Get function pointers from the monitor.
      localspl: Implement InitializePrintMonitor.
      localspl/tests: Fallback to localmon.dll on NT4.0.
      localspl: Add version resource.
      localspl: Remember hInstance, needed for resources.
      user: Remove wrong comment.
      tools/wine.inf: Add default printer ports.

Dmitry Timoshkov (8):
      setupapi: Fix a typo.
      user: Add a test for ShowWindow(SW_MAXIMIZE) called on an invisible maximized MDI child, make it mostly pass under Wine.
      wine.inf: Update RelayExclude and add RelayFromExclude filter in order to avoid not useful APIs in the traces.
      oleaut32: Add a test for QueryPathOfRegTypeLib.
      oleaut32: Make QueryPathOfRegTypeLib test pass under Wine.
      user32: Make the test pass for GetClassName called on a small buffer.
      kernel32: Exit from initial thread with ExitThread not by ExitProcess.
      kernel32: Exit from initial thread with ExitThread not by ExitProcess.

Duane Clark (1):
      msvcrt: Fix fread on large buffers in ascii mode.

Eric Pouech (14):
      ntdll: Plug a memory leak.
      advapi32: Plug a couple of memory leaks.
      ntdll: Added debug support for notifying block allocation / freeing.
      advpack: Plug a couple of memory leaks.
      winsock: Clear the held mask with the requested events so that they can be signaled.
      configure: Now that we have dwarf support for debug info, don't force stabs as debug info format.
      winedbg: Added a few more cases where we inspect if i386 instructions
      advapi32: Fixed a couple items from previous patch (spotted by G Pfeifer).
      winex11.drv: As the min keycode is always greater or equal to 8, we
      gdi32: Better error handling in enhanced metafile.
      msxml: Fixed list walking in xmlnodelist_get_length.
      ole32: CoUninitialize: No longer access an object after it's been freed.
      ole32: Fixed some wrong conditions in OleFlushClipboard.
      netapi32: Fix the size of allocation for the string returned from NetpGetComputerName.

Francois Gouget (10):
      wined3d: Remove '\0's in traces.
      oleview: U(x) must be defined after winnt.h has had a chance to define NONAMELESSUNION. Fixes the compilation with gcc 2.95.
      msi: Remove spaces before '\n's.
      Assorted spelling fixes.
      Fix compilation with gcc 2.95.
      Add '\n's to Wine traces.
      wininet: HttpSendRequestW() returns ERROR_IO_PENDING when called on an async socket. But that does not mean that it failed.
      oleview: Fix compilation with gcc 2.95.
      msi/tests: Fix compilation with gcc 2.95.
      Don't include windows.h & co in the Wine sources.

Frank Richter (14):
      mshtml: Update German translation.
      mshtml: Enlarge status text control ins some translated dialogs so all text is readable.
      mshtml: Left-align Gecko download information message for better readability.
      oledlg: Update German translation.
      clock: Update German translation.
      cmdlgtst: Update German translation.
      notepad: Update German translation.
      progman: Update German translation.
      regedit: Update German translation.
      taskmgr: Update German translation.
      winefile: Update German translation.
      gphoto2.ds: Add German translation.
      oleview: Add German translation.
      wineconsole: Update German translation.

Hans Leidekker (6):
      wininet: Cast-qual warnings fix.
      riched20: Win64 printf format warning fixes.
      secur32: Win64 printf format warning fixes.
      winhelp: Cast-qual warnings fix.
      ntdll: Win64 printf format warning fixes.
      dnsapi: Add stubs for DnsWriteQuestionToBuffer_{UTF8,W}.

Huw Davies (35):
      oledlg: Add resource ids for the paste special dialog.
      oledlg: Move the flag defines to under their respective structure definitions and remove some duplicates.
      oledlg: Add PS_MAXLINKTYPES.
      oledlg: Add the registered message name strings.
      oledlg: Move paste special dialog stubs to their own file.
      oledlg: Register a bunch of clipboard formats.
      oledlg: Debugging code to dump the OLEUIPASTESPECIAL structure.
      oledlg: Forward OleUIPasteSpecialA -> OleUIPasteSpecialW.
      oledlg: Paste special dialog resource.
      oledlg: Load the correct dialog template and add a skeleton dialog proc.
      oledlg: Initial management of private structure for dialog box control.
      oledlg: Use the clipboard if the user doesn't pass an IDataObject.
      oledlg: Set the user supplied caption.
      oledlg: Initialize the paste list.
      oledlg: Initialize the pastelink list.
      oledlg: Logic for initial selection of paste/pastelink radio buttons.
      oledlg: Copy the appropiate list to the display list.
      oledlg: Register a couple of messages.
      oledlg: Send the OLEUI_MSG_ENDDIALOG messsage when closing the dialog.
      oledlg: Post OLEUI_MSG_HELP when the Help button is pressed and hide the Help button if the app doesn't want it.
      oledlg: Add paste special string resources.
      oledlg: Update the result text.
      oledlg: Minimal 'As Icon' handling. Just disable for now.
      oledlg: Handle paste / link mode change.
      oledlg: Set initial focus to the display list.
      oledlg: Call the hook proc if present.
      oledlg: Retrieve names from the OBJECTDESCRIPTOR structure.
      oledlg: Set nSelectedIndex on exit.
      oledlg: Update the source text.
      oledlg: Return the appropiate value after the dialog is closed.
      oledlg: Remove the structure window property when we quit.
      oledlg: Only send the end dialog msg if the button is actually clicked.
      winex11.drv: Initialize data->xim to NULL if xim has been disabled.
      winex11.drv: Give XCloseIM another chance.
      winex11.drv: Only initialize static variables once per process.

Hwang YunSong(황윤성) (4):
      wineconsole: Updated Korean resource.
      oledlg: Updated Korean resource.
      oledlg: Updated Korean resource.
      kernel32: Added winerr_kor.mc.

Ivan Gyurdiev (6):
      wined3d: D3DLOCK: Use consistently in the WINED3D namespace.
      wined3d: Add D3DTADDRESS to the WINED3D namespace.
      wined3d: Add D3DVS_RASTOUT_OFFSETS to the WINED3D namespace.
      wined3d: Add D3DTA masks to the WINED3D namespace.
      wined3d: Add D3DBLEND to the WINED3D namespace.
      wined3d: Add D3DZBUFFERTYPE to the WINED3D namespace.

Jacek Caban (18):
      mshtml: Don't crash in remove_doc_tasks if thread_data is not allocated.
      mshtml: Load page from moniker if AsyncOpen fails.
      shdocvw: Added IDocHostUIHandler2 test.
      shdocvw: Move common Navigate2 code to navigate_url.
      shdocvw: Use navigate_url in WebBrowser::Navigate.
      shdocvw: Added WebBrowser::Navigate implementation.
      mshtml: Fix debug traces.
      mshtml: Use mshtmcid.h defines where possible.
      mshtml: Don't return empty string in IHTMLSelectElement::get_name.
      mshtml: Added IHTMLElement::get_className implementation.
      wininet: Use HTTP_ADDHDR_FLAG_REPLACE flag in HTTP_HttpSendRequest to add Content-Length header.
      shdocvw: Fix windows style of windows without parents.
      urlmon: Added image/tiff mime filter.
      urlmon: Added video/avi mime filter implementation.
      urlmon: Code clean up.
      urlmon: Added video/mpeg mime filter.
      include: Added urlhist.idl.
      shdocvw: Added CUrlHistory stub implementation.

James Hawkins (26):
      clusapi: Add the clusapi.h public header.
      include: Move cfgmgr32.h to include/ to match the SDK.
      msi: Also set the SOURCEDIR property in MSI_InstallPackage.
      mscoree: Add missing stubs to the spec file.
      mscoree: Add stub implementations of CorBindToRuntimeHost and GetCORVersion.
      msi: Revert "msi: Perform button control events in greatest to least order."
      msi: Run SetProperty events before all other events no matter what the order is.
      msi: Set the USERNAME and COMPANYNAME properties when initializing a package.
      msi: Add tests for the InstallServices action.
      msi: Implement the InstallServices action.
      msi: Use the ProgramFileDir reg value instead of ProgramFilesPath.
      msi: Only initialize a component's state if it is linked with a feature.
      tools/wine.inf: Add the ProgramFilesPath registry entry.
      msi: Allow more than one primary key in a table when importing a database.
      msi: Integer columns can have the 'NOT NULL' modifier too.
      msi: Add tests for integer column types.
      msi: Add support for localizable strings in MsiDatabaseImport.
      msi: Remove two unnecessary install tables.
      msi: Remove unused function pointer and definitions.
      msi: Allow more customization of install test files.
      msi: Add tests for installing from continuous cabinets.
      advpack: Fix the full path check.
      msi: Add tests for the UPDATE sql command.
      msi: Implement handling for the ErrorDialog and use it to change media.
      msi: Test the order in which cab files are handled in the Media table.
      msi: Extract cabinets based on DiskId, not LastSequence.

Jeff Latimer (5):
      ole32: Remove dead code in errorinfo.c (Coverity).
      usp10: Fix dead code in ScriptItemize.
      tools: Add addtional help to runtest.
      usp10: Add tests for ScriptStringAnalyse and ScriptStringFree.
      usp10: Add tests for ScriptStringCptoX and ScriptStringXtoCp for activation in later patches.

Jesse Allen (1):
      include: Fix out of place comment for DLGC_* codes.

Jonathan Ernst (4):
      taskmgr: Fix an error in French translation.
      Use SUBLANG_NEUTRAL in French resources.
      wineconsole: Updated French translation.
      oledlg: Updated French translation.

Kai Blin (4):
      secur32: Implement RFC2104 (HMAC) with MD5 for NTLMv2.
      secur32: Get rid of NEGO_* helper modes, they will never be used. Negotiate should not be done via ntlm_auth.
      secur32: Stop leaking the session key memory.
      secur32: Add include guard to hmac_md5.h.

Karsten Elfenbein (3):
      wined3d: BltOverride: Make sure that the content of the source rect is
      wined3d: Correct the software cursor position if the app is running in windowed mode.
      wined3d: Fix the FrontBuffer content capturing.

Kevin Krammer (1):
      winebrowser: Support for Portland Initiative scripts.

Kirill K Smirnov (1):
      winhelp: Properly implement context help and JumpContext macro.

Kirill K. Smirnov (3):
      winhelp: Use color specified in .hlp file for background, not just WHITE_BRUSH.
      winhelp: Window style has not been initialized.
      winhelp: Improved metafile support.

Kovács András (2):
      mlang: Set fnIMLangFontLink_GetStrCodePages stub return values.
      wined3d: Implement D3DSIO_MOVA in ARB backend.

Louis. Lenders (2):
      olepro32: Add version resource.
      msvcrt: Add stub for _getmaxstdio.

Marcus Meissner (3):
      iphlpapi: NetBSD needs sys/param.h.
      wineoss: On non-OSS systems define MidiExit too.
      mshtml: Moved release of dom_window to right place.

Markus Amsler (3):
      d3d8: Fix wrong function name in FIXME.
      d3d8: Backport d3d9 surface tests.
      msvcrt: Speed up new operator.

Michael Ploujnikov (2):
      comctl32: Win64 printf format warning fixes.
      ole32/tests: Win64 printf format warning fixes.

Michael Stefaniuc (7):
      setupapi: Win64 printf format warning fixes.
      imm32: Win64 printf format warning fixes.
      ntdll/tests: Win64 printf format warning fixes.
      janitorial: Remove redundant NULL checks before calling HeapFree wrappers.
      The Data1 member of the GUID struct needs to be an unsigned int too for Win64 compatibility.
      ole32: Win64 printf format warning fixes.
      comctl32/tests: Specify type of function argument and remove unused arguments.

Mike McCormack (28):
      winetest: Avoid calling fclose twice on the same file (Coverity).
      msi: Add a test for summary information.
      msi: Add a test for modifying a table containing binary data.
      msi: Fix a memory leak.
      msi: Stream fields shouldn't be treated as strings.
      msi: Fix tables with binary data where the key is an integer.
      msi: Reset the column number for each new table in a transform.
      msi: Allow rows in the _Columns table to be unordered.
      msi: Fix an uninitialized variable causing random conformance test failures.
      msi: Initialize the summary information from a storage interface, not a db.
      msi: Only apply transforms that are valid for a database.
      msi: Add the column type INTEGER as an alias for INT.
      msi: Fix insertion of null integers into a table.
      user32: Add a test showing a problem in GetClassNameA.
      riched20: Make sure to use GlobalAlloc with GlobalFree.
      riched20: Create macro functions for allocating and freeing memory.
      msi: Split code to get a file's verion into a separate comment.
      comctl32: Create a point from index function and use it.
      msi: Create macro functions to set feature and component states.
      msi: Use msi_feature_set_state and msi_component_set_state where possible.
      msi: Fixed the UPDATE query to work with explicit values.
      msi: Remove some unused functions.
      msi: Update tables using records, not integer by integer.
      msi: Allow UPDATE queries without a condition.
      msi: Fix the join algorithm.
      comctl32: Move code assuming Nx1 into ImageList_CreateImage.
      msi: Remove redundant null checks before MSI_EvaluateCondition.
      msi: Avoid crashing if writeout_cabinet_stream fails.

Mikołaj Zalewski (37):
      comctl32: toolbar: Change the dwData from DWORD to DWORD_PTR.
      comctl32: toolbar: Don't try to redraw buttons outside of the clipping rect.
      comctl32: toolbar: Use nHotItem not nOldHit for the hot item in MouseLeave.
      comctl32: toolbar: Test and improve TB_SETHOTITEM.
      comctl32: rebar: bUnicode and NtfUnicode should be the same.
      comctl32: header: Make all repaints pass through HEADER_Refresh.
      comctl32: header: Test and improve the custom draw and owner draw code.
      winetest: Don't start test programs with STARTUPINFO.wShowWindow = SW_HIDE.
      user32: Don't create timers with nEventId == 0 in TrackMouseEvent.
      user32: When calling TrackMouseEvent with TME_LEAVE the dwHoverTime may be uninitialized.
      comctl32: listview: Update the scroll bars after resizing the last column.
      user32: Send a WM_MOUSELEAVE even if another window calls TrackMouseEvent before the timer proc is called.
      comctl32: rebar: Don't return rectangles with negative width or height in NCCalcSize.
      comctl32: rebar: Use SM_CYEDGE for heights in NCCalcSize.
      comctl32: toolbar: Fix the tests and handling of TB_SETHOTITEM on a disabled button.
      wineconsole: Add usage message and more specific error messages.
      wineconsole: Change selection on WM_KEYDOWN not WM_KEYUP.
      wineconsole: Remove spaces from the ends of lines while copying to the clipboard.
      wineconsole: Allow making selections with a mouse also when not in the QuickEdit mode.
      wineconsole: Make most keys cancel the selection.
      wineconsole: WM_RBUTTONDOWN lParam is in client coordinates not window coordinates.
      oledlg: Add Polish translation.
      hhctrl.ocx: Add Polish translation.
      comdlg32: Pl.rc: Enlarge the Find dialog to show the whole radio buttons text.
      wineconsole: En.rc: Enlarge the "save console settings" dialog to avoid cropping of text.
      wineconsole: Check one of the radio buttons in the "Save settings" dialog.
      wineconsole: Fix Polish translation.
      notepad: Add a generic function for message boxes with a string parameter.
      notepad: Implement Find and Find Next.
      notepad: Fix ellipsis in menu items.
      shlwapi/tests: Make the string.c tests compile in Visual C++.
      shlwapi/tests: Enable the locale-dependent tests if the delimiters are correct.
      shlwapi/tests: Disable the StrFromTimeInterval tests as they are language-dependent.
      shlwapi: Test and fix StrRStrI[AW].
      resources: Change German sublanguage code to SUBLANG_NEUTRAL.
      resources: Change Dutch sublanguage code to SUBLANG_NEUTRAL.
      comdlg32: Select the Filename edit box content after the user navigated to a directory by entering there the name.

Oleg Krylov (3):
      comctl32: toolbar: Create tooltip on TB_GETTOOLTIPS message if not yet created.
      comctl32: statusbar: Create tooltip window with WS_POPUP and TTS_ALWAYSTIP style.
      comctl32: Create tooltip windows with WS_POPUP style.

Paul Vriens (1):
      regedit: Initialize a variable (Coverity).

Peter Oberndorfer (2):
      configure: Detect mingw cross compiler in gentoo.
      winedbg: Print frame address instead of duplicated bare address in backtrace.

Pierre d'Herbemont (2):
      x11drv: Fix a typo in x11drv.h about X11DRV_GetTextExtentExPoint.
      quartzdrv: Add the quartz (Mac OS X) video driver to the build system.

Rob Shearman (21):
      comctl32: Fix imagelist leak in tests.
      ole32: Fix some memory leaks in the marshal tests.
      oleaut32: Fix memory leaks after calling ITypeInfo::GetNames.
      oleaut32: Fix some reference count and memory leaks in the typelib marshaling code.
      oleaut32: Free allocated memory on typelib and typeinfo destruction.
      oleaut32: Rewrite MSFT_ReadName and MSFT_ReadString to need one less allocation and to fix a memory leak.
      oleaut32: Fix two more leaks on type info destruction.
      oleaut32: Fix a missing ITypeInfo::ReleaseTypeAttr in the typelib marshaling code.
      oleaut32: Initialise all members of the FUNCDESC structure in CreateDispTypeInfo.
      oleaut32: Fix a reference count leak in CreateDispTypeInfo.
      oleaut32: Fix a reference count leak in the typelib test.
      oleaut32: Free the array subscript memory for type descriptions when freeing the typelib.
      oleaut32: Fix a crash in dump_DispParms when running the typelib test with debug tracing on.
      rpcrt4: Move transport-specific server functions to rpc_transport.c.
      ole32: Always call IRpcChannelBuffer_GetBuffer in the class factory stub.
      ole32: Fix some memory leaks in the class factory proxy.
      oleaut32: Update comments at the top of typelib.c and remove "stub" from several traces that are in implemented functions.
      ole32: Fix a memory leak on the error path of dispatch_rpc.
      rpcrt4: Fix RPCRT4_Receive to accept authentication verifier data on any packets, not just bind packets.
      rpcrt4: Don't terminate the loop on the buffer becoming filled, but when we receive a packet with the RPC_FLG_LAST flag set.
      rpcrt4: The allocation hint in request and response packets is just that - a hint.

Robert Shearman (6):
      rpcrt4: Create a server thread for each protseq.
      rpcrt4: Rename protseq_ops to connection_ops to reflect the fact that
      rpcrt4: Abstract out the way incoming connections are waited for so that we no longer need to wait on Win32 handles.
      rpcrt4: Convert the protseq list into a standard Wine list.
      rpcrt4: Add a critical section to protect the connection list in each
      kernel32: Add support for detecting the user locale preference from the system on Mac OS X.

Roderick Colenbrander (6):
      wgl: Move wglGetCurrentContext to gdi32.
      wgl: Move wglGetCurrentDC to gdi32.
      wgl: Move wglShareLists to gdi32.
      wgl: Move wglDeleteContext to gdi32.
      gdi32: Add missing spec file entry for wglDeleteContext.
      wgl: Move part of wglGetProcAddress to gdi32.

Stefan Dösinger (7):
      d3d8: Implement CopyRects with BltFast.
      ddraw: Make the surface list a standard wine list.
      ddraw: Use real handles for state blocks.
      ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTUREHANDLE.
      ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTUREADDRESS[U/V].
      ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTURE[MIN/MAG].
      ddraw: Forward the depth stencil buffer to wined3d.

Vitaliy Margolen (5):
      dinput: Use dinput device as a base class for keyboard,  mouse and joystick.
      dinput: Move SetEventNotification and associated event into base class.
      dinput: Move SetCooperativeLevel into base class.
      dinput: Add SetCooperativeLevel tests to keyboard.
      dinput: Add SetCooperativeLevel test for joystick.

--
Alexandre Julliard
julliard@winehq.org
