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

What's new in this release:
  - Many MSHTML improvements.
  - Several improvements to the sound support.
  - A number of Winsock fixes.
  - Several new supported constructs in the IDL compiler.
  - Many Direct3D threading 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.39.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.39.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.38:

Alex Villacís Lasso (6):
      oleaut32: Support for VT_DISPATCH in VarAbs.
      oleaut32: Support for VT_DISPATCH in VarNot.
      oleaut32: Support for VT_DISPATCH in VarFix.
      oleaut32: Support for VT_DISPATCH in VarInt.
      oleaut32: Support for VT_DISPATCH in VarNeg.
      oleaut32: Support for VT_DISPATCH in VarRound.

Alexander Nicolaysen Sørnes (12):
      wordpad: Split code into set_caption function.
      wordpad: Store file name globally.
      wordpad: Add file saving support.
      wordpad: Improve file reading code.
      wordpad: Convert open file dialog to Unicode.
      wordpad: Add file saving dialog.
      wordpad: Add missing dots to Open menu item.
      wordpad: Fix potential buffer overflow.
      wordpad: Allow toggling of toolbar.
      wordpad: Allow toggling of statusbar.
      wordpad: Split toolbar into tool- and formatbar.
      wordpad: Use Unicode functions in more places.

Alexandre Julliard (39):
      ws2_32: Reimplement WSASendTo along the lines of NtWriteFile.
      ws2_32: Call the I/O completion routine as a user APC.
      ws2_32: Simplify the async shutdown handling, and remove a bunch of no longer used code.
      ntdll: Queue an intermediate user APC routine to free the async info.
      server: Remove the extra apc_arg parameter now that user APCs all require the same arg as the kernel APC.
      ws2_32: Queue a proper user APC also on immediate success in WSARecvFrom/WSASendTo.
      server: Run async I/O APCs from the SIGUSR1 handler.
      ntdll: Get rid of the num_async_io counter in the TEB.
      kernel32: Rewrite GetOverlappedResult for the new async I/O behavior.
      ws2_32: Rewrite WSAGetOverlappedResult for the new async I/O behavior.
      advapi32: Convert the service list to a standard list.
      server: Add support for system processes, that can be signaled to exit when all non-system processes are done.
      explorer.exe: Mark explorer as a system process.
      advapi32: Mark service processes as system processes, and exit when all user processes are done.
      winedevice: Accept the shutdown service control.
      widl: Get rid of the SIGSEGV handler, this only makes things harder to debug.
      winmm: Fix computation of sleep time until next timeout.
      winmm: Get rid of the WINE_MM_IDATA global structure, there's only one instance anyway.
      cmd.exe: Silence a FIXME.
      msvcrt: Set the correct ebp value before calling the local unwind handler.
      include: Add DO_NO_IMPORTS ifdefs where needed.
      libwine: Set install name to an absolute path for the installed library on Mac OS.
      configure: Replace some obsolete macros to avoid warnings.
      tools: Upgrade the config.guess/config.sub scripts.
      msxml: Don't use VariantClear on an uninitialized variant.
      winmm: Convert the timer list to a standard Wine list.
      winmm: Maintain the timer list sorted by expiration time.
      winmm: Initialize the timer critical section statically.
      shell32: Fix contents of string returned in load_path.
      shell32: Remove a redundant include.
      winecfg: Fix potential null pointer access (spotted by Yaroslav Skorokhodov).
      winex11.drv: Glyph width is rounded to 32 bits, make sure to provide enough null data.
      comctl32: Remove useless pointer check.
      wintrust/tests: Fix the WintrustGetRegPolicyFlags to work right the first time.
      widl: Add typecasts for user marshalling routines to avoid compiler warnings.
      localspl: Make some functions static.
      server: Enable kqueue support on Mac OS >= 10.5 now that it's fixed.
      ntdll: Implemented reading of the CDROM TOC on Mac OS.
      user32/tests: Avoid strlen in trace.

Anatoly Lyutin (2):
      cmd.exe: Update Russian translation.
      user32: tests:msg Add test for switching MDI children.

Andrew Talbot (7):
      msi: Constify some variables.
      oleaut32: Fix some typos.
      wined3d: Void functions should not return a value.
      msi: Constify a variable.
      msi: Constify some variables.
      msi: Constify some variables.
      msrle32: Constify some variables.

Andrey Turkin (4):
      pdh: Stub implementation of pdh.dll.
      ntdll: Stub and document IoCompletion APIs.
      kernel32: Factor out all kernel32 timeout-conversion snippets to one helper functions.
      kernel32: Implement IO completion functions on top of the NT IoCompletion API.

Aric Stewart (1):
      ole32: Implementation of state bits for IStorage.

Chris Robinson (3):
      wined3d: Add a few missing checkGLcall calls.
      quartz: Don't return S_FALSE for failed connections.
      wined3d: Add missing table entry value.

Christian Costa (3):
      wineoss.drv: Mark every buffer being added.
      winealsa.drv: Use correct tests for synthesizer/port enumeration order.
      winealsa.drv: Fix compilation with old alsa headers.

Damjan Jovanovic (1):
      ws2_32: getsockname should fail on unbound socket.

Dan Hipschman (14):
      list.h: Add macros for reverse iteration.
      widl: Replace get_name with a field reference.
      widl: Represent arrays with type_t.
      widl: Implement conformant structure handling.
      widl: Check for NULL in set_tfswrite.
      widl: Fix incomplete struct/union typedef bug.
      widl: Simplify correlation descriptor code.
      widl: Handle wire_marshal types.
      widl: Test structure argument marshalling.
      widl: Handle wire_marshal pointer attributes.
      widl: Handle embedded interface pointers.
      widl: Handle encapsulated unions.
      widl: Factor the output functions.
      widl: Fix a write_parameters_init bug.

Detlef Riekenberg (4):
      include/winspool: Add more flags for printer drivers.
      winspool: Implement AddPortEx.
      winspool: Remove outdated comment.
      localspl: Implement AddPortEx.

Dmitry Timoshkov (4):
      include/msvcrt: Make sure that __int64 is properly defined on a 64-bit platform.
      user32: Do not hardcode cp1252 for an icon/title font.
      gdi32: Make BITMAPINFOHEADER biSize check match what other parts of code do.
      msi: Simplify the code.

Evan Stade (9):
      gdiplus: Added public headers.
      gdiplus: Added beginnings of memory and startup functions.
      gdiplus: First pen implementation.
      gdiplus: First pen test.
      gdiplus: Added first GDI+ graphics implementation.
      gdiplus: Implemented GdipDrawLineI.
      gdiplus: Implemented GdipDrawRectangleI.
      gdiplus: Brush implementation.
      gdiplus: Brush tests.

Francois Gouget (28):
      ws2_32: Improve the prototypes Win64 compatibility by replacing long with LONG.
      winspool.drv: Fix the AddPortExA/W() export to match the implementation.
      programs/cmd: Add missing '\n' to Wine trace.
      wined3d: Fix spelling of the state_separateblend() function.
      Assorted spelling fixes.
      ntdll: Improve the prototypes Win64 compatibility by replacing long with LONG.
      winapi_check: Also warn about 'unsigned long's Win64 compatibility problems.
      advapi32: Update win32.api to fix the winapi_check warnings.
      wined3d: Pass the D3DCB_CreateAdditionalSwapChain() error code to the upper layers (needed for d3d9).
      gdiplus: Add missing '\n' in Wine trace.
      winapi_check: .exe and .ocx files can also export APIs.
      hhctrl.ocx: winapi_check expects the module name to be all uppercase in the documentation.
      msdmo: dmoreg.h should include mediaobj.h.
      msdmo: Improve the prototypes Win64 compatibility by replacing long with LONG.
      secur32: Update win32.api to fix the winapi_check warnings.
      Add API documentation stubs to make winapi_check happy.
      wintrust/tests: Simplify the code and improve consistency by removing unneeded function typedefs.
      wintrust/tests: Fix checks to be more informative when they fail.
      gdiplus: Add missing '\n' to ok() calls, Wine traces.
      regedit: Move PerformRegAction() and get_file_name() around to eliminate forward references. Make them static.
      crypt32: Add missing '\n' to ok() call.
      regedit: Remove setAppName() as the application name is hardcoded anyway.
      regedit: Remove cruft and make functions static, reordering where necessary to avoid forward declarations.
      regedit: If the data for a given value is in an unknown format, then print an error and don't modify the value.
      regedit: Make the dword and binary data parsing both more flexible and stricter.
      regedit: The registry functions return standard error codes, not HRESULTs.
      regedit: Having garbage after the dash in '"foo"=-' is not valid.
      regedit: Modify getRegClass() to avoid dubious comparisons and casts between HKEYs and error codes.

Glenn Wurster (1):
      sfc_os: Add stub implementation for SfcIsKeyProtected.

H. Verbeet (15):
      wined3d: Return WINED3DERR_INVALIDCALL in DrawIndexedPrimitive if no index buffer is set.
      d3d9: Add a test for calling DrawIndexedPrimitive with a NULL index buffer.
      wined3d: TRACE the Color parameter in IWineD3DDeviceImpl_Clear.
      wined3d: Rename IWineD3DDeviceImpl_SetBasevertexIndex to IWineD3DDeviceImpl_SetBaseVertexIndex.
      wined3d: Make sure the color buffer is not modified by depth_blt().
      wined3d: Get rid of the BaseVertexIndex parameter to IWineD3DDeviceImpl_SetIndices, use SetBaseVertexIndex instead.
      wined3d: Add IWineD3DDevice_GetBaseVertexIndex to retrieve the base vertex index.
      wined3d: Get rid of the pBaseVertexIndex parameter to IWineD3DDeviceImpl_GetIndices, use GetBaseVertexIndex instead.
      wined3d: Turn off filtering for FBO attachments, update the texture's states array.
      wined3d: Fix GLSL definitions.
      wined3d: Pass NULL for the stateBlock parameter to shader_get_registers_used() in IWineD3DVertexShaderImpl_SetFunction.
      wined3d: For ps_2_0 and higher, call shader_get_registers_used() in IWineD3DPixelShaderImpl_SetFunction.
      wined3d: Take the texUnitMap into account when loading shader_glsl_load_psamplers().
      wined3d: Call IWineD3DDeviceImpl_FindTexUnitMap() when activating the context.
      wined3d: Add wined3d vertex sampler definitions.

Hans Leidekker (3):
      mlang: Implement IMultiLanguage::GetLcidFromRfc1766.
      wininet: More lenient parsing of the passive mode server response.
      gdi32: Add some tests for BITMAPINFOHEADER biSize checks.

Huw Davies (4):
      mshtml: Don't release the factory if we failed to get it.
      oleaut32: Fixes for the PICTYPE_UNINITIALIZED case.
      riched20: Don't mess with the caret if we don't have focus.
      winex11.drv: XRenderCompositeText has a problem with 0x0 glyphs, so we'll pretend they're 1x1.

Hwang YunSong(황윤성) (2):
      credui: New Korean resource.
      shell32: Updated Korean resource.

Jacek Caban (58):
      urlmon: Don't pass query part of URL to CreateUrlCacheEntryW.
      mshtml: Added support for coexisting different Gecko versions installation.
      mshtml: Switch to Wine Gecko 0.1.0.
      mshtml: Fix debug trace.
      mshtml: Added command table for CGID_MSHTML commands.
      mshtml: Move IDM_FONTSIZE, IDM_FONTNAME and IDM_FORECOLOR to edit state command table.
      mshtml: Move more commands to command table.
      mshtml: Move more commands to editor command table.
      mshtml: Move remaining commands to tables.
      mshtml: Use command table for IDM_COPY, IDM_CUT and IDM_PASTE query.
      mshtml: Move justify queries to command table.
      mshtml: Move edit command queries to the command table.
      mshtml: Move remaining status queries to command tables.
      mshtml: Make [get|set]_font_size static.
      mshtml: Move setup_ns_editing to nsembed.c.
      mshtml: Forward all IsDirty implementations to one function.
      mshtml: Don't crash in load_stream if Gecko is not available.
      mshtml: Don't do anything in exec_editmode if edit mode is already set.
      mshtml: Use IOleCommandTarget::Exec to implement context menu.
      mshtml: Call UpdateUI and Exec(OLECMDID_UPDATECOMMANDS) from timer callback.
      mshtml: Move Exec(OLECMDID_SETTITLE) call to separated function and use it in on_timer.
      mshtml: Call update_doc in exec_editmode.
      mshtml: Added test of callbacks called from document timer.
      mshtml: Pump messages of all windows in test_download.
      mshtml: Improve IDM_JUSTIFYLEFT query status.
      mshtml: Push TASK_PARSECOMPLETE in load event if Gecko is available.
      mshtml: Set FALSE useCapture for editor's keypress event listener.
      mshtml: Don't check out variant type in exec_fontname.
      mshtml: Set default fontname to 'Times New Roman'.
      mshtml: Added Exec(IDM_FONTNAME) tests.
      mshtml: Added more command tests.
      mshtml: Call update_doc in editor commands.
      mshtml: Call update_doc in init_editor.
      mshtml: Store editor controller in NSContainer.
      mshtml: Added editor mode up key implementation.
      mshtml: Added editor mode down key implementation.
      mshtml: Reimplement editor mode right key using command controller.
      mshtml: Reimplement editor mode left key using command controller.
      mshtml: Set default scrollbar preferences.
      mshtml: Added IDM_RESPECTVISIBILITY_INDESIGN command stub implementation.
      mshtml: Silence invalid FIXME for ELEMENT_DOCUMENT_FRAGMENT_NODE in nsnode_to_nsstring_rec.
      mshtml: Added COMMENT_NODE implementation in nsnode_to_nsstring_rec.
      mshtml: Added IHTMLStyle::get_fontFamily implementation.
      mshtml: Added IDM_COMPOSESETTINGS implementation.
      mshtml: Added semi stub IsDirty implementation.
      mshtml: Added IsDirty tests.
      mshtml: Added edit mode IDM_COPY implementation.
      mshtml: Added edit mode IDM_PASTE implementation.
      mshtml: Added edit mode IDM_CUT implementation.
      mshtml: Call Exec(CGID_ShellDocView, 37) in exec_editmode.
      mshtml: Move createing URL moniker to separated function.
      mshtml: Move Exec(CGID_ShellDocView, 37) call to match native.
      mshtml: Store current moniker in HTMLDocument.
      mshtml: Added GetCurMoniker implementation.
      mshtml: Don't crash in set_font_size if range_cnt is 0.
      mshtml: Added get_URL implementation.
      mshtml: Use IOleInPlaceSiteEx if available.
      mshtml: Added IOleInPlaceSiteEx tests.

James Hawkins (8):
      msi: Use fetch_int to reduce code duplication and access to table data.
      msi: Reduce the amount of code that directly accesses table data.
      msi: Represent table data as bytes instead of shorts.
      msi: Add support for large string tables.
      msi: Set the MsiNetAssemblySupport property.
      msi: Protect custom actions with a structured exception handler.
      msi: Fixed the WriteEnvironmentStrings action.
      msi: Set the UserSID and ProductCode properties for deferred custom actions.

Jason Edmeades (10):
      cmd.exe: Move English constants into NLS files.
      cmd.exe: Move writing to console into a single function.
      cmd.exe: Handle command line as Unicode.
      cmd.exe: Convert cmd to Unicode.
      cmd.exe: Fix 'help garbage' command post-unicode support.
      cmd.exe: Fix handling of malformed environment variable expansion.
      cmd.exe: Change from main to wmain.
      cmd.exe: Fix dir /w.
      xcopy.exe: Convert from main to wmain.
      cmd.exe: Add support for cmd.exe /u (Unicode from internal pgms).

Jeff Latimer (2):
      shell32: Fix possible dereference of NULL ptr.
      msi: Use the langbuff len rather than the versionbuff len when allocating the langbuff.

John Klehm (1):
      include: Allow port.h to build on gcc4.

Juan Lang (10):
      comdlg32: Initialize file dialog controls before creating dialog.
      comdlg32: Check file dialog's FOIShellView before accessing it.
      crypt32: Add CryptMsg* stubs.
      crypt32: Implement CERT_AUTHORITY_KEY_ID2_INFO encoding/decoding.
      crypt32: Implement PKCS_CONTENT_INFO encoding/decoding.
      crypt32: Separate set encoding into a separate function.
      crypt32: Implement PKCS_ATTRIBUTE encoding/decoding.
      crypt32: Use CRYPT_EncodeEnsureSpace to allocate memory when necessary.
      crypt32: Implement PKCS_ATTRIBUTES encoding/decoding.
      crypt32: Implement PKCS7_SIGNER_INFO encoding/decoding.

Kai Blin (1):
      ws2_32: Add mapping for STATUS_OBJECT_TYPE_MISMATCH to WSAENOTSOCK.

Kolbjørn Fredheim (1):
      winex11.drv: Echo the video mode requested in the error message when not finding a matching mode.

Lei Zhang (7):
      wined3d: Various spelling fixes.
      include: Add missing definitions to shlobj.h.
      shell32: Start implementing BIF_USENEWUI.
      user32: Improve cut/copy/paste behavior of password edit boxes.
      comdlg32: Move file dialog resizing code into its own function.
      user32: Remove a unused variable from ES_PASSWORD test.
      comctl32: Make modal property sheets modal.

Louis Lenders (1):
      shell32: Add stub for SHUpdateRecycleBinIcon.

Maarten Lankhorst (8):
      dsound: Fix buffer caps.
      dsound: Recalculate 3d buffer on SetVolume.
      dsound: Disable property sets if hardware doesn't support it.
      winmm: Use unix fd's instead of win32 events to sync internal events in timer.
      dsound: Unset variable on failure in IKsBufferPropertySetImpl_Create.
      rsaenh: Allow CRYPT_NEWKEYSET and CRYPT_VERIFYCONTEXT at same time when acquiring context.
      winealsa: Detach directsound implementation from waveout implementation.
      dsound: Use TIME_KILL_SYNCHRONOUS on sound timer.

Marcus Meissner (1):
      quartz: Added some error checking on failure to CreateClassEnumerator.

Markus Goemmel (1):
      comctl32/listview.c: Ownerdraw font problem during focus change fixed.

Michael Stefaniuc (8):
      wingdi.h: Multi-character character constants are implementation specific according to the C standard. Use a hex number instead.
      capi2032: Fix non-ANSI function declaration. Found by sparse.
      gphoto2.ds: Fix non-ANSI function declaration. Found by sparse.
      wrc: Fix non-ANSI function declaration. Found by sparse.
      winedos: Fix printf format warnings introduced by the TEB change in thread.h.
      psapi: GetPerformanceInfo() calls down to the wrong ntdll function. Found by sparse.
      psapi: GetWsChanges() calls down to the wrong ntdll function. Found by sparse.
      wrc: Fix redundant checks for NULL before free(). Found by Smatch.

Mikołaj Zalewski (2):
      kernel: Fix clearing of memory in LocalReAlloc16(..., LMEM_ZEROMEMORY).
      comctl32: listview: Make LVM_GETCOLUMNWIDTH query the header control instead of using cached data.

Misha Koshelev (29):
      msi: automation: Remove duplicate error messages on unknown dispid.
      msi: automation: Add missing operand for evaluation.
      msi: msiserver.idl: Maintain spacing as spaces, not tabs.
      msi: automation: Remove redundant VariantClear(pVarResult).
      msi: automation: Database::SummaryInformation is a propget, not a method.
      msi/tests: automation: Add tests for SummaryInfo::Property, get.
      msi: automation: Fix SummaryInfo::Property get to conform to native.
      msi/tests: suminfo: Add tests for MsiSummaryInfoGetProperty for unknown property values.
      msi: suminfo: Return ERROR_UNKNOWN_PROPERTY as native.
      msi: automation: SummaryInfo::Property, remove all specific instances to PIDs.
      msi/tests: automation: Add test for Installer::OpenDatabase.
      msi: automation: Add MsiOpenDatabaseMode enum.
      msi/tests: automation: Add tests for SummaryInfo::Property, put.
      msi: automation: Implement SummaryInfo::Property, put.
      msi/tests: automation: Add tests for SummaryInfo::PropertyCount.
      msi: automation: Implement SummaryInfo::PropertyCount.
      widl: Add support for vararg attribute.
      oleaut32/tests: Add tests for IDispatch::Invoke of vararg function.
      oleaut32: Add support for vararg functions in ITypeInfo::Invoke.
      winebrowser: Add DDE support.
      wine.inf: Use DDE for winebrowser as native.
      shell32/tests: Simplify DDE thread and message loop.
      shell32/tests: Save threadid from CreateThread as required by winme/98/95.
      shell32/tests: Use ShellExecuteEx with SEE_MASK_FLAG_DDEWAIT and SEE_MASK_FLAG_NO_UI for DDE tests.
      shell32/tests: Expand default DDE application name tests to conform to win98.
      shell32/tests: Allow testing for arbitrary number of command line arguments in DDE tests.
      shell32/tests: Add test for unquoted %1 in command and ddeexec keys.
      setupapi/tests: Add basic tests for InstallHinfSectionA/W command line processing.
      setupapi: Handle unquoted paths in InstallHinfSection as native.

Nigel Liang (1):
      shell32: Conformance tests for unicode filenames and fix a bug for file deletion.

Paul Vriens (6):
      wintrust/tests: Start of some crypt tests for wintrust.
      wintrust/tests: Use A instead of W-calls.
      comdlg32/tests: Skip some not implemented functions on win98.
      crypt32/tests: Skip tests if we don't have enough rights.
      crypt32/tests: Skip tests if we don't have enough rights.
      crypt32/tests: Vista uses a different error code.

Phil Costin (6):
      wined3d: Add GL_EXT_texture_sRGB constants and corresponding CheckDeviceFormat query.
      wined3d: Extend the D3DFMT table to include gamma corrected formats.
      wined3d: Add support for loading gamma corrected textures.
      wined3d: Enable the loading and reloading of gamma corrected textures.
      wined3d: Add gamma linerization support for D3DFMT_A4R4G4B4.
      wined3d: Remove a duplication in device.c.

Ralf Beck (1):
      winealsa.drv: Mark every sysex buffer being added.

Rob Shearman (6):
      wininet: Send the correct callbacks during InternetReadFileExA calls.
      wininet: Implement NTLM support for proxy authentication.
      uuid: Add hlink CLSIDs.
      mshtml: Add some error handling to hlink_frame_navigate.
      mshtml: Use the implementation of IHlink in hlink.dll instead of duplicating it.
      include: Add HTMLTextContainerEvents dispinterface and necessary dispids.

Stefan Dösinger (31):
      wined3d: Do not enable GL_APPLE_client_storage for the dummy textures.
      ddraw: Hold the lock in IDirect3DDevice methods.
      ddraw: Hold the lock in IDirectDrawClipper methods.
      ddraw: Hold the lock in IDirectDrawGammaControl methods.
      ddraw: Hold the lock in IDirect3DMaterial methods.
      ddraw: Hold the lock in IDirectDrawPalette methods.
      ddraw: Hold the lock in IDirect3DLight methods.
      ddraw: Hold the lock in IDirect3DTexture methods.
      ddraw: Hold the lock in IDirect3DVertexBuffer methods.
      ddraw: Hold the Lock in IDirect3DViewport methods.
      d3d8: Add a dll global critical section.
      d3d8: Hold the DLL lock in IDirect3D8 methods.
      wined3d: Store the gl information in a per adapter structure and initialize it only once.
      wined3d: Store the adapter driver and description in the adapter.
      wined3d: Find possible fbconfis on dll load time, use them in CheckDepthStencilMatch.
      d3d8: Hold the lock in IDirect3DDevice8 methods.
      wined3d: Some render target->texture blit context handling.
      wined3d: Do not set the dynlock flag on all created surfaces.
      d3d8: Hold the lock in cubetexture methods.
      d3d8: Hold the lock in IDirect3DIndexBuffer8 methods.
      d3d8: Hold the lock in IDirect3DSurface8 methods.
      d3d8: Hold the lock in swapchain methods.
      d3d8: Hold the lock in IDirect3DVertexBuffer methods.
      d3d8: Hold the lock in volume methods.
      d3d8: Hold the lock in IDirect3DVolumeTexture8 methods.
      d3d8: Hold the lock in IDirect3Dtexture8 methods.
      wined3d: Only swap system memory resources of front and back buffer if they have the same size.
      wined3d: Implement vertical refresh sync.
      wined3d: Present does not clear the depth stencil.
      wined3d: DDraw surfaces are QWORD aligned.
      d3d9: Add a dll global critical section.

Stefan Leichter (3):
      crypt32: Replace CRYPT_RecurseDeleteKey with RegDeleteTreeW.
      qcap: Replace DeleteEntireSubKey with RegDeleteTreeW.
      winspool.drv: Replace WINSPOOL_SHDeleteKeyW with RegDeleteTreeW.

Ulrich Czekalla (2):
      ole32: Remove stack-based string buffer inFileMonikerImpl_DecomposePath.
      opengl: Use get_glxdrawable to grab the drawable.

Vedran Rodic (1):
      winmm: Fix PlaySound so it doesn't block when another sound is already playing.

Vitaliy Margolen (3):
      dinput: Make sure to unacquire device before freeing it.
      dinput: Acquire device only if specified window has focus in foreground coop level.
      atl: Use CallWindowProc instead of calling old window proc directly.

--
Alexandre Julliard
julliard@winehq.org
