The Wine development release 1.7.38 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine based on Firefox 36.
  - Support for themed scrollbars.
  - Updated version of the Mono engine.
  - More compatible RPC interface for service control.
  - Support for X Drag & Drop version 5.
  - Threading fixes in IME support.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.38.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.38.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.38 (total 57):

   9610  Non-Windows(XP) behaviour for using themes in apps
  12182  Multiple games need X3DAudio1_1.dll (Supreme Commander)
  12717  Europa Universalis III: Borders drawn corrupted
  12804  winecfg: pressing enter in library override closes winecfg
  14367  revise stack-frame relay code never to touch other side of stack pointer
  15721  Adobe Digital Editions doesn't install
  16039  configure does not support detection of (n)cursesw
  17403  Uru - Ages Beyond Myst + Expansion Packs: Decompressing sounds produces faulty output
  23057  BitComet: Crashes at clicking on web content
  23370  OpenBOR and many other application crashed.
  23560  Text missing and/or background not rendered in Peril at End House
  24103  MYOB: won't print report
  24545  Monkey Island: Special Edition wants X3DAudio1_6.dll
  25436  Lithuanian translation of "Program files" and "Application Data" folders  (see file shell32_Lt.rc) causes problems with some software for Windows
  26167  Crash in open file dialog when dragging folder upon file
  26784  Icebreakers demo does not start
  27050  Audiosurf - mouse does not work properly
  27279  LEGO Pirates of the Caribbean DEMO needs XAPOFX1_3.dll.CreateFX (XAudio2)
  29450  Some GDI+ objects do not display correctly
  30212  Multiple apps need Scripting.Dictionary 'Add' method stub implementation (AutoIt 3, Polymath)
  30715  DVDFlick 1.3.x fails on startup with "automation error" (needs Scripting.Dictionary "Exists" method implementation)
  30901  32-bit services fail to run in 64-bit WINEPREFIX/shared wow64 (PunkBuster, SafeDisc, ...)
  32476  DVDFlick 1.3.x fails on startup with "automation error" (needs Scripting.Dictionary "get_Item" method implementation)
  32913  Planetside 2: Mouse Jittering
  33409  ExpeditionPCB EE7.9 crashes
  33672  Wine Internet Explorer unable to login to http://cctvcamerapros.vmddns.com/
  33781  Installation of CSC Show Control needs RemoveAll() for Dictionary
  33897  TeamView Cannot Move or Resize Remote Linux Application Window
  33990  MSVC 2013 std::mutex crashes
  34310  Exiting Backyard soccer 2004 leaves only a small portion of screen usable
  34518  MS Powerpoint 2007: Crashes on embedded vector graphic
  34582  Gothic: problems with mouse look
  34716  HippoAnimator3 fails on startup, complains 'Invalid name' (GetTempPathW on poisoned stack buffer)
  34809  WinDirStat: command line here (right click on file) doesn't work
  35361  Multiple games and applications crash or freeze on input (Steam with in-game community overlay enabled, The Scourge Project)(cross-process/thread IME manipulation is forbidden)
  35369  differences between ./dlls/shlwapi/wsprintf.c and ./dlls/user32/wsprintf.c
  35429  Naver LINE crashes when you close a window
  35463  shell32/tests shlfileop : would fail depending on locale settings
  35508  File picker in LMMS 0.9.90 Win32 doesn't show files
  35781  kernel32/pipe test fails
  36005  windowscodecs/metadata tests fail with WINEDEBUG=warn+heap
  36090  Outside ground textures in WildStar Online are corrupted
  36371  Visolve Deflector Black Screen
  36594  valgrind shows uninitialized memory use in windowscodecs/tests/metadata.c
  36868  Builtin browser can't submit HTML <form> if target is "_blank"
  36874  Incorrect check in SrcColorKey32BlitTest()
  37046  Roblox Studio/Player fails to download games ('Accept-Encoding' header is valid for 'HTTP/1.0' requests)
  37261  Dasher crashes on start in mshtml:get_node()
  37888  mshtml: multi-line text inside a <pre> element is rendered in a single line
  38091  Desperados 2 v1.01: speech missing (needs msvcp71.dll.?do_date_order@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AW4dateorder@time_base@2@XZ)
  38106  Kaspersky Internet Security 2010 fails to install, load_streams unable to open stream
  38111  Desperados 2 v1.01: assigned keys not displayed properly in the options menu (needs msvcp71.dll.?_Getcat@facet@locale@std@@SAIPAPBV123@@Z)
  38122  Spelling mistake in Dutch crash dialog
  38129  Wavelab 6.1.1 crashes
  38143  IO completions cause wineserver to leak APC packets
  38144  Condemned: Criminal Origins: online activation fails
  38165  F.E.A.R 1 freezing in the menu (network related)

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

Changes since 1.7.37:

Akihiro Sagawa (6):
      po: Update Japanese translation.
      winmm/tests: Add tests for PlaySound().
      winmm: Add .wav extension when searching for PlaySound.
      po: Update Japanese translation.
      winmm/tests: Add MCI_SETAUDIO command tests.
      mciqtz: Implement MCI_DGV_SETAUDIO_VOLUME.

Alex Henrie (1):
      x3daudio1_2: Add stub dll.

Alexandre Julliard (34):
      schedsvc/tests: Don't depend on folder enumeration order.
      user32/tests: Ignore WM_PAINT messages in GetMessagePos test.
      user32/tests: Avoid a race with the get/set window text threads.
      kernel32/tests: Try harder to empty the pipe for completion notification.
      dinput: Implement GetDeviceInfo for Linux joystick.
      imm32: Add a helper function to get the default context.
      imm32: Simplify the helper functions to retrieve the thread data.
      imm32: Remove redundant IsWindow calls.
      ntdll: Use the fileio structure and callback also for ioctl calls.
      ntdll: Move NtNotifyChangeDirectoryFile to file.c and make it use the standard fileio structure.
      ntdll: Don't queue a user APC when there is no callback function.
      ws2_32: Add a common header to the async I/O structures.
      ws2_32: Add a separate structure for async shutdowns.
      ws2_32: Don't queue a user APC when there is no callback function.
      server: Allow passing an argument for the user APC async I/O callbacks.
      ntdll: Allow specifying the user APC argument in the system APC callback.
      ntdll: Avoid the intermediate user APC callback.
      Revert "shell32: Also return Attributes in GetFolderDefinition."
      include: Avoid IKsPropertySet forward type redefinition.
      wrc: Remove duplicate parentheses.
      winebuild: Avoid assigning values outside of the target_cpu enum range.
      msvcp90: Add support for throwing bad cast exception to avoid unused variable warning.
      msvcrt: Undefine __thiscall before redefining it.
      msvcrt: Use the correct object type for __non_rtti_object exceptions.
      oledb32/tests: The destination array address can't be modified by the called function.
      shell32/tests: Use NULL for a null pointer.
      mmdevapi/tests: Use float constants with fabsf.
      scrrun: Fix typo in header guard.
      gdi32: Use shorter constants for byte and word masks to avoid warnings.
      wininet: Hardcode the base64 table to avoid ugly macros.
      mountmgr: Don't access the IRP after it has been completed.
      ntoskrnl: Use the IRP allocation routines for standard ioctl processing.
      ntoskrnl: Use the MDL allocation routines for standard ioctl processing.
      ntoskrnl: Get rid of the IRP instance list.

Alistair Leslie-Hughes (4):
      dpnet: Add check for mismatched string lengths.
      dpnet: Free previous allocated data.
      dpnet: Always update type since it might change.
      dpnet: Correct usage of memcpy in GetComponentByName.

Amine Khaldi (3):
      dinput/tests: Declare pDirectInputCreateEx in a MSVC compatible way.
      include: Complete and properly pack DNS_HEADER structure.
      include: Correct DDSCAPS2 and DDSURFACEDESC2 structures and their uses.

Andrew Eikum (10):
      advapi32: Stub EventActivityIdControl.
      services: Monitor process handles for process quit.
      advapi32/tests: Don't test service timeout.
      advapi32: Partially implement NotifyServiceStatusChangeW.
      shell32: Rearrange error handling in IKnownFolder::GetFolderDefinition.
      shell32: Use a helper function to get DWORDs from registry.
      shell32: Use a helper function to allocate strings from the registry.
      shell32: Also return ParentFolder ID in GetFolderDefinition.
      shell32: Also return RelativePath in GetFolderDefinition.
      shell32: Fall back on CSIDL path for knownfolders without a path in the registry.

Andrey Gusev (5):
      po: Fix a mistake in Dutch translation.
      x3daudio1_4: Add stub dll.
      x3daudio1_5: Add stub dll.
      x3daudio1_3: Add stub dll.
      po: Update Ukrainian translation.

André Hentschel (6):
      taskmgr: Remove dead code.
      ole32: Remove unused macros.
      strmbase: Remove unused macro.
      oleaut32: Remove unused macros.
      msxml3: Declare debug channels only when needed (Clang).
      shell32: Don't call Drop without valid target.

Aric Stewart (5):
      imm32: Move thread data from TLSEntry to an internal list.
      imm32: Do not let ImmDestroyContext destroy any default contexts.
      imm32: Use thread data from target HWND.
      imm32: Restrict cross-thread association and destruction.
      imm32: Limit cross thread access to ImmSet* functions.

Aurimas Fišeras (3):
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.

Austin English (4):
      x3daudio1_6: Add stub dll.
      shlwapi: Sync wsprintf implementation from user32.
      include: Add more entries to msasn1.h.
      include: Add ASN1_* function prototypes.

Bruno Jesus (4):
      kernel32/tests: Add more GetTempPath tests.
      kernel32: GetTempPathW must zero the remaining buffer.
      kernel32: In GetTempPathW only copy the path if it fits and zero the buffer when it doesn't.
      ws2_32: Make closesocket() more robust.

Christian Costa (2):
      windowscodecs: Fix init of LONGLONG variable with a negative value in TGA decoder.
      d3dx9_36: Fix d3dx9_skin_info_ConvertToIndexedBlendedMesh stub.

Damjan Jovanovic (1):
      winex11.drv: Support XDnD version 5.

Daniel Lehman (1):
      wininet: Eat terminator on last chunk.

François Gouget (13):
      advapi32: Fix compilation on systems that don't support nameless unions.
      dbghelp: Fix compilation on systems that don't support nameless unions.
      include/ddk: Make ntddk.h compatible with systems that don't support nameless unions.
      services: Fix compilation on systems that don't support nameless unions.
      mshtml: Make insert_adjacent_node() static.
      dinput: IDirectInputDevice8WImpl_SetActionMap() is redundant so remove it.
      ndis.sys: Convert ndis.sys to a native driver as it should be.
      advapi32/tests: Make cb_{running,stopped}() static.
      advapi32: Avoid defining SECURITY_INFORMATION multiple times.
      ole32: Don't define NONAMELESSUNION in olestd.h. It's not needed anyway.
      d3dx9_36: Remove unneeded NONAMELESSXXX directives.
      mountmgr.sys: Remove unneeded NONAMELESSXXX directives.
      hal: Remove unneeded NONAMELESSXXX directives.

Hans Leidekker (3):
      msi: Decode stream names in load_streams.
      msi: Support updating streams.
      msi: Add offsets to file patch sequence numbers.

Henri Verbeet (25):
      d3d10core: Implement d3d10_device_SetPrivateData().
      d3d10core: Implement d3d10_device_SetPrivateDataInterface().
      d3d10core: Implement d3d10_device_GetPrivateData().
      d3d10core: Implement d3d10_texture2d_SetPrivateData().
      d3d10core: Implement d3d10_texture2d_SetPrivateDataInterface().
      d3d10core: Implement d3d10_texture2d_GetPrivateData().
      d3d10core: Implement d3d10_query_SetPrivateData().
      d3d10core: Implement d3d10_query_SetPrivateDataInterface().
      d3d10core: Implement d3d10_query_GetPrivateData().
      d3d10core: Implement d3d10_buffer_SetPrivateData().
      d3d10core: Implement d3d10_buffer_SetPrivateDataInterface().
      d3d10core: Implement d3d10_buffer_GetPrivateData().
      d3d10core: Implement d3d10_input_layout_SetPrivateData().
      d3d10core: Implement d3d10_input_layout_SetPrivateDataInterface().
      d3d10core: Implement d3d10_input_layout_GetPrivateData().
      d3d10core: Implement d3d10_vertex_shader_SetPrivateData().
      d3d10core: Implement d3d10_vertex_shader_SetPrivateDataInterface().
      d3d10core: Implement d3d10_vertex_shader_GetPrivateData().
      d3d10core: Implement d3d10_geometry_shader_SetPrivateData().
      d3d10core: Implement d3d10_geometry_shader_SetPrivateDataInterface().
      d3d10core: Implement d3d10_geometry_shader_GetPrivateData().
      d3d10core: Implement d3d10_pixel_shader_SetPrivateData().
      d3d10core: Implement d3d10_pixel_shader_SetPrivateDataInterface().
      d3d10core: Implement d3d10_pixel_shader_GetPrivateData().
      d3d10core: Implement d3d10_blend_state_SetPrivateData().

Jacek Caban (21):
      hhctrl.ocx: Store WebBrowser container struct instead of interfaces in HHInfo.
      mshtml: Added OLECMDID_COPY implementation.
      mshtml: Share OLECMDID_SELECTALL implementation with IDM_SELECTALL.
      mshtml: Added support for CONTEXT_MENU_TEXTSELECT context menu type.
      hhctrl.ocx: Added support for context menus.
      wininet: Call WSACleanup only if WSAStartup was previously called successfully.
      mshtml: Correctly handle S_OK with NULL URL return from TranslateUrl.
      mshtml: Wine Gecko 2.36 release.
      appwiz.cpl: Use custom user agent string for addon downloader.
      urlmon: Added IInternetBindInfo implementation to BindStatusCallback object.
      mshtml: Use return_nsstr helper in IHTMLDocument5::get_compatMode.
      vbscript: Added support for DISPATCH_PROPERTYPUTREF flag.
      vbscript: Pass DISPATCH_PROPERTYPUTREF flag to InvokeEx when apropriate.
      vbscript: Convert VT_DISPATCH propput value to trivial value if DISPATCH_PROPERTYPUTREF is not set.
      vbscript: Fail to set non-object values with DISPATCH_PROPERTYPUTREF flag.
      vbscript: Leave assigning value up to add_dynamic_var callers.
      vbscript: Leave converting object to trivial values up to calee.
      vbscript: Added DISPATCH_PROPERTYPUTREF tests.
      appwiz.cpl: Include package version in request URL.
      vbscript: Added a helper for getting default IDispatch value.
      mshtml: Return S_OK in IHTMLPluginsCollection::refresh.

Jonathan Vollebregt (3):
      reg: Add sane_path function to do preliminary key validation.
      reg: Add a check for multiple backslashes at the end of the key.
      reg: Add wchar/type conversion functions.

Julian Rüger (1):
      po: Update German translation.

Lauri Kenttä (1):
      po: Update Finnish translation.

Marcus Meissner (1):
      dsound: If 3d sound is disabled, just return (Coverity).

Mark Harmstone (11):
      winecfg: Refresh sys params on theme change.
      dsound/tests: Add a test for SetFX.
      include: Add IMediaObject interfaces.
      include: Add definition for KSDATAFORMAT_TYPE_AUDIO.
      include: Add definition of GUID_All_Objects.
      comctl32: Call OpenThemeData on themed scrollbars.
      dsound/tests: Add GetObjectInPath tests.
      comctl32: Paint themed scrollbars.
      comctl32: Add hit testing for themed scrollbars.
      comctl32: Draw hot parts of themed scrollbars.
      uxtheme: Assume imagecount to be 1 if unspecified.

Matteo Bruni (10):
      opengl32: Filter disabled extensions on OpenGL core profile contexts too.
      opengl32: Return a NULL pointer for functions requiring unsupported or disabled extensions.
      d3d8/tests: Move a Present out of the loops in fog_with_shader_test().
      wined3d: Use the core version of the INCR_WRAP and DECR_WRAP tokens.
      wined3d: Remove ARB_/EXT_TEXTURE_ENV_ADD.
      wined3d: Remove an obsolete comment.
      wined3d: Drop a few unnecessary &x[0].
      wined3d: Add a couple checkGLcall() in surface_prepare_rb().
      wined3d: Drop redundant check for instanced rendering from drawStridedFast.
      d3d9: Pack structures to 4-bytes alignment on x86.

Michael Müller (3):
      wininet: Allow Accept-Encoding for HTTP/1.0 requests.
      winedevice: Call DriverUnload function when unloading a driver.
      gdi32: Fix arguments for OSMesaMakeCurrent when using 16 bit formats.

Michael Stefaniuc (36):
      oledlg: RT_DIALOG is already an int resource (PVS-Studio).
      setupapi: RT_MANIFEST is already an int resource (PVS-Studio).
      mshtml/tests: Remove an always true conditional subexpression (PVS-Studio).
      oleaut32/tests: Remove an always true conditional subexpression (PVS-Studio).
      rsaenh: Remove an always false conditional subexpression (PVS-Studio).
      wcmd: Remove an unused variable (PVS-Studio).
      appwiz.cpl: Use the proper type to hold the return value (PVS-Studio).
      d3d8/tests: Test the return value of CreateVolumeTexture (PVS-Studio).
      mshtml: RT_HTML is already an INTRESOURCE (PVS-Studio).
      riched20: Remove no-op addition with 0 (PVS-Studio).
      crypt32/tests: Remove an unused assignment (PVS-Studio).
      crypt32/tests: Add a missing test case (PVS-Studio).
      ieframe: Remove unused assignments (PVS-Studio).
      d3d9/tests: Actually test some return values (PVS-Studio).
      ddraw/tests: Actually test some return values (PVS-Studio).
      kernel32/tests: Actually test a return value (PVS-Studio).
      oledb32/tests: Remove an unused assignment (PVS-Studio).
      shell32/tests: Actually test some return values (PVS-Studio).
      shlwapi: Remove two unused assignments (PVS-Studio).
      windowscodecs/tests: Actually test some return values (PVS-Studio).
      winmm/tests: mmioAdvance() returns a MMRESULT and not a size (PVS-Studio).
      ws2_32/tests: Remove an unused assignment (PVS-Studio).
      ws2_32/tests: Actually test a return value (PVS-Studio).
      wininet: Remove unused code, sizeof(void*)%4 is always false (PVS-Studio).
      version: VS_FILE_INFO is already and INTRESOURCE (PVS-Studio).
      gdi32: Remove double parentheses, not a misplaced pair (PVS-Studio).
      mmdevapi/tests: Remove an unused assignment (PVS-Studio).
      msctf/tests: Remove an unsused assignment (PVS-Studio).
      mshtml/tests: Remove an unused assignment (PVS-Studio).
      msvcrt: Clarify comparison of the diff of two unsigneds with 0 (PVS-Studio).
      mmdevapi: Don't check for IID_IDirectSoundCapture8, it is just a define (PVS-Studio).
      winhlp32: Simplify code that happened to work by chance (PVS-Studio).
      wordpad: Simplify code that happened to work by chance (PVS-Studio).
      ieframe/tests: Merge adjacent identical if's (PVS-Studio).
      msxml3/tests: Merge two adjacent if blocks with identical condition (PVS-Studio).
      d3d9/tests: Remove no-op binary & with all 1's (PVS-Studio).

Nikolay Sivov (41):
      dwrite: Use FreeType CMAP cache system instead of parsing tables manually.
      dwrite/tests: Fixed font instance leak.
      dwrite/tests: Test default colors of render target memory HDC.
      dwrite/tests: Place test font file in temporary location, make sure it's deleted after the test.
      scrrun: Store compare method for dictionary.
      gameux/tests: Simplify test game registering, add intermediate test checks.
      gameux/tests: Simplify initial test skipping.
      scrrun: Implement HashVal property for VT_BSTR case.
      scrrun: Implement HashVal property for integer keys.
      scrrun: Implement HashVal for floating point keys.
      services: Make ChangeServiceConfig2W() rpc call compatible with native one.
      services: Pass resume index to server.
      po: Update Russian translation.
      scrrun/tests: More dictionary tests.
      scrrun: It's not allowed to change compare mode when dictionary is not empty.
      include: Fix REPASTESPECIAL definition.
      include: Fix packing of DWM_BLURBEHIND.
      advapi32: Fix trace format for access mask in OpenService().
      services: Make RPC interface compatible with native.
      advapi32: Forward to CreateServiceWOW64W() when appropriate.
      services: Mark WOW64 services in registry.
      include/debug.h: Support tracing of VT_BSTR|VT_BYREF.
      scrrun: Implement Add() and RemoveAll() for dictionary.
      scrrun: Support VT_BSTR|VT_BYREF keys.
      scrrun: Implement Item() property for dictionary.
      scrrun: Implement Remove() for dictionary.
      scrrun: Implement Exists() method for dictionary.
      comctl32/tests: Fix Monthcal tests failures on some VMs.
      services: Locate service image in proper system dir for WOW64 case.
      scrrun: Implement Keys() and Items() of dictionary.
      scrrun: Implement put_Key() for dictionary.
      scrrun/tests: A test for adding BYREF item.
      scrrun: Implement GetExtensionName().
      include: Fix null pointer dereference while tracing.
      rpcrt4: Use RPC_* error code names.
      rpcrt4: Fix argument check in MesEncodeFixedBufferHandleCreate().
      rpcrt4: Implement MesBufferHandleReset().
      rpcrt4: Implement MesEncodeDynBufferHandleCreate().
      services: Fix GetNotifyResults() prototype.
      rpcrt4: Implement RPC_FC_CALLBACK_HANDLE handle type for NdrClientCall2().
      rpcrt4: Added inline helper to test for Oicf stub descriptions.

Piotr Caban (15):
      winmm: Write user data after headers in mmioAdvance so IDiskOffset is updated correctly.
      winmm: Save data that was not yet written in mmioSetInfo.
      winmm: Add RIFF creation tests.
      msvcp71: Add locale::facet::_Getcat implementation.
      msvcp: Added _Getdateorder implementation.
      msvcp90: Added time_get<char> class stub.
      msvcp90: Added time_get<char>::do_date_order implementation.
      msvcp: Sync spec files.
      ieframe/tests: Added more OleObject_Close tests.
      windowscodecs: Initialize unused part of metadata PROPVARIANT to 0.
      windowscodecs: Make it possible to use MetadataReaders when COM was not initialized.
      windowscodecs: Add helper to create internal COM classes without CoCreateInstance call if possible.
      gdiplus: Don't use CoCreateInstance in decode_image_wic.
      gdiplus: Don't use CoCreateInstance in get_palette function.
      gdiplus: Don't use CoCreateInstance in encode_image_wic.

Sebastian Lackner (21):
      shell32: Fix memory leak in ApplicationAssociationRegistration_QueryCurrentDefault.
      shell32: Simplify check for an empty string.
      ntdll: Try to handle write-watches while we're on the signal stack.
      winebuild: Do not access memory below ESP when restoring thread contexts.
      winex11: Only enable XInput2 cursor warp workaround if necessary.
      msxml3: Fix incorrect size argument of FormatMessageW.
      shell32: Fix incorrect size argument of FormatMessageW.
      browseui: Always use interlocked functions when accessing variable BROWSEUI_refCount.
      amstream: Do not allow unloading while library is still in use.
      d3dxof: Do not allow unloading while library is still in use.
      quartz: Remove unused variable.
      msctf: Always use interlocked functions when accessing MSCTF_refCount.
      include: Fix definition of SECTION_BASIC_INFORMATION and SECTION_IMAGE_INFORMATION.
      ntdll/tests: Add tests for NtQueryLicenseKey.
      ntdll/tests: Add tests for TpSimpleTryPost function.
      ddraw: Remove unused code for ChangeUniquenessValue.
      ole32: Fix an invalid usage of InterlockedCompareExchange.
      winebuild: Conditionally use different code for restoring the context structure.
      winecfg: Add library override instead of closing winecfg when pressing Enter.
      ntdll: Assert when trying to replace an exiting file descriptor in fd_cache.
      ws2_32: Avoid kernel32 functions in system APC calls.

Shuai Meng (1):
      shell32: Also return Attributes in GetFolderDefinition.

Stefan Dösinger (2):
      d3d9/tests: Extend the FPU setup test.
      d3d8/tests: Extend the FPU setup test.

Thomas Faber (3):
      wbemprox: Allocate a large enough buffer in get_computername.
      wbemprox: Implement Win32_ComputerSystem.UserName.
      wbemprox: Implement MSVC version of do_cpuid.

Vincent Povirk (4):
      xmllite: Fix reader_cmp for multiple characters.
      crypt32: Add test for PKCS_RSA_PRIVATE_KEY decoding.
      crypt32: Implement PKCS_RSA_PRIVATE_KEY decoding.
      mscoree: Update Wine Mono to 4.5.6.

--
Alexandre Julliard
julliard@winehq.org
