The Wine development release 1.9.4 is now available.

What's new in this release (see below for details):
  - Support for color glyphs and font fallbacks in DirectWrite.
  - Improvements to the WebServices reader.
  - Support for more formats in Direct3D 11.
  - Simplified syntax and clean up of tests marked todo.
  - Various bug fixes.

The source is available from the following locations:

  http://dl.winehq.org/wine/source/1.9/wine-1.9.4.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.9/wine-1.9.4.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.9.4 (total 27):

   9823  Mentioning "wine eject" in SGML
  11657  Problems with MessageBox API
  12217  Documentation should be in XML and not SGML format
  13683  Ultima IX: Mouse pointer missing when reading books, under inventory
  19733  Pendulumania crashes
  21454  Dolphin Wii/GCN emulator crashes on rom load
  27680  Multiple 64-bit applications crash on startup (violation of the Windows 64-bit ABI, stack pointer (RSP) must be 16-byte aligned when making a call to Win64 API)
  29862  BitComet version<1.37 fails to start
  33581  Wine does not quit gracefully
  34174  MinGW installer 0.5-beta-20120426-1 fails to process log files (sharing violation on temp file used for piped output)
  35824  UltraISO 'ISODrive.sys' crashes in entry point (SCM doesn't start SERVICE_FILE_SYSTEM_DRIVER type services with winedevice hosting process)
  36013  bleem! 1.4 (PlayStation emulator) fails on startup, complaining with 'Not enough memory to load program!'
  37288  Not implemented feature System.Drawing.Pen.ResetTransform()
  37373  No Limits 2: Help files fails to show text. Needs Times New Roman, or dwrite ability to use font replacements
  37556  CompareStringW should abort on the first nonmatching character to avoid invalid memory access.
  38314  Mouse Wheel doesn't work for Jagged Alliance 2 version 1.13 (it uses MOUSEHOOKSTRUCTEX)
  39433  mshtml:xmlhttprequest fails on IE 7
  39792  Saturn PCB Design Toolkit 6.86 fails to load, reporting missing 'SHCore.dll' dependency (import descriptors with empty thunk list must be ignored)
  39866  XIIZeal (steam) immediately exits on start
  40034  Linksys usb wireless adapter installer needs wlanapi.dll.WlanEnumInterfaces
  40053  Romance of the Three Kingdoms 13 (三國志13) fails to start
  40075  3DMarkVantage needs SM4 dcl_output_siv support
  40094  SimCity 4 Deluxe fails to start when set to use hardware rendering
  40108  kernel32:process regression
  40114  mshtml:style regression (crash)
  40129  MSI Reading and Writing Behaves differently than Windows
  40166  drcom.exe client needs rasapi32.RasGetLinkStatistics

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

Changes since 1.9.3:

Akihiro Sagawa (4):
      imm32/tests: Fix typo.
      imm32/tests: Use WM_CLOSE instead of DestroyWindow().
      imm32/tests: Terminate the thread cleanly.
      po: Update Japanese translation.

Alexandre Julliard (36):
      server: Add a function to lookup an object by name inside any parent, not only directories.
      server: Implement the lookup_name operation for window stations.
      server: Use the lookup_name operation when creating a named object.
      server: Add a function to open a named object inside any parent, not only directories.
      server: Use the generic named object functions for mailslots.
      server: Use the generic named object functions for named pipes.
      ntdll/tests: Add some tests for registry path names.
      ntdll/tests: Fix a couple of test failures on limited user accounts.
      libwine: Map partial DBCS characters to the default char.
      make_unicode: Fix typo in Indic syllable table generation.
      make_unicode: Support sparse arrays for character tables.
      make_unicode: Update vertical orientation table to the latest version.
      server: Allow lookup_name to distinguish the case of an empty path.
      server: Support opening objects from any root, not only directories.
      server: Support opening file objects from any root, not only directories.
      server: Avoid redundant open call when looking for an object type.
      server: Implement object type for registry keys.
      server: Remove some no longer used directory functions.
      ntdll/tests: Remove some macros.
      server: Use a standard object for object attribute roots instead of a directory.
      server: Require a directory as root to open an object with a name.
      server: Set the security descriptor at object creation.time.
      ntdll/tests: Add some tests for opening objects through symlinks.
      opengl32: Update to the current OpenGL spec.
      makefiles: Import libraries don't need to depend on subdirectories even when there's a static lib.
      makefiles: Generate dependencies for import libraries.
      wininet/tests: Remove todo from a succeeding test.
      libwine: Move the digit folding tables to libwine_port.
      libwine: Move the wine_fold_string implementation to libwine_port.
      libwine: Move the codepage tables to libwine_port.
      libwine: Move the CP_SYMBOL conversion functions to libwine_port.
      user32/tests: Add another test for dialog creation messages without DefDlgProc.
      libwine: Move the decomposition table to a separate file.
      libwine: Generate the composition tables access code along with the tables.
      libwine: Move the multi-byte to wide char conversion functions to libwine_port.
      libwine: Move the wide char to multi-byte conversion functions to libwine_port.

Alistair Leslie-Hughes (4):
      gdiplus: Implement GdipSetPenTransform.
      gdiplus: Implement GdipResetPenTransform.
      include: Add IColumnsInfo interface.
      gdi32/tests: Check values returned from GetPath.

Andrew Eikum (9):
      configure: Be more helpful for users with mis-configured glib-2.0.
      xaudio2: Handle openal source allocation failure.
      winmm: Reset dwUser in mixerGetLineInfo.
      ntdll: Initialize variable (Coverity).
      dsound: Avoid NULL pointer dereference (Coverity).
      dsound: Handle default case in dsound3d mode switch (Coverity).
      xaudio2: Protect access to source voice during creation (Coverity).
      xaudio2: Protect access to submix voice during creation (Coverity).
      wineoss.drv: Avoid potential overflow (Coverity).

André Hentschel (5):
      crypt32/tests: Use todo_wine_if() in tests.
      gdiplus/tests: Use todo_wine_if() in tests.
      wininet/tests: Use todo_wine_if() in tests.
      reg/tests: Use todo_wine_if() in tests.
      advapi32/tests: Use todo_wine_if() in tests.

Anton Baskanov (1):
      quartz: Set the result to 1.0 in FilterGraph::GetRate.

Aric Stewart (4):
      usp10: Implement fOverrideDirection.
      ntoskrnl.exe: Implement IoGetDeviceProperty for DevicePropertyPhysicalDeviceObjectName.
      usp10: Handle GSUB SubType 7: Extension Substitution.
      imm32: Detach hMsgBuf when sending messages in ImmGenerateMessage.

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

Austin English (2):
      wlanapi: Add a stub for WlanEnumInterfaces.
      rasapi32: Add RasGetLinkStatistics stub.

Bernhard Übelacker (2):
      include: Implement todo_wine_if for usage in wine tests.
      msvcr120: Implement strtof and _strtof_l.

Changhui Liu (1):
      kernel32/tests: Add tests for MultiByteToWideChar in DBCS codepage.

Charles Davis (18):
      icacls: New stub program.
      wined3d: Fix transposed lines.
      winebuild: When building implibs, invoke dlltool with a machine type.
      configure: Use pkg-config to find libnetapi.
      winex11.drv: Actually query the swap method attribute.
      dwrite: Fix typos, and fix definition of Mac LangCodes for Welsh and up.
      ntdll: Add some more NTSTATUS->DOS error mappings.
      winemac.drv: Don't bother storing the OpenGL version.
      libwine: Define some functions only on i386 (Clang).
      mscoree: Improve RuntimeHost_Invoke()'s error output a bit.
      dinput: Don't define a debug channel when it isn't used.
      gdi32: Declare our intent explicitly to the compiler.
      mscoree: Implement ICorRuntimeHost::CreateDomain{, Ex}().
      advapi32: Don't print 32-bit values as long integers.
      winemac.drv: Don't print 32-bit values as long integers (Clang).
      secur32: Don't print 32-bit values as long integers (Clang).
      quartz: Remove unused variable (Clang).
      winemac.drv: Actually make the GL context current even if no drawables were given.

Detlef Riekenberg (1):
      api-ms-win-core-localization-l1-1-0: Add stub dll.

Dmitry Timoshkov (1):
      kernel32: CompareStringW should abort on the first nonmatching character to avoid an invalid memory access.

François Gouget (16):
      shell32/tests: Fix okShell()'s tracing so it takes todo and other flags into account.
      shell32/tests: Fix the DDE tests on Windows 10.
      shell32/tests: Fix test_dde_default_app() on Windows XP SP1.
      shell32/tests: Fix a ShellExecute() race condition.
      shell32/tests: Remove support for a todo_wine flag in ShellExecute()'s test_lnks() loop.
      shell32/tests: Skip a few ShellExecute() tests when the process has insufficient privileges.
      shell32/tests: Move a test_argify() check so it is run even if we could not create associations.
      shell32/tests: Fix the ShellExecute() environment variable inheritance checks.
      shell32/tests: Allow the short and long forms when checking a ShellExecute() path.
      shell32/tests: Fix an ok() call so it shows which DDE test caused the failure.
      shell32/tests: Use todo_wine_if() in tests.
      shell32/tests: Take into account the Windows 10 DDE race condition.
      schedsvc/tests: Recognize Windows 10's RPC version.
      msvcrt/tests: Fix the Norwegian locale tests on Windows 10.
      crypt32/tests: Clarify some base64 test failed messages.
      shell32/tests: Only look for Explorer windows for the progman tests.

Frédéric Delanoy (10):
      po: Update French translation.
      imagehlp/tests: Use todo_wine_if() in tests.
      kernel32/tests: Use todo_wine_if() in tests.
      mscms/tests: Use todo_wine_if() in tests.
      ddraw/tests: Use todo_wine_if() in tests.
      d3d9/tests: Use todo_wine_if() in tests.
      d3d8/tests: Use todo_wine_if() in tests.
      dwrite/tests: Use todo_wine_if() in tests.
      ieframe/tests: Use todo_wine_if() in tests.
      mshtml/tests: Use todo_wine_if() in tests.

Hans Leidekker (11):
      webservices: Implement WsFindAttribute.
      webservices: Reset the attribute index in read_element.
      webservices: Insert an end element node for self-closing tags in the reader.
      webservices: Implement WS_MOVE_TO_ROOT_ELEMENT in the reader.
      webservices: Implement WS_MOVE_TO_NEXT_ELEMENT in the reader.
      webservices: Implement WS_MOVE_TO_PREVIOUS_ELEMENT in the reader.
      webservices: Implement WS_MOVE_TO_CHILD_ELEMENT in the reader.
      webservices: Implement WS_MOVE_TO_END_ELEMENT in the reader.
      webservices: Implement WS_MOVE_TO_PARENT_ELEMENT in the reader.
      webservices/tests: Add tests.
      msi: Fix the CHAR column type.

Henri Verbeet (50):
      ddraw/tests: Rewrite yv12_test().
      ddraw/tests: Rewrite offscreen_test().
      ddraw/tests: Rewrite rectangle_settings().
      wined3d: Introduce wined3d_texture_get_overlay_position().
      wined3d: Introduce wined3d_texture_set_overlay_position().
      wined3d: Introduce wined3d_texture_update_overlay().
      wined3d: Get rid of wined3d_surface_update_overlay_z_order().
      wined3d: Get rid of wined3d_device_update_surface().
      wined3d: Store the "user_memory" pointer in the texture instead of the surface.
      wined3d: Store custom pitches in the texture instead of the surface.
      ddraw: Use the correct height when calculating the linear size in ddraw_surface_init().
      wined3d: Handle slice pitch and alignment as well in wined3d_format_calculate_pitch().
      wined3d: Use wined3d_format_calculate_pitch() in surface_download_data().
      wined3d: Use wined3d_texture_get_pitch() in texture3d_sub_resource_upload_data().
      wined3d: Use wined3d_texture_get_pitch() in wined3d_volume_upload_data().
      wined3d: Use wined3d_texture_get_pitch() in wined3d_volume_map().
      wined3d: Use wined3d_texture_get_pitch() in surface_create_dib_section().
      wined3d: Use wined3d_texture_get_pitch() in surface_download_data().
      wined3d: Use wined3d_texture_get_pitch() in surface_upload_from_surface().
      wined3d: Use wined3d_texture_get_pitch() in wined3d_surface_map().
      wined3d: Use wined3d_texture_get_pitch() in read_from_framebuffer().
      wined3d: Use wined3d_texture_get_pitch() in surface_load_texture().
      ddraw: Use wined3d_texture_get_pitch() in ddraw_surface_init().
      wined3d: Get rid of the surface parameter to wined3d_device_parent_ops.surface_created().
      wined3d: Ignore wined3d_sampler_desc.srgb_decode if WINED3D_SRGB_READ_WRITE_CONTROL is not set.
      wined3d: Use FIELD_OFFSET to calculate the size in surface_create_dib_section().
      wined3d: Use a wined3d_string_buffer to dump the intermediate shader code.
      d3d8: Disable WINED3D_SRGB_READ_WRITE_CONTROL.
      ddraw: Disable WINED3D_SRGB_READ_WRITE_CONTROL.
      wined3d: Get rid of the unused _WINEDDOVERLAYFX structure.
      ddraw: Handle DDBLT_DDROPS in ddraw_surface7_Blt().
      wined3d: Get rid of unused/unimplemented WINEDDBLT_* flags.
      wined3d: Replace WINEDDBLTFX with a new structure that only includes the used fields.
      wined3d: Use wined3d_texture_blt() in resolve_depth_buffer().
      ntdll: Add special handling for int $0x2d exceptions.
      wined3d: Allocate the sub_resources array as part of the texture.
      wined3d: Introduce wined3d_texture_get_sub_resource_parent().
      ddraw: Use wined3d_texture_get_sub_resource_parent() in ddraw_surface_create().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_device_GetBackBuffer().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_device_create_surface().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in device_parent_create_swapchain_texture().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_swapchain_GetBackBuffer().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_2d_LockRect().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_2d_UnlockRect().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_2d_GetSurfaceLevel().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_cube_LockRect().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_cube_UnlockRect().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_cube_GetCubeMapSurface().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_3d_LockBox().
      d3d8: Use wined3d_texture_get_sub_resource_parent() in d3d8_texture_3d_UnlockBox().

Hugh McMaster (30):
      reg: Remove stub output from the 'add' and 'delete' functions.
      reg: Split reg_printfW into separate functions.
      reg: Use FormatMessage for easier internationalization support.
      reg: Output messages with a variable number of arguments and convert message arrays to strings.
      reg: Specify the data type that is unsupported.
      reg: Output program name instead of the generic 'Error'.
      reg: Ask the user whether they want to overwrite an existing registry value.
      reg: Do not allow combinations of /v, /ve or /va in the 'delete' function.
      reg: Do not allow /v and /ve to be used together in the 'add' function.
      reg/tests: Add tests for /v* flags.
      reg: Add support for the default registry value in ask_confirm().
      reg: Ask the user if they want to delete the subkey, value, default value or all values.
      reg/tests: Add tests for /d with no data argument.
      reg/tests: Fix incorrect expected value.
      reg: Fail when /d is used without an accompanying argument.
      reg: Call RegCloseKey before exiting if the user chooses to cancel the overwriting operation.
      reg: Fail if REG_DWORD is passed with no data argument.
      reg: Handle data from REG_NONE.
      reg: Handle data for REG_EXPAND_SZ.
      reg: Handle data for REG_DWORD_LITTLE_ENDIAN and REG_DWORD_BIG_ENDIAN.
      reg: Add case for REG_MULTI_SZ.
      reg: Abort the process if get_regdata returns NULL.
      reg/tests: Add two more tests for REG_DWORD.
      reg: Fail if strtolW cannot convert the entire data string into a DWORD.
      reg: Use strtoulW during conversion so we can set any value in the DWORD range.
      reg: Fail if the data argument for REG_DWORD begins with a minus sign.
      reg: Explicitly use base 10 or base 16 with strtoulW.
      reg: Fail if /s is used without an accompanying argument.
      reg/tests: Add a test for /s with no separator character.
      reg: Fail if the separator for REG_MULTI_SZ is not one character in length.

Huw D. M. Davies (1):
      usp10: ScriptPlace should honour the fZeroWidth attribute.

Jacek Caban (6):
      d3d11.idl: Added D3D11_QUERY_DATA_TIMESTAMP_DISJOINT declaration.
      mshtml/tests: Fixed style tests on IE6.
      mshtml/tests: Fixed xmlhttprequest tests on IE7.
      ntdll: Pass SYNCHRONIZE flag in NtOpenFile and NtCreateFile calls.
      ntdll: Don't call NtOpenKeyEx directly from NtOpenKey.
      urlmon/tests: Use todo_wine_if in uri.c tests.

Jactry Zeng (3):
      user32/tests: Test DDE end to end with Chinese text that starts with Latin characters.
      mlang/tests: Simplify test with todo_wine_if.
      riched32/tests: Simplify tests with todo_wine_if.

Jianqiu Zhang (1):
      wpcap: Fix crash on pcap_loop.

Joachim Priesner (1):
      comctl32: Treeview: Set visible = TRUE when deleting first visible item.

Józef Kucia (23):
      wined3d: Move internal format queries to separate function.
      wined3d: Add support for separate sRGB formats.
      d3d11: Enable sRGB decode.
      d3d11/tests: Add test for sRGB textures.
      d3d10core/tests: Add test for sRGB textures.
      wined3d: Allow to query if surface format supports gamma correction.
      d3d9/tests: Add test for surface format gamma correction query.
      wined3d: Add support for WINED3DFMT_R16_UINT format.
      wined3d: Add support for WINED3DFMT_R32G32B32A32_UINT format.
      wined3d: Add support for WINED3DFMT_R32G32B32A32_SINT format.
      wined3d: Extend support for typeless formats.
      d3d11/tests: Test creation of typeless resources.
      wined3d: Fix comment in init_format_texture_info().
      wined3d: Add remaining sRGB formats.
      wined3d: Introduce table with typed format channels.
      wined3d: Rename getFmtIdx() to get_format_idx().
      wined3d: Use format id as index in formats table whenever possible.
      wined3d: Copy channel info for typed formats from typeless formats.
      wined3d: Move more formats to typed_formats table.
      dxgi: Return S_OK in dxgi_factory_MakeWindowAssociation() stub.
      d3d11: Do not generate ERR messages for unrecognized shader bytecode.
      d3d11: Extract SM5 shader code from DXBC.
      d3d11/tests: Test creation of level_9_* shaders.

Ken Thomases (2):
      wined3d: Change calls of GetDC() to GetDCEx() with DCX_CACHE so the HDC is not shared with other threads.
      winemac: Wrap performing requests from background threads in an autorelease pool.

Lauri Kenttä (2):
      po: Improve Finnish translation.
      po: Update Finnish translation.

Louis Lenders (1):
      uxtheme: Fix CloseThemeData with invalid handle value.

Marcus Meissner (1):
      ntdll: Cast left shifted 1 to be ulong wide (Coverity).

Matteo Bruni (5):
      d3d8: Make CheckDeviceType() fail for display formats other than D3DFMT_X8R8G8B8 and D3DFMT_R5G6B5 in full-screen.
      wined3d: Add WINED3DFMT_FLAG_RENDERTARGET to WINED3DFMT_B5G5R5X1_UNORM.
      wined3d: Mark a couple of unimplemented relative addressing cases with FIXMEs.
      d3d10core/tests: Test relative addressing in constant buffers.
      wined3d: Add shader limits for SM5.

Michael Müller (14):
      msvideo.dll16: Translate 16 bit address in lparam for MCIWNDM_SETTIMEFORMATA message.
      include: Add definitions for Win8 pseudo handles.
      server: Add support for Win8 pseudo handles.
      advapi32/tests: Add tests for Win8 pseudo handles.
      api-ms-win-core-com-l1-1-1: Add dll.
      api-ms-win-core-delayload-l1-1-1: Add dll.
      api-ms-win-core-libraryloader-l1-2-0: Add dll.
      api-ms-win-core-kernel32-legacy-l1-1-1: Add dll.
      api-ms-win-eventing-classicprovider-l1-1-0: Add dll.
      api-ms-win-core-winrt-registration-l1-1-0: Add dll.
      ntdll: Implement SystemRecommendedSharedDataAlignment class in NtQuerySystemInformation.
      kernel32: Allow to pass NULL as old protection in VirtualProtect for Win9x compatibility.
      api-ms-win-core-wow64-l1-1-0: Add dll.
      api-ms-win-core-threadpool-l1-2-0: Add dll.

Nikolay Sivov (53):
      ntdll: Remove redundant NULL check (Coverity).
      dwrite: Accept platform 0 name records if there's nothing, else.
      dwrite: Don't create enumerator with invalid palette.
      dwrite: Implement IsColorFont().
      dwrite: Implement color glyph run decomposition.
      dwrite: Improve error handling in ConvertFontToLOGFONT() (Coverity).
      dwrite/tests: Added a drawing test for run reordering case.
      dwrite: Support optional glyph offsets for color runs.
      dwrite: Fetch all glyphs at once instead of locking/unlocking for every glyph.
      gdi32: Fix otmfsSelection to have italic style set in case of oblique simulation.
      gdi32/tests: Turn some asserts in font tests into regular tests.
      po: Update Russian translation.
      gdi32: Fix otmfsSelection to have bold style set in case of bold simulation.
      dwrite: Add a helper to test for isolate class instead of relying on enum layout.
      dwrite: Use enum members for class testing, simplify reseting to NI before applying Nx rules.
      comctl32/tests: Simplify tests using todo_wine_if().
      msxml3/tests: Simplify a couple of tests using todo_wine_if().
      usp10: Use memcpy() to return ScriptLayout() results.
      dwrite: Add support for PFM files in Analyze().
      gdi32/tests: Simplify tests using todo_wine_if().
      user32/tests: Simplify some tests using todo_wine_if().
      advapi32/tests: Simplify tests using todo_wine_if().
      comdlg32/tests: Simplify a test using todo_wine_if().
      gdi32: Only REG_SZ and REG_MULTI_SZ types make sense for font replacement, ignore the rest.
      dwrite: Support font replacement registry settings.
      dwrite: Implement stub for system IDWriteFontFallback.
      dwrite: Keep factory reference for each layout.
      dwrite: Move local stream tracing to a separate channel.
      dwrite: Initial implementation of MapCharacters().
      dwrite: Use current layout fallback when creating run font faces.
      po: Update Russian translation.
      dwrite: Suppress noisy message when parsing name records.
      mpr: Query for NPAddConnection and NPAddConnection3 when loading a provider.
      riched20/tests: Use todo_wine_if() in tests.
      xmllite/tests: Use todo_wine_if() in tests.
      kernel32/tests: Use todo_wine_if() in tests.
      dwrite: Force advances to zero for isZeroWidthSpace glyphs.
      dwrite: Use itemizer hint to reset invisible run glyph count.
      dwrite: Add fallback data for some of Japanese ranges.
      dwrite: Always use system font collection to create fallback fonts.
      include: Add initial dwrite_3.idl.
      include: Some more definitions for dwrite_3.idl.
      dwrite: Update to IDWriteTextLayout3.
      dwrite: Implement InvalidateLayout().
      dwrite: Update to IDWriteTextFormat1.
      xaudio2_7/tests: Use todo_wine_if() in tests.
      ws2_32/tests: Use todo_wine_if() in tests.
      wmiutils/tests: Use todo_wine_if() in tests.
      wininet/tests: Use todo_wine_if() in tests.
      usp10/tests: Use todo_wine_if() in tests.
      kernel32/tests: Additional test for GetStringTypeW() and Zl/Zp categories.
      dwrite: Make SetBidiLevel() calls relative to initial text source position.
      dwrite: Fix Unknown/Common/Inherited script categories handling.

Pierre Schweitzer (1):
      mpr: Partially implement WNetUseConnectionW().

Piotr Caban (4):
      user32: Select text control content while setting dialog focus.
      user32/tests: Add more dialog creation message tests.
      msvcrt: Don't use isdigit in places where only 0-9 digits are handled.
      msvcr120: Add wcstof implementation.

Qian Hong (2):
      advapi32/tests: Add invalid parameter tests for AccessCheck.
      advapi32/tests: Add more invalid parameter tests for AccessCheck.

Rafał Harabień (1):
      msvcr120: Implement atoll, _atoll_l, _wtoll, _wtoll_l.

Riccardo Bortolato (1):
      wined3d: Get rid of wined3d_device_get_surface_from_dc().

Sebastian Lackner (57):
      server: Fix memory leak of object name structure.
      server: Fix an invalid memory access in subtract_overlapping (Valgrind).
      vcomp/tests: Reenable architecture dependent tests.
      vcomp: Implement 64-bit atomic instructions.
      vcomp/tests: Add tests for 64-bit atomic instructions.
      ntdll/tests: Simplify exception tests by using todo_wine_if.
      kernel32/tests: Simplify activation context tests by using todo_wine_if.
      mmsystem.dll16: Fix argument order in GlobalAlloc16 call.
      kernel32/tests: Move logic of okChildInt macro into a function.
      kernel32/tests: Disable Windows version dependent test for pcPriClassBase.
      combase: Implement WindowsCompareStringOrdinal.
      combase/tests: Add tests for WindowsCompareStringOrdinal.
      combase: Implement WindowsTrimStringStart.
      combase: Implement WindowsTrimStringEnd.
      combase/tests: Add tests for WindowsTrimString{Start,End}.
      ntdll: Implement RtlInterlockedPushListSListEx and fix calling convention of RtlInterlockedPushListSList.
      kernel32/tests: Clean up interlocked SList tests.
      kernel32/tests: Add tests for RtlInterlockedPushListSList[Ex].
      kernel32: Forward InterlockedPushListSList[Ex] to ntdll.
      ntdll: Skip unused import descriptors when loading libraries.
      avifil32/tests: Remove a couple of unnecessary tests.
      crypt32/tests: Remove duplicate test.
      msvcp100/tests: Use brackets to protect arguments in call_func2 macro.
      msvcrt/tests: Use brackets to protect arguments in call_func2 macro.
      msvcp60/tests: Use brackets to protect arguments in call_func macros.
      msvcp90/tests: Use brackets to protect arguments in call_func macros.
      msvcr90/tests: Use brackets to protect arguments in call_func2 macro.
      xaudio2_7: Unset DebugInfo->Spare[0] before destroying critical sections.
      mciqtz32: Unset DebugInfo->Spare[0] before destroying critical sections.
      winmm: Unset DebugInfo->Spare[0] before destroying critical sections.
      vmm.vxd: Fix protection flags passed to VirtualAlloc.
      kernel32/tests: Add additional tests for CompareStringA.
      opengl32: Ensure extension tables generated by make_opengl contain earliest GL_VERSION for each function.
      kernel32/tests: Add test to show that CompareStringW aborts on first non-matching character.
      kernel32/tests: Add a test to show that VirtualFree fails with type MEM_FREE.
      kernel32/tests: Ensure VirtualAlloc tests do not depend on previous memory allocations.
      ntdll/tests: Fix flags passed to VirtualFree in exception tests.
      kernel32/tests: Fix flags passed to VirtualFree in multiple tests.
      ntoskrnl.exe: Fix calling convention of InterlockedPopEntrySList.
      ntoskrnl.exe: Fix calling convention of InterlockedPushEntrySList.
      ntoskrnl.exe: Fix calling convention of ObfReferenceObject.
      ntoskrnl.exe: Use debugstr_us() to trace UNICODE_STRING.
      oleaut32/tests: Avoid misleading assignment in refcounting tests.
      ws2_32/tests: Add tests for getsockopt() with SO_SNDBUF and SO_RCVBUF optname.
      kernel32: Do not inherit QT_* environment variables to Windows environment.
      services: Start SERVICE_FILE_SYSTEM_DRIVER services with winedevice.
      winegstreamer: Manually assign union variables.
      ntdll/tests: Add tests for RtlInitializeCriticalSectionEx.
      mshtml/tests: Fix operator priority in ok() condition.
      vbscript/tests: Fix operator priority in ok() condition.
      ntdll: Mimic Windows behaviour when calling debug service.
      ntdll: Implement handling of int $0x2d for x86_64.
      ntdll/tests: Add more tests for calling int $0x2d on x86 and x86_64.
      ntdll/tests: Add additional tests for instruction pointer in debug service tests.
      ntdll/tests: Add separate tests for exception handling of int $0x3.
      ntdll: Fix up instruction pointer in context for EXCEPTION_BREAKPOINT on x86_64.
      ntdll: Set correct number of arguments for breakpoint exceptions.

Stefan Dösinger (5):
      wined3d: Introduce wined3d_texture_get_pitch().
      wined3d: Remove the DIB extra line hack.
      wined3d: Store texture sub-resources as structures containing resource pointers.
      wined3d: Introduce wined3d_texture_check_block_align().
      wined3d: Track SFLAG_NONPOW2 per-texture.

Stefan Leichter (1):
      kernel32: Return a dummy value in GetSystemPreferredUILanguages.

Vincent Povirk (4):
      gdiplus/tests: Add test for GdipWidenPath.
      kernel32/tests: Avoid testing for a hard-coded timezone name.
      gdiplus/tests: Add test for matrix transform in GdipWidenPath.
      gdiplus: Fix GdipWidenPath transform for non-pixel pens.

YongHao Hu (2):
      msvcp120/tests: Simplify tests by using todo_wine_if.
      msvcp110: Add tr2_sys__Symlink implementation and test.

--
Alexandre Julliard
julliard@winehq.org
