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

What's new in this release:
  - Many MSHTML improvements.
  - A few more sound fixes.
  - Many Direct3D 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.40.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.40.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.39:

Alex Villacís Lasso (6):
      quartz: Fix video rendering sizing/positioning bugs.
      mciwave: Prevent division by zero when processing non-PCM codec.
      winealsa: Reduce writeahead to next multiple of psize greater than 512.
      dsound: Make test recover from failure to preserve primary buffer length after SetFormat().
      dsound: Reset device playpos/mixpos on buflen change.
      winemp3: Announce capability to decode at 48 KHz.

Alexander Nicolaysen Sørnes (3):
      wordpad: Use Unicode functions in more places.
      wordpad: Set default font effects to 0.
      wordpad: Remove unnecessary toolbar resizing code.

Alexandre Julliard (22):
      kernel32: Fix VxD open code for the new NtCreateFile syntax for Unix files.
      winedos: Fix the device open code for the new NtCreateFile syntax for Unix files.
      winedbg: Added support for indirect call with absolute address.
      ntdll: Improved the stub behavior of NtQuerySystemInformation(SystemModuleInformation).
      server: Don't crash when trying to set a file lock on a device.
      makefiles: Build programs that link against libwine twice with appropriate rpaths.
      comctl32: Get rid of CharNextW/CharPrevW. Simplify some string functions.
      shlwapi: Get rid of CharNextW/CharPrevW. Simplify some string functions.
      shell32: Get rid of CharNextW.
      advpack: Get rid of CharPrevW.
      server: Make crash error message more explicit.
      ntdll: Use the standard exception handling for vm86 GP faults too.
      mapi32: Get rid of unneeded CharNextA call.
      crypt32: Fix incorrect usage of CharNextA.
      wineps.drv: List source files explicitly in the makefile to make it easier to parse.
      ddraw: Don't link against X libraries.
      crypt32: Fix an uninitialized variable compiler warning.
      msi: Avoid some redundant checks in MsiCloseHandle.
      wrc: Strip C code based on the name of the include file.
      wpp: Don't suppress output from C include files, that's up to the user.
      ntdll: Don't print traces from async I/O callbacks.
      ws2_32: Don't print traces from async I/O callbacks.

Andrew Talbot (11):
      msi: Name all or none of the formal arguments in function prototypes.
      msvidc32: Constify some variables.
      netapi32: Constify some variables.
      d3d9/tests: Fix use of uninitialized variable (Coverity).
      msi: Fix use of uninitialized variable (Coverity).
      ntdll: Constify some variables.
      ntdll: Constify some variables.
      ntdll: Constify some variables.
      ntdll: Constify some variables.
      ntdll: Constify some variables.
      ole32: Constify some variables.

Aric Stewart (1):
      riched20: Make richedit control IME aware.

Damjan Jovanovic (1):
      winex11.drv: Added better support for the X file drag protocol.

Dan Hipschman (13):
      rpcrt4: Add encapsulated union tests.
      rpcrt4: Remove inaccurate comments.
      rpcrt4: Fix bug calculating union switch type.
      rpcrt4: Fix typo in union buffer size calculation.
      widl: Add tests for arrays of pointers.
      widl: Fix warnings about unused function parameters.
      widl: Check for interface pointers in pointer handling.
      widl: Check for user types when calculating buffer size.
      widl: Get simple enums working.
      widl: Fix crash dealing with anonymous unions.
      rpcrt4/tests: Wrap a try/except block around tests.
      rpcrt4: Allow enums as union switch types.
      widl: Allow enums as union switch types.

David Adam (1):
      wordpad: French translation for the view item.

Detlef Riekenberg (10):
      winspool/tests: Add tests for AddPortEx.
      localspl/tests: Add tests for AddPortEx.
      printui: Add stub for printui.dll.
      printui: Add version resource.
      ntprint: Add a stub for ntprint.dll.
      ntprint: Add version resource.
      ntprint: Implement PSetupCreateMonitorInfo.
      ntprint/tests: Add initial test.
      ntprint: Implement PSetupEnumMonitor.
      ntprint/tests: Add tests for PSetupEnumMonitor.

Dmitry Timoshkov (4):
      user32: Insert menu item only after contents of the passed in menu item info have been verified.
      user32: When inserting a menu item make sure that MDI system buttons stay on the right side.
      user32: Make MDI get_client_info checks more strict.
      shell32: Make SHGetDesktopFolder use a cached instance of IShellFolder.

Emmanuel Maillard (1):
      configure: Fix libxml2 detection on Mac OS X.

Evan Stade (10):
      gdiplus: Implemented GdipDrawBezier.
      gdiplus: Implemented GdipDrawPie/GdipFillPie.
      gdiplus: Implemented GdipDrawArc.
      gdiplus: Implemented GdipDrawCurve2.
      gdiplus: Implemented GdipDrawLines.
      gdiplus: Implemented GdipCreatePath and GdipDeletePath.
      gdiplus: Fix broken graphics path constructor.
      gdiplus: Fix erroneous pen error checking.
      gdiplus: Tidy up graphics constructor.
      gdi32: Added missing call to GDI_ReleaseObj.

Francois Gouget (11):
      regedit: Add missing '\n' to an error message.
      regedit: Don't allow square-bracketed registry paths on the command line (to match native).
      regedit: Merge getRegClass() and getRegKeyName() to form parseKeyName().
      winapi_check: ULONG_PTR is a 'long --pointer', not a 'long'.
      shlwapi: Update win32.api to fix the winapi_check warnings.
      crypt32/tests: Fix compilation on systems that don't support nameless unions.
      advapi32: Add more RegGetValue() conformance tests, and fix Wine accordingly.
      winapi: Add support for GDIPCONST.
      gdi32/tests: Run the GetTextMetricsA() tests on Windows 9x too.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      dsound: Add missing '\n' to Wine trace.

H. Verbeet (23):
      wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for mapped stages.
      wined3d: Mask texture stage state arguments with WINED3DTA_SELECTMASK when comparing them.
      wined3d: Use texture2D to sample in pshader_glsl_texdp3tex().
      wined3d: Make use of the texUnitMap in drawStridedSlow as well.
      wined3d: Fix various incorrect uses of GL_LIMITS(texture_stages) and GL_LIMITS(sampler_stages).
      wined3d: Do not mark texture stages > MAX_TEXTURES dirty, they don't exist.
      wined3d: Keep track of what stage a texturing unit is mapped to.
      wined3d: Keep track of what fixed function texture stages are in use.
      wined3d: Split of the mapping of fixed function samplers from IWineD3DDeviceImpl_FindTexUnitMap().
      wined3d: Remove the sharing of mapping code for fixed function and pixel shader samplers.
      wined3d: Split of the mapping of pixel shader samplers from IWineD3DDeviceImpl_FindTexUnitMap().
      wined3d: Rename max_samplers to max_fragment_samplers.
      wined3d: Add max_vertex_samplers and max_combined_samplers to WineD3D_GL_Info.
      wined3d: Increase the sizes of texturing related arrays, in order to support vertex textures.
      wined3d: Map vertex sampler numbers to the correct internal array indices for GetSamplerState and SetSamplerState.
      wined3d: Map vertex sampler numbers to the correct internal array indices for GetTexture and SetTexture.
      wined3d: Cleanup GL extension detection.
      wined3d: Implement texldl.
      wined3d: Map vertex samplers to a texturing unit.
      wined3d: Check more thoroughly if a stage references a texture.
      wined3d: Cleanup device_map_fixed_function_samplers().
      wined3d: In device_map_psamplers(), only touch the sampler mapping for samplers that are used by the shader.
      wined3d: Get rid of the oneToOneTexUnitMap field.

Hans Leidekker (4):
      pdh: Add public headers.
      pdh: Implement PdhOpenQuery{A, W} and PdhCloseQuery.
      pdh: Implement PdhAddCounter{A, W} and PdhRemoveCounter.
      pdh: Implement PdhCollectQueryData.

Huw Davies (5):
      wineps.drv: Ignore ExtTextOut calls that occur before the job has started.
      oleaut32: Interfaces that derive from IDispatch should be marshaled as VT_DISPATCH.
      oleaut32: Implement marshaling of VT_BYREF interfaces.
      oleaut32: Handle marshaling of VARTYPE-less FADF_VARIANT safearrays.
      oleaut32: Extend _invoke to cope with more args.

Jacek Caban (24):
      mshtml: Don't check out VT in exec_fontsize.
      mshtml: Move keypress event listener to separated object.
      mshtml: Move load event listener to separated object.
      mshtml: Get rid of no longer used nsIDOMEventListener interface in NSContainer.
      mshtml: Added nsIEmbeddingSiteWindow::SetFocus implementation.
      mshtml: Added nsIEmbeddingSiteWindow:[Get|Set]Visibility implementation.
      mshtml: Activate nsWebBrowser after creating document window.
      mshtml: Notify IOleControlSite about focus changes.
      mshtml: Set focus to FALSE in InPlaceDeactivate.
      mshtml: Added IOleControlSite tests.
      mshtml: Better test of QueryInterface.
      mshtml: Added IOleInPlaceUIWindow tests.
      mshtml: Added IHTMLDOMNode::get_nodeName implementation.
      mshtml: Added beginning DOM tests.
      mshtml: Added more QueryInterface tests.
      mshtml: Correctly handle delete key in editor mode.
      mshtml: Added IDM_DELETE support in QueryStatus.
      mshtml: Added Exec(IDM_DELETE) implementation.
      mshtml: Don't use dynamic allocation for connection points.
      mshtml: Store connection point as a list.
      mshtml: Move IConnectionPointContainer to the separated struct.
      mshtml: Make connection points container independent.
      mshtml: Added IConnectionPointContainer implementation to HTMLBodyElement.
      mshtml: Add IID_IPropertyNotifySink and DIID_HTMLTextContainerEvents connection points to HTMLBodyElement.

James Hawkins (20):
      msi: Forward MsiApplyPatchA to MsiApplyPatchW.
      msi: Implement MsiApplyPatchW.
      msi: Patches are applied based on ProductCode, not ProductID.
      msi: Send the expected data to set_deferred_action_props.
      msi: Properly delete rows from the table, instead of zeroing out the row.
      ntoskrnl.exe: Add a stub implementation of KeInitializeTimer.
      msi: Fetch the volume name when getting disk info.
      msi: Add a stub implementation of MsiQueryComponentStateA.
      msi: Add tests for publishing and unpublishing products, features, and components.
      msi: Add tests for MsiQueryProductState.
      msi: Validate MsiQueryProductCode parameters.
      msi: If the user product key exists, the product's state is advertised.
      msi: Use the correct registry key when detecting a published product.
      msi: Any value of WindowsInstaller besides 0 means the product is installed.
      msi: If the UserData product key exists, but the user product key doesn't, the product is absent.
      msi: Set the WindowsInstaller value of the UserData product key when publishing the product.
      msi: Add support for remote handles.
      msi: Reference count the custom action data to avoid freeing the data by another thread.
      msi: Add tests that show '!=' is not a valid conditional expression operator.
      msi: Ignore invalid conditional expressions when checking the launch conditions.

Jason Edmeades (11):
      cmd.exe: Add basic support for && and (...) syntax.
      cmd.exe: Pass command structure into WCMD_pipe, not command line itself.
      cmd.exe: Pass the command list through so it is available to built in commands.
      cmd.exe: GOTO throws away any preloaded multi part/line command.
      cmd.exe: Lines starting with REM ignore any multiline/part characters.
      cmd.exe: EXIT /b skips any residual commands.
      cmd.exe: Parse multipart FOR statements.
      cmd.exe: Correctly parse IF ELSE plus multipart/multiline.
      cmd.exe: Support IF..ELSE processing tolerate multiline/part lines.
      cmd.exe: Fix FOR so it works as 'well' as before.
      cmd.exe: for loop by default only matches files.

Jason Green (1):
      winscard: Add extended stub for SCardEstablishContext.

Jeff Latimer (3):
      hnetcfg: Stub implementation of the dll.
      crypt32: Fix possible dereference of NULL ptr.
      cabinet: Fix a potential NULL reference.

Juan Lang (18):
      wincrypt: Add missing message flags and parameters.
      crypt32: Don't return fake HCRYPTMSG from CryptMsgOpenTo*.
      crypt32: Add basic tests for CryptMsg functions.
      crypt32: Add basic parameter checking to CryptMsgOpenTo*.
      crypt32: Add base message type and use it to implement CryptMsgDuplicate and CryptMsgClose.
      crypt32: Test CryptMsgOpenToEncode for data messages.
      crypt32: Test CryptMsgUpdate for data messages opened to encode.
      crypt32: Test CryptMsgGetParam for data messages opened to encode.
      crypt32: Stub CryptMsgOpenToEncode for data messages.
      crypt32: Add a get param function, use it to implement CryptMsgGetParam.
      crypt32: Add an update function, use it to implement CryptMsgUpdate.
      crypt32: Store stream info in message.
      crypt32: Add a finalized member to message.
      crypt32: Implement CryptMsgUpdate for data messages opened to encode.
      crypt32: Add a stub get param function for data messages and remove stub message from open function.
      crypt32: Add tests for data message encoding.
      crypt32: Implement getting bare content for data messages opened to encode.
      crypt32: Implement getting content for data messages opened to encode.

Kai Blin (1):
      ws2_32: Return WSAEINVAL for unhandled address families in WSAStringToAddress.

Ken Thomases (4):
      winecoreaudio: Extract loop, wodNotifyClient for WAVEHDRs in list, to separate function.
      winecoreaudio: Move a variable declaration to narrower scope, reduce whitespace.
      winecoreaudio: Move notify of completed WAVEHDRs to end of wodReset.
      winecoreaudio: Make wodReset fail if called on a closed device.

Kirill K. Smirnov (1):
      winhelp: Fix popup window style.

Konstantin Kondratyuk (2):
      uninstaller: Add Russian resources.
      programs/winefile: Add Russian resources.

Kovács András (1):
      Add dwmapi.dll stub.

Lei Zhang (6):
      riched20: Add tests for EM_FORMATRANGE.
      winex11.drv: Send WM_MOUSEACTIVATE before closing a window.
      winex11.drv: Reset focus if application does not want to be activated.
      comctl32: Reduce duplicate code between PropertySheetA/W.
      comctl32: Reduce duplicate code between PROPSHEET_CollectSheetInfoA/W.
      comctl32: Determine if PSH_PROPSHEETPAGE is set once.

Maarten Lankhorst (8):
      winealsa: Finally get rid of the thread in alsa directsound acceleration.
      dsound: Give rougher estimates for fraglen to satisfy alsa.
      dsound: Simplify mixing by removing remixing support, and fix its waveout breakage.
      dsound: Tune some parameters for alsa waveout.
      winealsa: Optimize GetPosition() more in dsalsa.
      dsound/winealsa: Remove writelead for alsa directsound.
      winealsa: Silence buffer on allocation.
      dsound: Fix calcplayposition to handle mixed amount > buffer length better.

Marcus Meissner (1):
      wined3d: Fixed pointer casting and additions.

Michael Stefaniuc (34):
      msvcrt: Move definition of 2 static inline functions up and remove the forward declaration of those. Found by sparse.
      shlwapi: Do not use wide character constants.
      winspool.drv/tests: Specify the arguments of the function in the function.
      winmm: Do not dump the version info when loading drivers.
      shlwapi: Remove more wide character constants.
      riched20: Do not use wide character constants.
      setupapi: Do not use wide character constants.
      oleaut32: Do not use wide character constants.
      ole32: Do not use wide character constants.
      comctl32: Do not use wide character constants.
      dmloader: Do not use wide character constants.
      dsound: Fix missing unlock on an error path. Found by Smatch.
      winealsa.drv: Fix missing unlock on the error path. Found by Smatch.
      msvcrt: Do not use wide character constants.
      gdi32: Multi-character character constants aren't portable as their behaviour is compiler dependent according to the C standard. Found by sparse.
      ddraw: Fix missing unlock on an error path. Found by Smatch.
      winejack.drv: Fix missing unlock. Found by Smatch.
      msacm32: Replace malloc/free with HeapAlloc/HeapFree.
      winmm: Replace malloc with HeapAlloc.
      cmd: Remove superfluous casts of void pointers to other pointer types.
      quartz: Remove superfluous casts of void pointers to other pointer types.
      iccvid: Remove superfluous casts of void pointers to other pointer types.
      ole32: Remove superfluous casts of void pointers to other pointer types.
      oleaut32: Remove superfluous casts of void pointers to other pointer types.
      kernel32: Remove superfluous casts of void pointers to other pointer types.
      gdi32: Remove superfluous casts of void pointers to other pointer types.
      wined3d: Remove superfluous casts of void pointers to other pointer types.
      dbghelp: Remove superfluous casts of void pointers to other pointer types.
      wininet: Remove superfluous casts of void pointers to other pointer types.
      winedos: Remove superfluous casts of void pointers to other pointer types.
      janitorial: Remove superfluous casts of void pointers to other pointer types.
      winefile: Do not use wide character constants.
      winefile: Do not use the TEXT() macro on character constants. The implicit cast from char to WCHAR works as well in UNICODE mode.
      comctl32: Replace malloc() with HeapAlloc().

Misha Koshelev (20):
      shell32: Conform to native in SHELL_ArgifyW for unquoted %1 in registry keys.
      wine.inf: Quote %1 for Msi.Package shell actions per native.
      gdi32/tests: Add framework for tests of drawing functions in paths, add test for ArcTo in paths.
      gdi32: Fix ArcTo to use proper starting and ending points.
      gdi32: Set current position properly after ArcTo.
      gdi32: Allow arbitrary start entry types in PATH_DoArcPart, not just PT_MOVETOs.
      gdi32: Handle ArcTo in paths as native.
      gdi32/tests: Expand framework for tests of drawing functions in paths, add test for AngleArc in paths.
      gdi32: Emulate AngleArc using ArcTo.
      gdi32/tests: Fix test_widenpath to succeed on Win98.
      setupapi: Simplify code as native setupapi does not handle quoted paths.
      wine.inf: Fix path to rundll32.exe in inffile/shell/install/command subkey.
      winemenubuilder: Create/release semaphore only around call to wineshelllink.
      winemenubuilder: Wait for parent process to finish instead of creating RunOnce entry that may never run.
      winemenubuilder: Do not WINE_ERR in InvokeShellLinker if we are going to try again.
      shell32/tests: Allow individual tests in check_lnk to be todo_wine'd.
      shell32/tests: Add test for shell links to existing non-executable files.
      shell32/tests: Allow CoCreateInstance to return E_NOINTERFACE to pass on Win98; add skips and display return values.
      shell32/tests: Fix tests of IShellLinkA_SetPath to conform on both Windows 98 and XP.
      shell32: Fix shelllink creation to non-executable files and remove unnecessary code.

Nigel Liang (1):
      winex11.drv: Remove call to XCreateFontSet.

Paul Vriens (13):
      crypt32/tests: Don't crash on Vista.
      user32/tests: Only do the GetProcAddress once.
      mscms/tests: Don't crash on Vista.
      mscms/tests: Fix wrong test for failure.
      kernel32/tests: Don't crash on Vista.
      kernel32/tests: Don't crash (on Vista).
      wintrust/tests: Add tests for CryptCATAdminCalcHashFromFileHandle.
      advapi32/tests: Add some service related tests.
      advapi32/service: Use the correct registry key for the service account.
      advapi32/service: Fix wrong key.
      advapi32/service: Return (more) correct needed buffersize.
      advapi32/service: Make sure we fill all struct members.
      advapi32/service: Don't rely blindly on type.

Pedro Maia (1):
      shell32: Update paths in Portuguese resource.

Rob Shearman (37):
      rpcrt4: Implement encapsulated union NDR functions.
      widl: Implement pointer descriptions for all embedded pointer types.
      widl: Fix detection of structures with non-conformant strings.
      widl: Write out embedded pointers for the element type when writing out arrays.
      widl: Always write out pointers if the structure is a pointer structure. Pointer are optional for conformant varying structures.
      rpcrt4: Use the offset to array data in embedded pointer format descriptions.
      rpcss: Remove lazy timeout mechanism and use __wine_make_system_process instead.
      msi: Only use the long name for the file source if the file has one.
      mshtml: The SRC value returned from HTMLElement_getAttribute should be an absolute, not relative URL.
      mshtml: Implement HTMLElement_setAttribute.
      mshtml: Fix HTMLDocument3_get_documentElement to get the right nsIDOMNode.
      mshtml: Notify the Gecko stream listener that we stopped binding, if an error occurs in start_binding.
      advapi32: Always set the requested fields of the security descriptor according to the info flags in GetNamedSecurityInfoW.
      mshtml: Implement HTMLElement_get_children.
      rpcrt4: Don't use add on the sizes of array elements to an open-ended structure; use FIELD_OFFSET with the array index instead.
      rpcrt4: Add support for ServerAllocSize parameters.
      rpcrt4: Add a STUBLESS_FREE phase for freeing the allocated memory in the server function.
      rpcrt4: Return a fault packet if the interface/object pair in a request packet aren't registered.
      rpcrt4: Close the connection if a protocol error or certain other kinds of errors occur, instead of returning it to the connection pool.
      rpcrt4: Translate STATUS_ACCESS_VIOLATION exceptions caught whilst executing the stub function to ERROR_NOACCESS to prevent confusing exceptions occurring in the client.
      rpcrt4: When an exception is raised, return the stored exception code instead of the generic RPC_S_CALL_FAILED.
      rpcrt4: Store the assoc_group_id field returned from the bind_ack packet and use it when creating further connections in the association group.
      rpcrt4: Try a lot harder to resuse existing connections by comparing inside the RpcQualityOfService and RpcAuthInfo objects.
      rpcrt4: Set PointerBufferMark to the buffer location immediately after the non-pointer data in complex struct and array marshaling and unmarshaling to keep to the DCE/RPC specification.
      rpcrt4: Implement marshalling/unmarshalling for the range NDR type.
      rpcrt4: Implement marshalling, unmarshalling and buffer sizing for the context handle type.
      rpcrt4: Dereference the pointer passed to the marshaling/unmarshaling/sizing routines in complex types for interface pointers.
      msi: Implement MsiGetMode for MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT and MSIRUNMODE_ROLLBACK.
      msi: Check the return value of VerQueryValueW in msi_get_disk_file_version.
      msi: Free version after using lpVer in msi_get_disk_file_version as lpVer points inside of version.
      msi: Fix loading string tables for databases that use 3-byte string references and that have a non-zero codepage (i.e. != CP_ACP).
      msi: Fix bytes_per_column for binary types when the database is using 3-byte string references.
      msi: Fix transforms to work when the number of bytes per string reference differs to that of the database it is being applied to.
      rpcrt4: Remove the unused AuthInfo field from the RpcAssoc structure and Used from RpcConnection.
      rpcrt4: Make pointers to RPCRT4_BuildBindHeader and RPCRT4_BuildBindAckHeader const.
      rpcrt4: Store the assoc_group_id in the connections.
      wine.inf: Add the SystemDrive environment variable.

Stefan Dösinger (26):
      d3d9: Hold the lock in IDirect3D9 methods.
      d3d9: Hold the lock in methods implemented in device.c.
      d3d9: Hold the lock in cubetexture methods.
      d3d9: Hold the lock in indexbuffer methods.
      d3d9: Hold the lock in Pixelshader functions.
      d3d9: Hold the lock in query methods.
      d3d9: Release the wined3d query when the d3d9 query is destroyed.
      d3d9: Hold the lock in stateblock methods.
      ddraw: Test for incorrect surface desc sizes in GetSurfaceDesc.
      d3d8: Convert fvfs to vertex declarations.
      wined3d: Remove the FVF codepath from drawprim.
      wined3d: Unload texture coords for all supported texture stages.
      wined3d: Emulate tracking of multiple material properties.
      ddraw: Add a test for incorrect surface desc sizes for Lock().
      ddraw: Check for incorrect rectangles to DDrawSurface::Blt.
      wined3d: Depthfill blits are allowed between BeginScene and Endscene.
      d3d9: Hold the lock in suface methods.
      d3d9: Hold the lock in swapchain methods.
      d3d9: Hold the lock in Texture methods.
      d3d9: Hold the lock in Vertexbuffer methods.
      d3d9: Hold the lock in VertexDeclaration methods.
      d3d9: Hold the lock in VertexShader methods.
      wined3d: Move material applying to the state table.
      wined3d: Clamp material power to 128.0.
      wined3d: Skip the start offset to the source array in IWIneD3DVertexShaderImpl_SetLocalConstantsF.
      wined3d: Some point sprite fixes.

Tim Schwartz (2):
      net.exe: Add NET STOP.
      net.exe: Add missing CloseServiceHandle().

Vitaliy Margolen (4):
      dinput: Remove duplicate code.
      dinput: Move parent dinput reference into base class.
      dinput: Combine all Release functionality into base class.
      dinput: Move key state array into object.

Vitaly Budovski (1):
      winealsa: Fix incorrect callback private value.

--
Alexandre Julliard
julliard@winehq.org
