The Wine development release 1.7.54 is now available.

What's new in this release (see below for details):
  - Implementation of the TransmitFile function.
  - More implementation of the Web Services DLL.
  - Improved video decoding.
  - Alternative for the deprecated prelink tool.
  - Major Turkish translation update.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.54.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.54.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

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

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

Bugs fixed in 1.7.54 (total 51):

   5048  Multiple applications and games need support for ws2_32 SIO_GET_EXTENSION_FUNCTION_POINTER TransmitFile (WSAID_TRANSMITFILE)
  12336  Paint.NET 3.22 window rendering broken
  19525  Poison Ivy does not work correctly because RtlGetCompressionWorkSpaceSize and friends are only stubs
  21012  MSWT Kart 2004 does not work (TGA images misinterpreted as ICO files in OleLoadPicture)
  21076  Defense Grid: The Awakening does not draw the models properly
  22806  Paint.NET 3.36 fails to start without native gdiplus
  22879  IVONA Voices/Reader (SAPI TTS) 1.0.16 crashes on startup
  22907  CamStudio displays an error when record button is pressed  (ICOpen with fccHandler = 0 is not supported)
  24031  Word Perfect Lightning 1.0 beta installer does not display text in first dialog
  26344  Protel Advanced PCB Design System v2.5 (win16 app) crashes on startup
  26621  KidStarter Shell installer needs 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon' registry key present
  27595  HyperCam 2.x crashes on startup (when lpbiOutput is NULL it has to be filled by the codec based on lpbiInput)
  30703  Pepakura Viewer crashes on startup: dib init failed, failed to create rendering context
  31442  Guild Wars 2 freezes on text input fields
  32325  Assassin's Creed III crashes on startup (ID3D11Device::QueryInterface doesn't support IDXGIDevice1, '{77db970f-6276-48ba-ba28-070143b4392c}')
  32620  Warcraft Voice Chat cannot capture voice.
  32707  Adobe Shockwave 12.1 installer:  hangs during installation
  32895  Serious Sam HD: TSE crashes randomly in the campaign && when picking up backpacks
  33893  Midnight Nowhere demo shows black screen
  33965  WordPerfect 10 (Corel Office 2002) crashes when trying to create a table
  34079  OneDrive for Business C2R (click-to-run) client reports server error ('rpcrt4.RpcMgmtIsServerListening' must check if binding handle refers to remote server)
  34574  Kega Fusion 3.64 - Fullscreen not working anymore
  34898  Evernote 5.0.3 crashes when synchronizing notes with main gui from separate note editor window
  35023  Paint.NET 3.22 crashes on startup, reporting "Property cannot be found" (no metadata reader/properties present for Png)
  35792  rmxftmpl.h differs on some architectures
  35872  Pinball Science crashed on starting
  36301  valgrind shows an invalid read (bstr) in msxml3/tests/saxreader.c
  36560  valgrind shows an invalid read in d3drm/tests/d3drm.c
  36794  valgrind shows an invalid free for comctl32/tests/listview.c
  36827  The horror game Mad Father won't work
  36895  You Don’t Know Jack V1 XL: Scaling/moving text shown as solid coloured blocks
  37351  American Mcgee's Alice No Audio
  37930  Photoshop CS6: dragging layers leaves a trail of garbage
  37980  Word Viewer 2007 fails to open *.docx files with Windows version set to Vista or later (Word Converter local COM server requires WebDAV client API 'DavClnt.dll')
  38131  Java SE Runtime Environment 5.0u16 web installer 'patchjre.exe' tool crashes
  38242  Granny In Paradise Demo fails to start, reports 'Failed to load encrypted EXE' (ReflexiveArcade Wrapper DRM scheme)
  38533  opengl32/tests/opengl.c hangs under valgrind (i965/mesa)
  38655  Galactic Civilizations III Fails to start (D3DCompiler_46 Failed to load)
  38745  EZCastPro 1.4 crashes on unimplemented function USER32.dll.GetDisplayConfigBufferSizes
  39171  Creatures: White pixels are black.
  39296  Setup dialog windows needs to drag for capture
  39339  Adventure games from Daedalic Ent. (Night of the Rabbit, Edna & Harvey, A New Beginning) have no in-game audio and freeze on new game start - XAudio2_7
  39357  Do not see the audio equipment , and there is no sound in the game Blade & Soul
  39395  Wolfram Research Mathematica 10.2 needs kernel32.dll.GetPhysicallyInstalledSystemMemory
  39400  Eleusis demo needs XAudio2 class '{a90bc001-e897-e897-7439-435500000000}'
  39449  __finally being called too many times (Unwind consolidate callback needs special wrapper function to skip stack frames)
  39462  GImageX v2.1.1 (gui for ImageX tool from Windows Assessment and Deployment Kit) needs WIMGAPI.DLL
  39473  Some of PropVariantCopy tests results are masked by faulty logic
  39478  Call of Duty: United Offensive demo crashes at launch
  39480  Sniper Elite V2 demo needs IDXGIFactory1 interface '{770aae78-f26f-4dba-a829-253c83d1b387}'
  39488  explorer.exe (and other applications) crash on start after drive z: (/) got deleted

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

Changes since 1.7.53:

Alex Henrie (3):
      user32: Release capture before sending WM_COMMAND.
      maintainers: Add myself as a volunteer maintainer.
      krnl386.exe16: Fix dialog size computation.

Alexandre Julliard (22):
      libwine: Pass the correct length to GetStringUTFRegion.
      wineconsole: Deal with fonts that don't have a uniform character width.
      wineconsole: Accept a too large font if we can't find one that fits the screen.
      configure: Follow the variable naming convention for libpcap.
      makefiles: Only define the dummy target in makefiles that need it.
      makefiles: Read variable definitions from the top makefile instead of using Make.vars.in.
      makefiles: Get rid of the support for updating a makefile in place.
      makefiles: Avoid running config.status when not necessary.
      makefiles: Fix expansion of '$$' in make variables.
      makefiles: Move wine.desktop to the loader directory.
      krnl386.exe: Remove some redundant shifts.
      ntdll: Remove some redundant shifts.
      makefiles: Generate rules for building tool binaries.
      tools: Upgrade the config.guess/config.sub scripts.
      tools: Move winemaker to its own directory.
      makefiles: Automatically add RPATH support for programs that use libwine.
      makefiles: Generate rules for installing programs.
      makefiles: Generate rules for installing scripts.
      makefiles: Generate rules for installing symlinks.
      makefiles: Don't add source dependency for symlinks.
      makefiles: Fix the source path for ttf font installs.
      makefiles: Specify whether to install program binaries in the individual makefiles.

Alistair Leslie-Hughes (8):
      d3dcompiler: Add D3DReadFileToBlob, D3DWriteBlobToFile stubs.
      vbscript/tests: Show IActiveScriptSite OnScriptError is called on error.
      dpnet: Don't leak entry name.
      d3dx10_43: Add D3DX10CreateEffectPoolFromMemory stub.
      msxml3/tests: Fix memory leaks (valgrind).
      xmllite/tests: Fix memory leak (valgrind).
      msctf/tests: Fix memory leaks (valgrind).
      oleaut32/tests: Fix memory leaks (valgrind).

Andrew Eikum (11):
      xaudio2: Implement IXAudio28MasteringVoice::GetChannelMask.
      xaudio2: Explicitly trace the xaudio object version.
      ntdll: Claim success for FSCTL_SET_SPARSE.
      explorerframe: Allow treeview expandos to open with a single click.
      xaudio2: Don't render less than a period of audio.
      xaudio2: Implement CreateFX for legacy xaudio2 versions.
      xaudio2_8: Implement CreateFX.
      xaudio2_8: Add 3D audio function stubs.
      mmdevapi: Fix win10 test failures.
      xaudio2_7: Move APO implementations to a new file.
      xaudio2: Add stub interface for FXEQ.

Andrey Gusev (2):
      po: Update Ukrainian translation.
      wined3d: Recognize Radeon HD 3850 AGP.

Anton Baskanov (3):
      gdi32: Return default palette entries from GetSystemPaletteEntries for non-palette-based devices.
      quartz: Add stub IAMStreamSelect to MPEG-1 Stream Splitter.
      quartz/tests: Test that MPEG-1 Stream Splitter implements IAMStreamSelect.

Aric Stewart (3):
      hidclass.sys: Correct size of IOCTL request and unused return value.
      hid: Implement HidD_GetSerialNumberString.
      hidclass.sys: Implement IOCTL_HID_GET_SERIALNUMBER_STRING.

Bruno Jesus (20):
      avifil32: Absolute addresses already point to the correct place in the frame.
      msvfw32: Simplify error handling in ICSeqCompressFrameStart.
      iccvid: Make decode_cinepak a bit more consistent and easier to read.
      quartz: Cope with invalid MP3 headers being detect as valid.
      msvfw32: Use a helper to free memory.
      msvfw32: Fix the size of previous compressed buffer.
      msvfw32: Lpckid and lpdwFlags must be valid memory addresses.
      msvfw32: Improve tracing from ICSeqCompressFrameStart.
      msvfw32: Ask the codec to fill the lpbiOutput info when it is not available.
      msvfw32: Only update output parameters when the compress operation works.
      msvfw32: Make wine_dbgstr_fcc handle non-ASCII values better.
      msvfw32: Fix a copy & paste issue.
      msvfw32: Ask the driver about how much data is required for lpbiOut.
      msvfw32/tests: Add ICSeqFrameCompress tests.
      msvfw32: Better tracing of ICERR codes and general trace improvements.
      msvidc32: Add missing compression messages to the list.
      msvfw32/tests: Check if requesting the default codec works.
      msvfw32: When no fccHandler is specified return the first valid codec.
      winmm: Initialize struct MMIOINFO in MMIO_Open.
      avifil32: Implement AVISave[A|W] by forwarding to AVISaveV.

Can Taşan (1):
      po: Update Turkish translation.

Daniel Lehman (2):
      msvcp110: Make argument const for _Xtime_diff functions.
      msvcp120: Implement _Thrd_equal/lt.

Dmitry Timoshkov (11):
      ntdll: Return from snoop tracing helpers earlier if tracing is disabled.
      user32: Always call BeginPaint/EndPaint when handling a WM_PAINT message for the button.
      ole32: PropVariantCopy should return DISP_E_BADVARTYPE in case of bad source variant type.
      gdi32: Fix heap corruption.
      comctl32: Always call BeginPaint/EndPaint when handling a WM_PAINT message for the button.
      ole32: Initialize number of bytes read before the comparison.
      ole32: Print a FIXME when the "CONTENTS" stream refers to unsupported format.
      widl: Add support for unions to the typelib generator.
      user32/tests: Move MDI tests out of the WM_CREATE handler.
      user32/tests: Add some tests for WM_MDIGETACTIVE.
      ole32: Fallback to parsing the Presentation streams ff parsing of the "CONTENTS" stream fails.

Erich Hoover (3):
      ws2_32: Implement a basic synchronous TransmitFile.
      ws2_32: Add support for TransmitFile headers and footers.
      ws2_32: Add asynchronous support for TransmitFile.

François Gouget (4):
      d3d11: Make impl_from_ID3D11ShaderResourceView() static.
      oleaut32: Add V_RECORD() and V_RECORDINFO() and use them for wine_dbgstr_variant().
      oleview: Remove an unneeded NONAMELESSUNION define.
      hidclass.sys: Make a few functions static.

Gediminas Jakutis (1):
      d3dx9: Add adjacency generation for D3DXCreateCylinder().

Gerald Pfeifer (8):
      msi: Avoid shift overflow in msi_view_get_row.
      d3d8: Adjust D3DCOLOR_ARGB to avoid shift overflow.
      d3d8: Redefine D3DVSD_MAKETOKENTYPE to avoid shift overflow (warnings).
      d3d9: Change #define D3DSTREAMSOURCE_INSTANCEDATA to avoid shift overflow.
      ntdll: Avoid a case of shift overflow in get_cpuinfo.
      configure: Use the -Wshift-overflow=2 compiler option if available.
      d3d9: Make D3DFVF_TEXTUREFORMAT4 and friends unsigned.
      gdiplus: Avoid shift overflow in get_gif_background_color.

Grazvydas Ignotas (3):
      include: Use float math functions on ARM.
      include: Use fabsf implementation when available.
      include: Expose some more implemented math functions.

Hans Leidekker (8):
      webservices: Parse comment nodes.
      webservices: Add support for character set detection.
      webservices: Add a stub implementation of WsGetXmlAttribute.
      include: Add missing Web Services declarations.
      webservices: Implement WsCreateXmlBuffer.
      webservices: Implement WsSetOutputToBuffer.
      webservices/tests: Add tests.
      webservices: Implement WsSetInputToBuffer.

Henri Verbeet (6):
      d2d1: Properly handle collinear edges in d2d_cdt_cut_edges().
      d2d1: Properly handle collinear edges in d2d_cdt_insert_segment().
      d3d9/tests: Introduce a helper function to test for WARP.
      d3d8/tests: Introduce a helper function to test for WARP.
      wined3d: Add a missing TRACE to wined3d_texture_map().
      wined3d: Add a missing TRACE to wined3d_texture_unmap().

Hugh McMaster (2):
      kernel32: Implement the FALSE pathway of GetCurrentConsoleFont.
      kernel32/tests: Add tests for the FALSE pathway of GetCurrentConsoleFont.

Huw D. M. Davies (10):
      wineps: Let CUPS control the copy count rather than embedding it in the PostScript.
      wineps: Pass the collate setting as a CUPS option.
      ole32: Set the release interface to NULL before calls to GetDataHere.
      oleaut32: Clear any existing interface before calling WdtpInterfacePointer_UserUnmarshal().
      ole32: WdtpInterfacePointer_UserUnmarshal() should release an interface if one is passed in.
      ole32/tests: Release the marshalled data in the expected buffers.
      ole32: Correctly release an existing pointer when unmarshalling a NULL-ptr.
      ole32: Fix ref counting in GetDataHere Proxy.
      riched20: Rewrite the picture destination parser to handle embedded groups.
      riched20: Add support for the \shppict destination.

Jacek Caban (14):
      ole32: Pass requested interface IID to CreateInstance in CoCreateInstanceEx.
      ole32: Call CoCreateInstanceEx from CoCreateInstance instead of the other way around.
      winerror.h: Added DNS_REQUEST_PENDING error code.
      windns.h: Added missing DNS_QUERY_* constants.
      rpcrt4: Moved formatting pipe names to helper functions.
      rpcrt4: Added support for binding argument in RpcMgmtIsServerListening.
      rpcrt4: Added RpcMgmtIsServerListening tests.
      mshtml/tests: Fixed more test failures on win10.
      ws2_32: Added GetAddrInfoExW stub.
      ws2def.h: Fixed ADDRINFOEX declaration.
      kernel32: Pass SYNCHRONIZE access flag to NtCreateFile.
      advapi32: Pass SYNCHRONIZE flag in NtCreateFile and NtOpenFile calls.
      kernel32: Pass SYNCHRONIZE flag to NtOpenFile.
      krnl386.exe: Pass SYNCHRONIZE flag to NtCreateFile.

Józef Kucia (31):
      d3d11: Implement ID3D10ShaderResourceView1 interface.
      d3d10core/tests: Check that shader resource views implement ID3D10ShaderResourceView1.
      d3d11/tests: Check that shader resource views implement ID3D10ShaderResourceView1.
      dxgi: Make dxgi_swapchain_SetFullscreenState() hotpatchable.
      d3d11: Implement d3d10_device_CreateShaderResourceView1().
      d3d10_1/tests: Port test_create_shader_resource_view() from d3d10core.
      d3d11: Implement ID3D10BlendState1 interface.
      d3d11: Implement d3d10_device_CreateBlendState1().
      d3d10core/tests: Check that blend states implement ID3D10BlendState1.
      d3d11/tests: Check that blend states implement ID3D10BlendState.
      d3d10_1/tests: Port test_create_blend_state() from d3d11.
      d3d11: Remove outdated FIXME comment.
      d3d11: Use CreateDXGIFactory1 to create factory in D3D11CreateDevice.
      d3d11/tests: Add test for ID3D11Device parents.
      d3d10core/tests: Port test_device_interfaces() from d3d11.
      d3d10_1/tests: Port test_device_interfaces() from d3d11.
      dxgi/tests: Remove test_device_interfaces().
      d3d11: Do not store ID3D11Device pointer in d3d11_immediate_context.
      d3d11: Implement d3d11_immediate_context_GSSetShader().
      d3d11: Implement d3d11_immediate_context_IASetVertexBuffers().
      d3d11: Implement d3d11_immediate_context_CopyResource().
      dxgi: Implement IDXGIDevice1 interface.
      dxgi/tests: Add test for maximum frame latency.
      d3d/tests: Check that device implements IDXGIDevice1.
      d3d11: Rename d3d10_query to d3d_query.
      d3d11: Add ID3D11Query interface stub.
      d3d11: Implement d3d11_device_CreatePredicate().
      d3d11: Implement d3d11_device_CreateQuery().
      d3d10core/tests: Extend test_create_predicate().
      d3d11/tests: Port test_create_predicate() from d3d10core.
      include: Add D3D11_QUERY_MISC_FLAG declaration.

Ken Thomases (4):
      winemac: Use a snapshot of an owned window when a zero-sized owner window is minimized.
      winemac: Reorganize copy_display_modes() to clarify that the user's default mode is always included.
      winemac: Fix how the user's default display mode is determined.
      winemac: Add another workaround for bad side effects of CGWarpMouseCursorPosition().

Martin Storsjo (5):
      ucrtbase: Implement some printf functions.
      combase: Fix cornercase error handling in WindowsCreateStringReference.
      ucrtbase: Hook up the terminate function.
      ucrtbase: Implement vsscanf.
      vcruntime140: Add the new MSVC 2015 compiler specific DLL.

Matteo Bruni (11):
      wined3d: Use non-deprecated texture sample builtins also in the fragment pipeline replacement shaders.
      wined3d: Set GL_DEPTH_TEXTURE_MODE_ARB to GL_INTENSITY.
      d3d9/tests: Extend the INTZ test a bit.
      d3d9/tests: Extend the shadow test a bit.
      wined3d: Allow FBO blits for depth formats with swizzle fixups.
      wined3d: Add a format fixup for INTZ on core profile.
      d3d8/tests: Extend the INTZ test a bit.
      d3d8/tests: Extend the shadow test a bit.
      wined3d: Use the core version of the debug messages functions.
      msctf: Add ITfThreadMgrEx stub.
      msctf: Add ITfUIElementMgr stub.

Michael Cronenworth (1):
      winegcc: Check for linker relocation support before relying on prelink.

Michael Stefaniuc (7):
      ddraw/tests: Test the return of DrawPrimitive().
      gdiplus/tests: Test the return of GdipImageSelectActiveFrame().
      d3d9/tests: Test the return value of CreateDepthStencilSurface().
      kernel32/tests: Simplify an ok() condition (PVS-Studio).
      rsaenh/tests: Mark an old behavior as broken (PVS-Studio).
      ddraw/tests: Use the proper type for a return value (PVS-Studio).
      oleaut32: Remove an always true if-subcondition (PVS-Studio).

Nikolay Sivov (44):
      include: Add a couple of documented Toolbar messages definitions.
      shell32: Remove recurring return value check (PVS-Studio).
      mshtml: Use VARIANT_TRUE instead of TRUE when appropriate (PVS-Studio).
      dwrite: Scale glyph run analysis advances and offsets with ppdip factor.
      dwrite: Scale run origin by given ppdip run analysis was created with.
      dwrite: Set bitmap target ppdip factor from context dpi.
      dwrite: Respect transform when calculating glyph advances for run analysis.
      strmbase: Remove some redundant return value initializers.
      strmbase: Remove redundant null pointer check.
      strmbase: Switch to void for QualityControlImpl_Destroy().
      shell32: Remove another recurring return code check (PVS-Studio).
      comctl32/syslink: Simplify conditional expression (PVS-Studio).
      ole32/tests: Use BOOL variables for BOOL return type (PVS-Studio).
      oleaut32/tests: Don't use HRESULT codes for BOOL retval (PVS-Studio).
      usp10/tests: Use BOOL variable for BOOL retval (PVS-Studio).
      xmllite: Don't use HRESULT codes for BOOL retval (PVS-Studio).
      shell32: Cleanup ReadCabinetState exports.
      ddraw: Use proper prototype for internal enumeration callback (PVS-Studio).
      shell32: Properly handle SHGetPathFromIDListW failure (PVS-Studio).
      wintrust/tests: Use proper return types when calling provider funcs (PVS-Studio).
      quartz: Minor cleanup of returned interface pointers.
      shell32/tests: Fix prototype to match implementation (PVS-Studio).
      dxdiagn: Properly set VT_BOOL values (PVS-Studio).
      msi: Use VARIANT_BOOL values consistently for VT_BOOL type (PVS-Studio).
      include: Fix a couple of logical processor info structures.
      user32: Added a GetDisplayConfigBufferSizes stub.
      dwrite/tests: Some tests for GetRecommendedRenderingMode() with different ppdip values.
      prntvpt: Remove export ordinals.
      prntvpt: Added PTOpenProvider() stub.
      gdiplus: Added GdipBitmapConvertFormat stub.
      dwrite: Use dpiX/dpiY argument in GetRecommendedRenderingMode().
      dwrite/tests: Add missing return value test (PVS-Studio).
      mshtml/tests: Add missing return value test (PVS-Studio).
      msi/tests: Add missing return value test (PVS-Studio).
      msxml3/tests: Add missing return value test (PVS-Studio).
      d3dx9_36/tests: Use proper printf format (PVS-Studio).
      comctl32/listview: Fix printf format (PVS-Studio).
      crypt32/tests: Fix printf format (PVS-Studio).
      dwrite: Fix analysis leak on error path.
      ntdll: Fix printf format to use unsigned integers (PVS-Studio).
      shell32: Fix temporary item array leak (Valgrind).
      dwrite: Fix streams and files pointer arrays leak (Valgrind).
      dwrite: Fail earlier in TranslateColorGlyphRun() for fonts without color info.
      dwrite/tests: Fixed some leaks (Valgrind).

Pierre Schweitzer (1):
      msacm32.drv: Don't dereference a pointer after free.

Piotr Caban (3):
      shlwapi: Don't crash in PathStripPath when read-only string is passed and it's not modified.
      msvcp120: Fix tr2::sys::__Statvfs header for gcc.
      msvcp110: Fix 64-bit _Getcoll implementation.

Riccardo Bortolato (15):
      d3d8: Call wined3d_swapchain_get_front_buffer_data instead of wined3d_device_get_front_buffer_data in d3d8_device_GetFrontBuffer.
      d3d9: Call wined3d_swapchain_get_front_buffer_data instead of wined3d_device_get_front_buffer_data in d3d9_device_GetFrontBuffer.
      wined3d: Make wined3d_swapchain_get_front_buffer_data work with wined3d_texture and sub_resource_idx.
      wined3d: Make wined3d_device_set_cursor_properties work with wined3d_texture and sub_resource_index.
      wined3d: Introduce a new wined3d_texture_blt function.
      d3d9: Replace wined3d_surface_preload with wined3d_texture_preload.
      d3d9: Replace wined3d_surface_get_resource with wined3d_texture_get_sub_resource in d3d9_device_ColorFill.
      d3d9: Replace wined3d_surface_blt with wined3d_texture_blt in d3d9_device_StretchRect.
      d3d9: Avoid using a wined3d_surface in get_desc calls inside d3d9_device_StretchRect.
      d3d9: In surface_init check for GetDC supported at texture level (avoid using a subresource).
      d3d9: Replace wined3d_surface_get_render_target_data with wined3d_texture_blt in d3d9_device_GetRenderTargetData.
      wined3d: Introduce wined3d_rendertarget_view_create_from_sub_resource().
      d3d8: Use wined3d_rendertarget_view_create_from_sub_resource() in d3d8_surface_get_rendertarget_view().
      wined3d: Introduce wined3d_texture_get_dc().
      wined3d: Introduce wined3d_texture_release_dc().

Sebastian Lackner (23):
      kernel32/tests: Add tests for GetPhysicallyInstalledSystemMemory.
      kernel32: Implement stub for GetPhysicallyInstalledSystemMemory.
      kernel32/tests: Remove unnecessary busy loop (PVS-Studio).
      ntdll: Use wrapper function for consolidate callback on x86_64.
      maintainers: Add a section for volunteer reviewers.
      kernel32/tests: Add test to show that multiple user APCs are processed at once.
      ntdll: Do not check if object was signaled after user APC in server_select.
      ws2_32: Use wine_server_release_fd to close file descriptor.
      kernel32/tests: Add tests for triggering write watches in asynchronous ReadFile call.
      combase: Add TRACEs to string functions.
      combase: Simplify NULL pointer check in WindowsCreateString[Reference].
      combase: Implement WindowsSubstringWithSpecifiedLength.
      combase/tests: Add tests for WindowsSubstringWithSpecifiedLength.
      gdiplus: Use the correct memory allocation function for PropVariants.
      gdiplus: Use helper function for HeapAlloc calls.
      gdiplus: Use helper function for HeapReAlloc calls.
      gdiplus: Use helper function for remaining HeapFree calls.
      server: Remove a wrong release_object in write_console_input.
      server: Unconditionally close APC handle in get_apc_result call.
      server: Remove unused device manager argument from set_irp_result call.
      combase: Implement WindowsConcatString.
      combase/tests: Add tests for WindowsConcatString.
      server: Add a missing grab_object in cgwe_enum.

Stefan Dösinger (2):
      wined3d: Only set GL_DEPTH_TEXTURE_MODE_ARB if ARB_depth_texture is supported.
      wined3d: Prepare GL resources before calling context_apply_fbo_state.

Stefan Leichter (1):
      wimgapi: Add new stub dll.

Thomas Faber (2):
      shdocvw: Add missing parameter to RunInstallUninstallStubs2.
      wldap32: Add missing const to ldap_init definitions.

Thomas Pointhuber (2):
      combase: Implement WindowsSubstring.
      combase/tests: Add tests for WindowsSubstring.

Vincent Povirk (2):
      gdiplus/tests: Add a test for CompositingModeSourceCopy.
      maintainers: Add myself.

--
Alexandre Julliard
julliard@winehq.org
