The Wine development release 1.9.11 is now available.

What's new in this release (see below for details):
  - Better support for long URLs in WinInet.
  - Various Direct3D 11 improvements.
  - Down-mixing support in DirectSound.
  - Some cosmetic improvements in desktop mode.
  - Various bug fixes.

The source is available from the following locations:

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

  25396  Safrosoft RoX freezes at start.
  33022  Starship Titanic hanging on video replay
  34052  The Witcher: Character models are sometimes invisible
  34480  Multiple games crash during attempt to write past the end of mip level, expecting contiguous mipchain allocation (League of Legends, Warlock Master of the Arcane, PSOBB)
  35415  Gómez Peer: CPU utilisation diagnostic does not work (requires kernel32.GetSystemTimes implementation)
  36556  valgrind shows a definite leak in comctl32/tests/syslink.c
  37063  NTLM EncryptMessage/DecryptMessage failure
  38137  WBaduk: "Could not obtain OLE control window handle" regression
  38257  Thief: Deadly Shadows: black squares popping up during video playback
  38286  SpinTires has error with ARB shaders enabled
  40179  Cannot insert mpg files in Powerpoint 2010
  40301  wxDatePickerCtrl (wxWidgets) generates an assert on DTM_GETRANGE message result
  40511  Application that copies files from one place to another stoped working in wine versions greater then 1.6.2
  40536  Failure to connect to server in TMUnitedForever
  40555  Black Mirror 3 demo has wrong rendering with ARB shaders enabled
  40557  KSP Trajectory Optimization Tool (MATLAB Runtime (MCR)) crashes at launch
  40594  msvcrt:heap test regression
  40614  Cisco Jabber 11.6 crashes due to missing dbghelp.dll.EnumerateLoadedModulesExW
  40618  Autodesk 123D Design needs msvcr100.dll.mbsrtowcs_s
  40659  Window with CS_OWNDC style cause DC leak when GetDC/ReleaseDC is used.
  40687  BitTorrent Sync Setup won't start, needs ncrypt.dll

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

Changes since 1.9.10:

Aaryaman Vasishta (5):
      d3drm: Keep a reference to IDirect3DRM in d3drm_texture.
      d3drm: Introduce d3drm_texture_destroy helper.
      d3drm: Implement IDirect3DRMTexture{2-3}_InitFromImage.
      d3drm: Implement IDirect3DRM*_CreateTexture.
      d3drm: Implement IDirect3DRMTexture*_GetImage.

Akihiro Sagawa (2):
      kernel32/tests: Add more partial DBCS character tests that contains a null character.
      libport: Fix null character handling when mapping DBCS characters.

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

Alexandre Julliard (15):
      winecfg: Keep metrics in DPI-relative format when saving the theme.
      user32: Load the default app icon with LR_SHARED to avoid a leak.
      user32: Fix refcounting of window DCEs.
      user32: Completely free owned DCEs when the corresponding window/class is destroyed.
      user32: Only start reusing DCEs after the cache reached its limit.
      secur32/tests: Relax the certificate check a little.
      user32: Take the arrange flags into account when positioning icon windows.
      user32: Use the monitor rectangle to position icons on the desktop.
      user32: Make spacing consistent between DrawCaptionTemp and NC_DrawCaption.
      winex11: Subtract the tray window from the work area in desktop mode.
      explorer: Add a helper function to resize and display the tray window.
      explorer: Use the window caption font for the Start button.
      explorer: Vertically center the system tray icons.
      explorer: Add a Wine icon to the Start button.
      tools: Ensure that everything is stored in UTF-8 in the ANNOUNCE file.

Alistair Leslie-Hughes (8):
      wined3d: Support missing WINED3DUSAGE flags to debug_d3dusage.
      d3d11/tests: Added DXGI_FORMAT_R16_TYPELESS D3D11_BIND_DEPTH_STENCIL test.
      d3d10core/tests: Added DXGI_FORMAT_R16_TYPELESS D3D11_BIND_DEPTH_STENCIL test.
      d3d11/tests: Test for ID3D11InfoQueue interface.
      secur32/tests: Add AcquireCredentialsHandleW tests.
      d3dx10_43: Add D3DX10GetImageInfoFromMemory stub.
      inetcomm: Return S_OK from IMimePropertySchema ModifyProperty.
      inetcomm: Ignore OID_TRANSMIT_BODY_ENCODING value in IMimeBody SetOption.

Andrew Eikum (8):
      quartz: Use correct scale for quality control proportion.
      strmbase: Improve QualityControl tracing.
      strmbase: Initialize QualityControl struct on allocation.
      dsound: Allow inactive devices to change the primary format.
      dsound: Support downmixing 5.1 to stereo.
      dsound: Support downmixing quadraphonic to stereo.
      winegstreamer: Fix IQualityControl::Notify.
      winegstreamer: Set offset on GstBuffer.

Andrey Gusev (26):
      kernel32/tests: Fix a typo in comment.
      secur32: Fix a typo in comment.
      comctl32/tests: Fix a typo in ok() call.
      riched20: Fix a typo in TRACE() message.
      d3d11/tests: Fix a typo in define.
      msvcp90: Fix a typo in comment.
      ole32: Fix a typo in comment.
      wined3d: Fix a typo in a pointer in wined3d_swapchain_ops.
      gdi32: Fix a typo in a pointer name in primitive_funcs.
      d3d8/tests: Fix a typo in ok() message.
      mshtml/tests: Fix a typo in ok() messages.
      user32/tests: Fix a typo in ok() message.
      shell32: Fix a typo in TRACE format in SHPathPrepareForWriteW.
      secur32/tests: Fix a typo in ok() messages.
      include: Fix a typo in IDirect3D9Ex method.
      dinput: Fix a typo in WARN() messages.
      include: Fix a typo in IDirectShowStream interface.
      include: Fix a typo in typedef struct _TEB.
      ddraw/tests: Fix a typo in ok() messages.
      msxml3/tests: Fix a typo in variable name.
      mshtml/tests: Fix a typo in comment.
      msi/tests: Fix a typo in comment.
      user32: Fix a typo in comment.
      comctl32: Fix a typo in comment.
      urlmon: Fix a typo in comment.
      winhlp32: Fix a typo in comment.

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

Austin English (2):
      dbghelp: Add forwards for EnumerateLoadedModulesEx/EnumerateLoadedModulesExW.
      bthprops.cpl: Add BluetoothFindFirstDevice stub.

David Woodhouse (1):
      secur32: Fix handling of ANSI NTLM credentials.

Fabian Maurer (1):
      msacm32: Added converter for ADPCM to PCM 8 bit mono.

François Gouget (2):
      riched20/tests: Fix a spelling error in an editor comment.
      wined3d: Make wined3d_texture_set_dirty() static.

Frédéric Delanoy (7):
      ntdll: Fix a typo in an comment.
      oleaut32: Fix a typo in an comment.
      msvcp90: Fix a typo in an FIXME message.
      include: Fix a typo in a comment.
      winemaker: Fix a couple typos in comments.
      comctl32/tests: Fix a couple typos in ok() calls.
      advapi32: Use dbgstr_a() to print string in a FIXME.

Hadrien Boizard (1):
      mshtml/tests: Use todo_wine_if() in tests.

Hans Leidekker (12):
      webservices: Flush the writer in WsWriteText.
      webservices: Validate parent nodes.
      webservices: Reset the reader position if the next node doesn't match the type to read.
      webservices: Add support for reading arrays of pointers.
      webservices/tests: Add tests.
      qmgr: Clear job error on resume.
      qmgr: Change job state on failure in transfer_file_http.
      webservices: Add support for reading double values.
      webservices: Implement WsReadElement.
      webservices: Implement WsReadValue.
      webservices: Implement WsDecodeUrl.
      webservices: Implement WsEncodeUrl.

Henri Verbeet (50):
      wined3d: Only allow 256 vertex shader vec4's.
      wined3d: Only allow 224 pixel shader vec4's.
      wined3d: Rename MAX_CONST_I to WINED3D_MAX_CONSTS_I.
      wined3d: Store vertex shader integer constants as wined3d_ivec4 structures.
      wined3d: Store pixel shader integer constants as wined3d_ivec4 structures.
      wined3d: Pass wined3d_ivec4 structures to wined3d_device_set_vs_consts_i().
      wined3d: Pass wined3d_ivec4 structures to wined3d_device_get_vs_consts_i().
      wined3d: Pass wined3d_ivec4 structures to wined3d_device_set_ps_consts_i().
      wined3d: Pass wined3d_ivec4 structures to wined3d_device_get_ps_consts_i().
      wined3d: Emit position / attribute 0 last in draw_primitive_immediate_mode().
      wined3d: Rename MAX_CONST_B to WINED3D_MAX_CONSTS_B.
      wined3d: Make wined3d_device_set_vs_consts_b() consistent with wined3d_device_set_vs_consts_f().
      wined3d: Make wined3d_device_get_vs_consts_b() consistent with wined3d_device_get_vs_consts_f().
      wined3d: Make wined3d_device_set_ps_consts_b() consistent with wined3d_device_set_ps_consts_f().
      wined3d: Make wined3d_device_get_ps_consts_b() consistent with wined3d_device_get_ps_consts_f().
      usp10: Resolve BNs and explicit formatting characters to the preceding level in resolveResolved().
      kernel32/nls: Persian uses a right-to-left writing system.
      kernel32/nls: Use Persian characters to write Persian.
      kernel32/nls: Use ZWNJ where appropriate in far.nls.
      kernel32/nls: Persian is called Persian in English.
      kernel32/nls: Store LOCALE_SNATIVEDIGITS as UTF-8 in far.nls.
      kernel32/nls: Use Persian punctuation for LANG_PERSIAN.
      kernel32/nls: Fix LOCALE_IFIRSTDAYOFWEEK for LANG_PERSIAN.
      kernel32/nls: Return CAL_GREGORIAN_XLIT_FRENCH for LOCALE_ICALENDARTYPE for LANG_PERSIAN.
      kernel32/nls: Fix LOCALE_SMONTHNAME5/LOCALE_SABBREVMONTHNAME5 for LANG_PERSIAN.
      wined3d: Send shader constant updates through the command stream.
      wined3d: NP2 emulation is not allowed on array textures.
      wined3d: Get rid of some unused declarations.
      wined3d: Don't import libuuid.
      wined3d: Use debug_color() in wined3d_format_convert_from_float().
      wined3d: Properly cleanup on failure in wined3d_cs_create().
      wined3d: Introduce a helper function to allocate arrays.
      wined3d: Get rid of the redundant "output_signature" parameter to shader_set_function().
      wined3d: Store shader signatures directly in struct wined3d_shader_desc.
      d3d11: Get rid of struct d3d_shader_info.
      d3d11: Validate offsets and sizes in parse_dxbc() (AFL).
      d3d10: Validate offsets and sizes in parse_dxbc() (AFL).
      d3d11: Validate offsets and sizes in shader_parse_signature() (AFL).
      d3d10: Validate offsets and sizes in shader_parse_signature() (AFL).
      d3d11: Introduce a helper function to allocate arrays.
      d3d10: Introduce a helper function to allocate arrays (AFL).
      d3d10: Introduce fx10_copy_string() (AFL).
      d3d10: Validate offsets in parse_fx10_object() (AFL).
      d3d10: Validate offsets and sizes in read_value_list() (AFL).
      d3d10: Initialise the type tree in D3D10CreateEffectFromMemory() (AFL).
      d3d10: Check if the type was initialised in d3d10_effect_variable_destroy() (AFL).
      d3d10: Simply use d3d10_effect_type_destroy() in d3d10_effect_local_buffer_destroy().
      d3d10: Names and semantics are allowed to be NULL (AFL).
      d3d10: Validate the data size in parse_fx10() (AFL).
      d3d10: Validate the base offset in parse_fx10_body() (AFL).

Hugh McMaster (4):
      reg: Avoid using strlenW to check if a string is valid.
      reg: Update general help logic.
      reg: Update the general usage message.
      reg: Inform users about the 'add/delete/query /?' command.

Huw D. M. Davies (1):
      fonts: Fix typo in glyph name.

Jacek Caban (40):
      wininet: Fixed internet tests on win10.
      wininet: Fixed handing NULL buffer in InternetReadFileExW.
      wininet: Pass domain to get_cookie_domain as a substring.
      wininet: Pass arguments as substrings to get_cookie_container.
      wininet: Pass arguments as substrings to create_cookie_url.
      wininet: Pass arguments as substrings to load_persistent_cookie.
      wininet: Pass arguments as substrings to get_cookie.
      wininet: Added IsDomainLegalCookieDomainW helper with substrings as arguments.
      wininet: Pass arguments as substrings to set_cookie.
      wininet: Rerite COOKIE_crackUrlSimple to use substrings.
      wininet: Added test of cookies with long URL.
      wininet: Rewrite test_accept_encoding using more generic request.
      wininet: Store request URL in req_file_t.
      wininet: Added test of request with a long URL.
      wininet: Don't assume maximal URL length in INTERNET_InternetOpenUrlW.
      wininet: Initialize url_w in InternetCrackUrlA.
      wininet: Include config.h in internet.c for Mac configure macros.
      wininet: Removed maximum URL length assumption from get_proxy_autoconfig_url.
      wininet: Don't assume maximal URL length in HTTP_ShouldBypassProxy.
      wininet: Pass host name as substring to get_server.
      wininet: Don't assume maximum URL length in HTTP_DealWithProxy.
      wininet: Get rid of INTERNET_INVALID_PORT_NUMBER fixups after InternetCrackUrl calls.
      wininet: Use scheme id instead of string in HTTP_HandleRedirect.
      wininet: Don't use host header in compose_request_url.
      wininet: Use compose_request_url in INTERNET_OPTION_URL implementation.
      wininet: Don't assume maximal URL length in HTTP_GetRedirectURL.
      wininet: Moved more redirect URL handling to a helper function and get rid of its maximum size assumption.
      wininet: Store cookie URL in cookie_container_t.
      urlmon: Unescape path in place in MkProtocol::StartEx.
      d3d11.idl: Added CD3D11_QUERY_DESC declaration.
      wininet: Return NULL instead of FALSE in get_proxy_autoconfig_url.
      mshtml: Added IHTMLElement::put_onkeyup implementation.
      jscript: Added RegExp.ignoreCase getter implementation.
      jscript: Added RegExp.multiline getter implementation.
      jscript: Added RegExp.global getter implementation.
      jscript: Removed obsolete FIXME comments in tests and add relevant tests.
      jscript: Added non-zero timezone offset tests.
      mshtml: Improved FIXMEs about unimplemented events.
      mshtml: Added IHTMLWindow2::onunload property implementation.
      mshtml: Fixed OnStopBinding if it's called called after we aborted document binding.

Józef Kucia (56):
      d3d10core/tests: Check all sub-resources in check_texture_* functions.
      d3d10core/tests: Add tests for 2D texture RTVs.
      ddraw: Forbid creating flippable cubemaps.
      ddraw/tests: Test creating flippable cubemaps.
      wined3d: Implement SM4 round_ne instruction.
      d3d11: Fix default view descriptions for 2D array textures.
      wined3d: Use d3d_perf channel for performance warnings.
      wined3d: Add SV_VertexID sysval semantic.
      wined3d: Implement SV_VertexID in GLSL backend.
      d3d11: Accept DXGI_FORMAT_UNKNOWN as format in view descriptions.
      d3d11/tests: Use abbreviations for long D3D11 enum value names.
      d3d10core/tests: Use abbreviations for long D3D10 enum value names.
      d3d10core/tests: Use D3D10 enum values instead of D3D11 ones.
      wined3d: Add support for 2D array texture samplers.
      d3d11/tests: Add tests for sampling from 2d array textures.
      d3d10core/tests: Add tests for sampling from 2d array textures.
      d3d11/tests: Add tests for accessing unbound 2d array textures.
      d3d10core/tests: Add tests for accessing unbound 2d array textures.
      wined3d: Forbid to create BC{1, 2, 3}_UNORM_SRGB 3D textures.
      wined3d: Load color key constants after switching to ARB fixed-function program.
      wined3d: Implement texture stage constants in ARB program shader backend.
      wined3d: Use bit fields instead of BOOL arrays.
      d3d9: Allow to pass NULL pointers to IDirect3DDevice9_GetRenderTargetData().
      d3d11/tests: Add create_buffer() helper.
      d3d10core/tests: Add create_buffer() helper.
      wined3d: Match position output register by sysval semantic value.
      wined3d: Add wined3d creation flag for selecting unbound resource color.
      d3d11/tests: Add more tests for accessing unbound resources.
      d3d10core/tests: Add more tests for accessing unbound resources.
      wined3d: Add more D3D11 vertex formats.
      wined3d: Simplify "ffp_attrib_ops" initialization.
      wined3d: Inverse logic for applying half float vertex format fixups.
      wined3d: Simplify "format_vertex_info" table.
      d3d9/tests: Add some tests for draw methods.
      d3d9: Check if valid vertex declaration is set before issuing draw call.
      wined3d: Allow draw calls without vertex declaration.
      d3d11/tests: Add test showing that inputs aren't matched with outputs.
      d3d10core/tests: Add test showing that inputs aren't matched with outputs.
      wined3d: Ignore flags for conditional SM 1-3 instructions explicitly.
      wined3d: Clean up SM1 frontend.
      wined3d: Handle SM4 if instruction modifiers.
      wined3d: Handle SM4 breakc instruction modifiers.
      d3d11/tests: Add test for SM4 if instruction.
      d3d10core/tests: Add test for SM4 if instruction.
      d3d11/tests: Add test for SM4 breakc instruction.
      d3d10core/tests: Add test for SM4 breakc instruction.
      wined3d: Simplify match_apple().
      wined3d: Prefer sized GL internal formats.
      wined3d: Add ARB_texture_storage extension.
      wined3d: Use immutable storage for 2D textures.
      wined3d: Use immutable storage for 3D textures.
      wined3d: Remove redundant entries from "formats" table.
      wined3d: Add more integer formats to "typed_formats" table.
      wined3d: Simplify buffer_is_fully_dirty().
      wined3d: Do not call wined3d_buffer_map() before "buffer->maps" is initialized.
      wined3d: Replace WINED3D_BUFFER_CREATEBO with WINED3D_BUFFER_USE_BO.

Ken Thomases (2):
      winex11: Fix logic of whether to use XUnmapWindow() or XWithdrawWindow() in make_window_embedded().
      winemac: Adjust sizes of all descendant views when Retina mode changes.

Kirill K. Smirnov (3):
      regedit: Fix an out-of-bounds array access (clang).
      winhlp32: Do not pass NULL to strchr() (spotted by clang).
      winhlp32: Fix an uninitialized variable (clang).

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

Maarten Lankhorst (5):
      dsound: Fixup DSOUND_WaveQueue checks.
      dsound: Fixup IDirectSoundCaptureBuffer_QueryInterface.
      dsound: Prevent reopening device from leaving dsound object in invalid state.
      dsound: Remove state machine from render buffer.
      dsound: Remove unconditional memory allocation in mixing thread.

Markus Heidelberg (1):
      jscript: Date.parse: make "UTC"/"GMT" optional before the timezone offset.

Matteo Bruni (8):
      wined3d: Alpha test emulation for core profile contexts.
      wined3d: Clean up VS-PS interface matching in GLSL.
      wined3d: Simplify shader interface matching for SM4+ vertex shaders.
      wined3d: Get rid of the "reorder shaders" for SM4+.
      wined3d: Handle GS inputs and outputs.
      wined3d: Fixup vertex position in geometry shaders.
      wined3d: Add support for core OpenGL geometry shaders.
      wined3d: Reselect the current GLSL geometry shader when possible even if the VS changed.

Michael Stefaniuc (2):
      wined3d: Initialize a RECT to avoid compiler warnings.
      include: Use inline functions for common RECT helpers.

Nikolay Sivov (25):
      mmdevapi: Increment loop counter once per iteration (Clang).
      msdaps: Fix GetBasicErrorInfo() method proxy (Clang).
      msdaps: Always initialize error pointers in proxies.
      dwrite/tests: Couple more tests for IDWriteNumberSubstitution creation.
      dwrite: Don't reset advances if original and modified advances are the same array.
      dwrite/tests: Get rid of global script analysis variable.
      amstream/tests: Simplify refcount check.
      comctl32/listview: Hit test data pointer is never NULL when sending LVN_ITEMACTIVATE.
      po: Update Russian translation.
      kernel32/nls: Fix shortest day names for Thai and Vietnamese.
      comctl32/monthcal: Added support for MCS_SHORTDAYSOFWEEK style.
      comctl32/monthcal: Take into account day name width when setting calendar column width.
      dwrite/tests: Simplify refcount check a bit.
      msxml3/tests: Simplify refcount checks.
      oledb32/tests: Simplify recount check.
      dwrite/tests: Remove unused functions (Clang).
      comctl32/header: Implement HDM_SETFILTERCHANGETIMEOUT.
      dwrite: Be prepared for 0 face_id passed to face requester.
      comctl32/syslink: Use wine list to keep items.
      dwrite: Resolve BNs and embedding and override formatting characters to preceding level.
      rpcss: Fix potential leaks when removing endpoint (Coverity).
      rpcss: Fix a leak when TowerExplode() fails on endpoint insertion (Coverity).
      rpcss: No need to initialize entry list pointers.
      crypt32: No need to init entry fields when it's about to be added to a list.
      po: Update Russian translation.

Paul Gofman (3):
      d3dx9/tests: Extend effect preshader test.
      d3dx9: Add d3ds_dotswiz opcode to preshader.
      d3dx9: Add is_param_type_sampler() helper function.

Sebastian Lackner (3):
      wininet: Return synchronously from InternetReadFile if there is no more data to read.
      comctl32/syslink: Fix a blocks leak (Valgrind).
      wininet: Initialize user_len before GetUserNameW call.

Stefan Dösinger (2):
      wined3d: Use wined3d_texture_prepare_location() in wined3d_texture_update_desc().
      wined3d: Discard the backbuffer in swapchain_gl_present() with the "discard" swap effect.

Thomas Faber (1):
      qmgr: Fully initialize URL_COMPONENTSW structure before calling WinHttpCrackUrl.

Vincent Povirk (2):
      user32: Also change rcUpdate when scrolling by more than the window size.
      user32: Don't regard the clipboard as changed if we don't own it.

--
Alexandre Julliard
julliard@winehq.org
