The Wine development release 1.9.6 is now available.

What's new in this release (see below for details):
  - Better video card detection when using Mesa.
  - Support for Shader Model 5 shaders.
  - C++ exception handling improvements.
  - Various bug fixes.

The source is available from the following locations:

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

  17540  Zondervan Pradis 6.0 hangs due to ole32.dll.CoGetCurrentLogicalThreadId stub
  21475  TI Interactive application fails when attempting to display the TI math palette
  22533  Half-Life: Logo video rendering is wrong (msrle32 does not handle frames with 0 biClrUsed)
  25086  Multiple games and applications need kernel32.GetLogicalProcessorInformationEx implementation (CPU-Z 1.72, Splinter Cell: Blacklist, Adobe CC 2015, Kontakt 5)
  28177  Adventure games from Kheops Studio hang after the logo screen (Safecracker, Destination: Treasure Island, Nostradamus: Lost Prophecy, Dracula 3, Return to Mysterious Island 2)
  29458  Explorer sometimes crashes on drag-and-drop in folders accessed from "/"
  32237  A slower speed of light: Summer 2012 version crashes after Intro
  32314  Pikachu Volleyball (English version) crashes on restart
  32827  Legrand XlPro 3 (MFC app) crashes on startup (failure to load registry-free COM servers via app hook, 'OleCreate' must ignore HRESULT of 'IOleObject::GetMiscStatus')
  33787  IE8 crashes on new tab
  34303  underlined 8 point Times New Roman text doesn't display as underlined
  35471  Telepone (MTSP FIM) needs msvcr100.dll._CreateFrameInfo
  37949  eLicenser Control Center needs msvcr80.dll.__CxxRegisterExceptionObject
  39239  ole32:compobj fails if privileges not high enough
  39278  Multiple DirectX 10 games crash on unimplemented function d3d10_1.dll.D3D10CreateDeviceAndSwapChain1 (Assassin's Creed)
  39461  Garmin Homeport 2.2.9 crashes on unimplemented function msvcr90.dll.__CxxRegisterExceptionObject
  39510  EZCastPro 1.4/1.5 crashes on unimplemented function USER32.dll.QueryDisplayConfig
  39577  Fallout 4 needs WINED3DFMT_R11G11B10_FLOAT render target
  39674  3Dmark03, 05, 06 not started "System Info Error"
  39797  The suffering does not start, needs wmasf.dll
  39878  Diablo II does not start on 64bit system with more than 2GB VRAM cards
  39918  Mail.Ru GameCenter installer does not work
  40115  ole32:compobj regression (privilege issue)
  40147  Assertion 'm->state == STATE_PASSIVE' failed at pulse/mainloop.c:827 on starting Skype 7.18.0.112
  40190  7z fails at enumerating network places
  40201  EccoPro only works on Wine 1.6.2
  40221  Adobe Illustrator CC 2015 needs user32.GetGestureConfig
  40222  IMalloc(Spy)::Free nullptr
  40246  Please document WINEBUILD in the winegcc manpage
  40253  Build regression: Can't remove fonts: is a directory (--with-wine64, shared wow64)
  40287  steamwebhelper crashes in Windows 7 mode
  40312  Please look for builtin *.fon fonts in fontdir

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

Changes since 1.9.5:

Alex Henrie (1):
      user32: Don't put a default icon on modal dialogs.

Alexandre Julliard (5):
      configure: Don't create makefiles in directories that are symlinks in a Wow64 build.
      libwine: Don't include backwards compatibility functions on Android.
      advapi32: Fix null termination in RegQueryInfoKeyA.
      vssapi: Undefine __thiscall before redefining it.
      gdi32: Take into account the fontdir directory specified at build time.

Alistair Leslie-Hughes (3):
      d3d10_1: Implement D3D10CreateDeviceAndSwapChain1().
      user32: Don't crash in DrawTextEx when tab length is zero.
      include: Add authz.h.

Andrew Eikum (7):
      winepulse.drv: Check that the server connection actually succeeded.
      mmdevapi: Implement IAudioEndpointVolume::GetVolumeRange.
      mmdevapi: Implement Set/GetMasterVolumeLevel.
      mmdevapi: Implement Set/GetMute.
      dinput: Fix condition effect joystick offset calculation.
      windowscodecs: Stub IWICMetadataQueryReader.
      windowscodecs: Stub IMetadataBlockReader for jpegformat.

André Hentschel (3):
      wrc: Remove getopt prototype.
      winemaker: Markup fixes in German translation.
      advapi32: Add CreatePrivateObjectSecurityEx.

Austin English (8):
      wmasf: Add stub dll.
      api-ms-win-core-file-l1-2-1: Add dll.
      api-ms-win-core-memory-l1-1-2: Add dll.
      api-ms-win-core-version-l1-1-0: Add dll.
      api-ms-win-core-string-l2-1-0: Add dll.
      user32: Add GetGestureConfig stub.
      user32: Add QueryDisplayConfig stub.
      bthprops.cpl: Add BluetoothFindFirstRadio/BluetoothFindRadioClose stubs.

Bruno Jesus (1):
      msrle32: Use the correct number of colors when biClrUsed = 0.

François Gouget (3):
      include: Don't use the visibility attribute on Solaris.
      shlwapi/tests: Fix a test failure on Windows 10.
      d3dx9/tests: Add a trailing '\n' to an ok() call.

Frédéric Delanoy (1):
      winemaker: Markup fixes in French translation.

Hans Leidekker (2):
      webservices: Keep track of prefix bindings.
      winhttp/tests: Fix test failures.

Henri Verbeet (50):
      wined3d: Get resource info from the texture in context_setup_target().
      wined3d: Get resource info from the texture in wined3d_device_set_cursor_properties().
      wined3d: Get resource info from the rendertarget view in device_clear_render_targets().
      wined3d: Get resource info from the rendertarget view in draw_primitive().
      wined3d: Get resource info from the texture in wined3d_surface_blt().
      wined3d: Replace device_update_volume() with a function to update multiple levels of a 3D texture.
      wined3d: Pass a texture and sub-resource index to wined3d_device_create_cursor_texture().
      wined3d: Use the resource map/unmap functions in wined3d_device_set_cursor_properties().
      wined3d: Pass a texture and sub-resource index to surface_convert_format().
      wined3d: Pass textures and sub-resource indices to surface_cpu_blt().
      wined3d: Use D3DCOLORTOGLFLOAT4 in drawStridedSlow().
      wined3d: Get rid of the D3DCOLOR_[RGBA] macros.
      wined3d: Replace D3DCOLORTOGLFLOAT4 with an inline function.
      wined3d: Sanitise map flags in wined3d_surface_map().
      wined3d: Introduce wined3d_volume_prepare_location().
      wined3d: Keep track of the download count in the texture.
      wined3d: Introduce helpers functions to calculate texture level dimensions.
      wined3d: Don't call surface_load_ds_location() directly.
      wined3d: Properly handle discarded surfaces in surface_load_location().
      wined3d: Use ARB_map_buffer_range in wined3d_surface_map() when available.
      wined3d: "render_targets" is never NULL in context_find_fbo_entry().
      ddraw/tests: Skip initialising "quad" and "indices" in test_specular_lighting() if a 3D device can't be created.
      d3dx9: "param" should never be NULL in free_parameter().
      d3dx9/tests: Get rid of a redundant NULL check in test_effect_states().
      d3dx9/tests: Get rid of some redundant NULL checks in D3DXCreateTextTest().
      wined3d: Get resource info from the texture in wined3d_surface_cleanup().
      wined3d: Get resource info from the texture in surface_create_dib_section().
      wined3d: Get resource info from the texture in surface_private_setup().
      wined3d: Get resource info from the texture in surface_depth_blt_fbo().
      wined3d: Get resource info from the texture in surface_blt_fbo().
      wined3d: Get resource info from the texture in surface_convert_depth_to_float().
      wined3d: Allow swapchain sample counts to be overridden with a registry key.
      ddraw: Do not destroy surfaces that are still attached.
      ddraw: Avoid d3d_device_update_depth_stencil() in ddraw_surface_delete_attached_surface().
      ddraw: Just return an error if we failed to find the predecessor in ddraw_surface_delete_attached_surface().
      opengl32: Introduce WGL_WINE_query_renderer.
      winex11: Implement WGL_WINE_query_renderer on top of GLX_MESA_query_renderer.
      wined3d: Use WGL_WINE_query_renderer to query GPU information.
      wined3d: Get resource info from the texture in wined3d_surface_depth_fill().
      wined3d: Get resource info from the texture in surface_download_data().
      wined3d: Get resource info from the texture in wined3d_surface_upload_data().
      wined3d: Get resource info from the texture in surface_upload_from_surface().
      wined3d: Get resource info from the texture in surface_set_compatible_renderbuffer().
      wined3d: Get resource info from the texture in surface_load().
      wined3d: Properly check if sRGB writes should be enabled in context_apply_clear_state().
      wined3d: Require a valid rectangle pointer if rect_count is non-zero in device_clear_render_targets().
      wined3d: Ignore the dirty region for swapchain presents more explicitly.
      wined3d: Handle NULL rectangles in wined3d_swapchain_present().
      wined3d: Explicitly check for WINED3DUSAGE_TEXTURE when validating surface dimensions in surface_private_setup().
      wined3d: Get rid of the WINED3DUSAGE_OVERLAY check in gdi_surface_private_setup().

Hugh McMaster (3):
      reg: Correctly handle cases with no data argument.
      reg: Fail if /v is passed without an argument.
      reg: Fail if multiple /v switches are passed in.

Huw D. M. Davies (5):
      gdi32: Generate EMR_POLYPOLY{LINE|GON}16 records if the co-ords fit.
      gdi32: Don't update the bounds if any poly{line|gon} has fewer than two points.
      gdi32/tests: Add tests for EMF PolyPolyline record creation.
      riched20: \pard resets the reading direction.
      riched20: Set the base embedding level for RTL paragraphs.

Jacek Caban (6):
      winex11.drv: Use grabbed window display in SetCapture.
      kernel32: Don't set unconditionally SECTION_QUERY flag in OpenFileMapping.
      msxml3: Store xmlnode reference in xmlnodemap object.
      msxml6: Added support for CLSID_XMLSchemaCache60 in XMLSchemaCache60::QueryInterface.
      mshtml: Fixed cloning comment nodes.
      mshtml: Fixed copy&paste typo in GetAsciiHostPort implementation.

Jens Reyer (1):
      winegcc: Document WINEBUILD in the manpage.

Józef Kucia (43):
      d3d10_1/tests: Port test_create_device() from d3d11.
      d3d10core/tests: Add test for creating RTV with DXGI_FORMAT_UNKNOWN.
      d3d11/tests: Add test for creating RTV with DXGI_FORMAT_UNKNOWN.
      d3d10core/tests: Add test for creating DSV with DXGI_FORMAT_UNKNOWN.
      d3d11/tests: Add test for creating DSV with DXGI_FORMAT_UNKNOWN.
      d3d11/tests: Introduce d3d11_test_context for visual tests.
      d3d11/tests: Introduce draw_quad().
      wined3d: Recognize aoffimmi shader instruction modifier.
      wined3d: Extend shader_glsl_gen_sample_code() to support offsets.
      wined3d: Implement aoffimmi modifier for SM4 ld instruction in GLSL backend.
      wined3d: Implement aoffimmi modifier for SM4 sample instructions in GLSL backend.
      wined3d: Simplify shader_glsl_append_imm_ivec().
      wined3d: Improve ERR() message in shader_glsl_get_sample_function().
      d3d10core/tests: Introduce d3d10core_test_context for visual tests.
      d3d10core/tests: Introduce draw_quad().
      d3d11/tests: Drop redundant feature level check.
      wined3d: Advertise WINED3DFMT_BC{4, 5}_UNORM 3D textures as not supported.
      wined3d: Limit amount of video memory for older Windows versions.
      d3d11/tests: Trace feature level.
      d3d10core/tests: Move typeless textures test to test_create_texture{2d, 3d}().
      d3d11/tests: Move typeless textures test to test_create_texture{2d, 3d}().
      d3d11/tests: Add more create texture tests.
      d3d11: Translate WINED3DERR_INVALIDCALL to E_INVALIDARG in d3d_texture{2d, 3d}_init().
      d3d10core/tests: Add more create texture tests.
      wined3d: Introduce debug_color().
      wined3d: Implement depth clear in wined3d_device_clear_rendertarget_view().
      wined3d: Implement stencil clear in wined3d_device_clear_rendertarget_view().
      d3d11: Implement d3d11_immediate_context_ClearDepthStencilView().
      d3d11: Implement d3d10_device_ClearDepthStencilView().
      d3d10core/tests: Add test for ClearDepthStencilView().
      d3d11/tests: Add test for ClearDepthStencilView().
      d3d11: Fill unused fields in D3D11_DEPTH_STENCIL_DESC with default values.
      d3d10core/tests: Test values of unused fields in D3D10_DEPTH_STENCIL_DESC.
      d3d11/tests: Test values of unused fields in D3D11_DEPTH_STENCIL_DESC.
      d3d11: Implement d3d11_immediate_context_OMSetDepthStencilState().
      d3d11: Forward d3d10_device_OMSetDepthStencilState() to d3d11_immediate_context_OMSetDepthStencilState().
      d3d11: Introduce debug_float4().
      wined3d: Recognize SM5 ld_structured opcode.
      wined3d: Recognize SM5 deriv_rtx_coarse opcode.
      wined3d: Recognize SM5 deriv_rty_coarse opcode.
      wined3d: Recognize SM5 deriv_rtx_fine opcode.
      wined3d: Recognize SM5 deriv_rty_fine opcode.
      wined3d: Use GLuint instead of GLenum to store ARB blitter shaders.

Louis Lenders (1):
      ntdll: Add stub for RtlAddAccessDeniedObjectAce and forward to AddAccessDeniedObjectAce in advapi32.

Matteo Bruni (13):
      d3dx9: Trace the parameter passed to IsParameterUsed().
      d3d11/tests: Require feature level 11_0 or 10_0 by default.
      dxgi: Add feature level support.
      d3d11: Implement device_GetFeatureLevel().
      d3d11: Only accept shader versions supported by the feature level of the device.
      d3d11: Pass the requested feature levels to dxgi.
      d3d11/tests: Add a test for the default feature level selection.
      d3d11/tests: Test creating SM4 shaders on feature level 9.
      d3dx9: Cleanup header includes.
      d3d10core: Add feature level support.
      wined3d: Enable SM5 shaders in the GLSL backend, when possible.
      d3d11/tests: Add a feature_level parameter to init_test_context().
      d3d11/tests: Test relative addressing in constant buffers.

Michael Stefaniuc (7):
      dbghelp: Use CONTAINING_RECORD instead of reimplementing it.
      riched20: Use SetRectEmpty() instead of open coding it.
      winefile: Use SetRectEmpty() instead of open coding it.
      wined3d: Use SetRect() instead of open coding it.
      winex11: Use debugstr_a to print strings that can be NULL.
      d3drm: Use debugstr_a to print a string that can be NULL.
      dinput: Support IUnknown in the IDirectInputEffect COM object.

Miklós Máté (2):
      wined3d: Warn only once about unsupported wrap state.
      winex11: Don't create a temporary context each time X11DRV_wglBindTexImageARB is called.

Nikolay Sivov (29):
      ole32/tests: Fix tests failing on limited account.
      ole32/tests: Don't trace last error when error code is returned directly.
      ole32/tests: Fixed CoGetPSClsid() test failures when running on limited account.
      dwrite: Use correct return code on allocation failure.
      dwrite: Update to IDWriteFont3.
      include: Added IDWriteFactory3 method definitions.
      notepad: Make sure to use large enough buffer when composing window title (Coverity).
      oleview: Fix buffer length passed to Reg* functions (Coverity).
      dwrite: Update to IDWriteFontFamily1.
      dwrite: Implement IDWriteFontFamily1::GetFont().
      dwrite: Update to IDWriteFontCollection1.
      dwrite: Remove flag marking system collections.
      dwrite: Update to IDWriteFontList1.
      ole32/tests: A test to show data cache QI problems.
      avifil32: Use matching buffer length for dest string (Coverity).
      ole32: Implement CoGetCurrentLogicalThreadId().
      ole32: Implement IComThreadingInfo::GetCurrentLogicalThreadId().
      mpr: Implement WNetUseConnectionA().
      ieframe: Handle CreateView() failure in ActivateMe() (Coverity).
      xmllite: Support get/set for XmlResolver property.
      msxml3: Accept VT_UNKNOWN input for IXMLDOMSchemaCollection::add().
      comctl32/monthcal: MCM_GETRANGE does not return BOOL values.
      ole32: Use CoGetApartmentType() to implement IComThreadingInfo.
      comctl32/monthcal: Always reset range flags and date limits on MCM_SETRANGE.
      comctl32/datetime: Use MCM_GETRANGE result directly in DTM_GETRANGE.
      xmllite/writer: Implement WriteComment().
      ole32: Fix refcounting of IObjContext per-thread instance.
      ole32/tests: Some tests for IInitializeSpy.
      xmllite/writer: Implement WriteCData().

Patrick Armstrong (3):
      bcrypt: Implement MD5 algorithm and add tests.
      bcrypt: Make BCryptHashData behave more like Windows with empty input.
      bcrypt: Implement support for HMAC.

Paul Gofman (3):
      d3dx9: IsParameterUsed stub should return TRUE.
      d3dx9: Support setting texture through SetValue in effect.
      d3dx9: Fix D3DXIntersectTri function.

Pierre Schweitzer (1):
      mpr: Don't send lpRemoteName when requesting network place.

Piotr Caban (17):
      user32: Return window procedure pointer in WINPROC_AllocProc if it's not possible to allocate handle.
      user32/tests: Add initial out of window procedure slots test.
      user32: Call window procedure even if we're out of winproc handles.
      user32/tests: Show that message conversion should work on window procedures without handles.
      user32/tests: Show that messages are not converted when function pointer is passed to CallWindowProc.
      msvcrt: Add i386 _IsExceptionObjectToBeDestroyed implementation.
      msvcrt: Destroy exception object if it's no longer used when exiting catch.
      msvcrt: Handle try blocks inside current catch block in nested frame handler.
      msvcrt: Destroy exception object when frame storing it is unwound.
      msvcr80: Add _CreateFrameInfo implementation.
      msvcr80: Add _FindAndUnlinkFrame implementation.
      msvcrt: Add __CxxRegisterExceptionObject implementation.
      msvcrt: Add __DestructExceptionObject implementation.
      msvcrt: Add __CxxUnregisterExceptionObject partial implementation.
      msvcr80: Use Cxx(Un)RegisterExceptionObject helpers in i386 nested exception handler.
      msvcrt: Handle non c++ exceptions in __DestructExceptionObject.
      msvcrt: Destroy thrown c++ object before calling handler in _except_handler4_common.

Sebastian Lackner (9):
      services: Fix a typo.
      services: Hold scmdatabase lock while checking marked_for_delete.
      services: Initialize service ref_count directly in service_create.
      services: Introduce refcounting for processes.
      services: Pass a process argument to send_start_message function.
      services: Pass a process argument to send_control function.
      services: Pass a process argument to wait_for_startup function.
      setupapi: Fix parsing of inf files containing garbage at the beginning of the file.
      ieframe: Fix implementation of impl_from_ITargetFrame2.

Stefan Dösinger (10):
      wined3d: Merge surface_prepare_map_memory() into wined3d_surface_prepare().
      wined3d: Call wined3d_surface_prepare() in surface_load_sysmem().
      wined3d: Call wined3d_volume_prepare_location() in wined3d_volume_load_location().
      wined3d: Merge wined3d_surface_unmap() and wined3d_volume_unmap().
      wined3d: Merge wined3d_surface_map() and wined3d_volume_map().
      wined3d: Introduce wined3d_texture_use_pbo().
      wined3d: Merge wined3d_surface_update_desc() into wined3d_texture_update_desc().
      wined3d: Get rid of texture_ops.texture_sub_resource_add_dirty_region().
      wined3d: Get rid of state access in shader_generate_glsl_declarations().
      wined3d: Avoid storing a material pointer in struct wined3d_cs_set_material.

Vincent Povirk (3):
      mscoree: Restore previous domain whenever we set it.
      user32: Set capture earlier on popup menus.
      user32: Skip menu loop for empty popup menus.

Zhenbo Li (1):
      authz: Stub AuthzAccessCheck, AuthzFreeContext, AuthzInitializeContextFromSid, AuthzInitializeContextFromToken.

--
Alexandre Julliard
julliard@winehq.org
