The Wine development release 1.9.3 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine based on Firefox 44.
  - JSON support in JavaScript.
  - Improved line breaking in DirectWrite.
  - Some more write support in WebServices.
  - Still more Shader Model 4 instructions.
  - Various bug fixes.

The source is available from the following locations:

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

  12652  Tom Clancy's Rainbow Six: Vegas 2 fails to launch (number of quality levels for D3DMULTISAMPLE_NONMASKABLE multiple-sample type must not exceed 8)
  14617  Multiple Visual Basic 5/6 applications using ActiveX components depend on Standard OLE Types Typelib which is missing from 'olepro32.dll'
  28488  Arcanum: Mouseclicks in character generation screen doubled with pause
  32695  Yahoo Messenger login crashes on unimplemented function nspr4.dll.PR_SetCurrentThreadName (messenger provided 'nspr4.dll' ABI incompatible with Wine Gecko)
  32852  BioEdit: changing the install directory doesn't show the change in the GUI
  33140  Photos opened in Nikon Capture NX 2.4 have inverted red and blue channel for displaying.
  33988  Star Wars: The Force Unleashed II - Crashes with a page fault
  34504  __unDName doesn't support function pointer with type "P8"
  34507  __unDName doesn't support data type "$$B"
  37632  farcry 3 display strange colors
  37911  LINE program, black window
  39092  Regression introduced with xaudio2_8
  39181  "When Monster Strikes", "The Vanishing of Ethan Carter Redux" require msvcr120.dll._set_FMA3_enable
  39615  Multiple applications want msdrm.dll (Dassault Systemes CATIA v5, FoxitReader 5.1)
  39686  IE frame freezes after calling the print dialog
  39865  Poker Night: changing to non-fullscreen mode crashes X.
  39875  Starcraft can't see Direct Cable Connection games hosted on another computer
  39904  Spurious "You must use msvcrt" error even when __MSVCRT__ is defined (-mno-cygwin)
  39928  Star Wars: The Old Republic corruptions in dialogues when Conversation Depth of Field is enabled
  39933  iNode 3.6 client needs ndis.sys.NdisAllocateSpinLock
  39965  Lego Mindstorms EV3 Software does not find EV3 brick using Bluetooth: needs irprops.cpl
  40021  IDEA v1.7 fails to start
  40035  VMware shared folders network provider fails loading in MPR
  40052  Opening an RTF file with "A Wine application" fails with "File not found"

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

Changes since 1.9.2:

Alex Henrie (2):
      kernel32: Set error if dstlen < 0 in codepage conversion functions.
      user32: Avoid double initialization in IsDialogMessageW.

Alexandre Julliard (21):
      ntdll/tests: Add some more tests for kernel object names.
      ntdll/tests: Fix some more failures on restricted Windows.
      wine.inf: Fix the wordpad.exe path in associations.
      server: Fix initialization of mailslot objects that don't have a name.
      ntdll: Add tests for kernel object names in the various open functions.
      wine.inf: Add quotes around the wordpad.exe path.
      server: Implement NtOpenJobObject.
      ntdll: Add a helper to validate attributes in open calls, and use a common pattern in all calls.
      ntdll: Add tests for NULL object attributes.
      server: Use a common helper function to implement open object calls.
      server: Directly return a structure in get_req_unicode_str().
      include: Update stdcall and cdecl definitions in crtdefs.h.
      ntdll/tests: Add a helper function to run tests across all kernel object types.
      ntdll: Add tests for the length of the object attributes structure.
      server: Fix checks for a valid directory in object attributes.
      user32: Add some tests for window station and desktop object names.
      server: Implement serial port read interval timeouts.
      server: Don't return an error if the created window station already exists.
      tools: Add a script to update the ANNOUNCE file at release time.
      server: Add link_name and unlink_name object operations.
      server: Use the link_name operation to create named objects.

Alistair Leslie-Hughes (5):
      include: Add GdipGetPenTransform, GdipSetPenTransform declarations.
      gdiplus/tests: Add Pen Transform tests.
      olepro32: Add typelib resource.
      d3d11: Add the Direct3D 11.1 D3D11_FORMAT_SUPPORT enum elements.
      gdiplus: Implement GdipGetPenTransform.

Andrew Eikum (2):
      xaudio2: Report incoming underruns to the application.
      ntdll: Implement SystemLogicalProcessorInformationEx.

Andrey Gusev (1):
      d3dx9: Fix a typo.

André Hentschel (2):
      wpcap: Forward pcap_strerror to msvcrt.strerror.
      include: Add more OID defines.

Anton Baskanov (2):
      user32: Correctly update caret state in the server in SetCaretPos.
      strmbase: Decommit allocator when streaming stops.

Aric Stewart (3):
      imm32: Messages from ImmGenerateMessage are sent not posted.
      usp10: Directional control codes force complex itemization.
      usp10: Correct math punctuation handling in itemization.

Austin English (2):
      msdrm: Add stub dll.
      ndis.sys: Add NdisAllocateSpinLock stub.

Christopher Thielen (4):
      comctl32: Ensure that toolbar respond only to changes in WM_CAPTURECHANGED handler.
      comctl32: Ensure that trackbar respond only to changes in WM_CAPTURECHANGED handler.
      user32: Ensure that button responds only to changes in WM_CAPTURECHANGED handler.
      user32: A window may be notified with WM_CAPTURECHANGED about itself if SetCapture() is called twice.

François Gouget (18):
      bcrypt/tests: Add a trailing '\n' to some ok() calls.
      mshtml/tests: Add a trailing '\n' to an ok() call.
      bcrypt: Add a trailing '\n' to a WARN() call.
      shell32/tests: Trace the last ShellExecute command whenever a corresponding test fails.
      shell32/tests: Call okShell() after a shell_execute{_ex}() test.
      shell32/tests: Trace the association properties for the DDE tests.
      shell32/tests: Test handling of nonexistent verbs in ShellExecute() & co.
      shell32/tests: Show that verbs and classes override ShellExecute()'s normal handling of executables.
      shell32/tests: Fix a couple of okChildPath()/okChildString() mixups.
      advapi32/tests: Trace the SIDs if they are not as expected.
      shell32/tests: Add traces to the WaitForInputIdle() hooking process.
      shell32/tests: Reorder the functions to avoid forward declarations.
      shell32/tests: Declare childPrintf() as a printf-style function.
      shell32/tests: Check the child process exit code and close the process handle.
      shell32/tests: Check for failures in the child process.
      shell32/tests: Test environment variable inheritance with ShellExecute().
      shell32/tests: Add server-side DDE checks.
      ntdll/tests: Fix an infinite loop on platforms where NtQuerySystemInformationEx() is not implemented.

Frédéric Delanoy (1):
      po: Update French translation.

Hans Leidekker (14):
      wininet/tests: Fix test failures.
      msi: Include the dialog in the check for duplicate event subscriptions.
      wined3d: Don't leak the device context on failure in context_create().
      webservices: Add support for structure types in WsWriteType.
      webservices: Implement WsWriteElement.
      webservices: Implement WsWriteValue.
      webservices: Implement WsWriteAttribute.
      webservices: Implement WsReadStartAttribute.
      webservices: Add support for structure types in WsReadType.
      webservices: Implement WsReadEndAttribute.
      webservices: Don't validate reader state in read_endelement.
      webservices: Support more writer states in WsWriteText.
      webservices: Parse CDATA nodes.
      webservices: Implement WsWriteStartCData and WsWriteEndCData.

Henri Verbeet (43):
      ddraw: DDSD_LPSURFACE requires a non-NULL lpSurface.
      ddraw: DDSCAPS_ALLOCONLOAD doesn't override DDSD_LPSURFACE.
      ddraw: DDSCAPS_ALLOCONLOAD requires DDSCAPS_TEXTURE.
      wined3d: Unify WINED3D_RTYPE_TEXTURE and WINED3D_RTYPE_CUBE_TEXTURE.
      wined3d: Rename WINED3D_RTYPE_VOLUME_TEXTURE to WINED3D_RTYPE_TEXTURE_3D.
      wined3d: Rename the texture creation flags to WINED3D_TEXTURE_CREATE_*.
      wined3d: Pass non-NULL rectangles to wined3d_surface_blt() in resolve_depth_buffer().
      wined3d: Pass non-NULL rectangles to wined3d_surface_blt() in wined3d_device_copy_resource().
      ddraw: Pass non-NULL rectangles to wined3d_surface_blt() in ddraw_surface_update_frontbuffer().
      ddraw: Pass non-NULL rectangles to wined3d_surface_blt() in ddraw_surface_blt_clipped().
      ddraw: Pass non-NULL rectangles to wined3d_surface_blt() in ddraw_surface7_BltFast().
      wined3d: Pass non-NULL rectangles to wined3d_surface_blt() in wined3d_texture_blt().
      wined3d: Require non-NULL rectangles in wined3d_surface_blt().
      d3d9: Pass non-NULL rectangles to wined3d_texture_blt() in d3d9_device_StretchRect().
      d3d9: Pass non-NULL rectangles to wined3d_texture_blt() in d3d9_device_GetRenderTargetData().
      wined3d: Require non-NULL rectangles in wined3d_texture_blt().
      ddraw: Always store a pointer to the wined3d texture in the surface.
      ddraw: Use wined3d_texture_blt() in ddraw_surface7_BltFast().
      ddraw: Use wined3d_texture_blt() in ddraw_surface_blt_clipped().
      ddraw: Use wined3d_texture_blt() in ddraw_surface_update_frontbuffer().
      ddraw: Use wined3d_texture_blt() in copy_mipmap_chain().
      ddraw: Print an ERR for non-zero sub-resource indices in ddraw_surface7_Flip().
      ddraw: Use wined3d_texture_preload() in d3d_device7_PreLoad().
      ddraw: Use wined3d_texture_get_dc() in ddraw_surface_update_frontbuffer().
      ddraw: Use wined3d_texture_get_dc() in ddraw_surface7_GetDC().
      ddraw: Use wined3d_texture_release_dc() in ddraw_surface7_ReleaseDC().
      wined3d: Use wined3d_texture_get_dc() in device_load_logo().
      ddraw: Use wined3d_resource_map() in d3d_texture2_Load().
      ddraw: Use wined3d_resource_map() in surface_lock().
      ddraw: Use wined3d_resource_unmap() in ddraw_surface7_Unlock().
      wined3d: Simplify wined3d_rendertarget_view_create_from_sub_resource().
      wined3d: Use wined3d_rendertarget_view_create() in wined3d_device_init_3d().
      wined3d: Use wined3d_rendertarget_view_create() in wined3d_device_reset().
      wined3d: Pass a view to blit_shader.color_fill().
      wined3d: Pass a view to blit_shader.depth_fill().
      ddraw: Use wined3d_rendertarget_view_create_from_sub_resource() in ddraw_surface_get_rendertarget_view().
      wined3d: Merge cubetexture_init() into texture_init().
      wined3d: Introduce a debug function for struct wined3d_box.
      ddraw: Move the mip-level dimensions fix-up from ddraw_surface_init() to ddraw_surface_create().
      ddraw: Use wined3d_texture_get_sub_resource() in ddraw_surface7_Flip().
      wined3d: Make the "texture" parameter to wined3d_texture_get_sub_resource() const.
      wined3d: Make the "icb" field in struct wined3d_shader_reg_maps const.
      wined3d: Make the "icb" field in struct wined3d_shader_instruction const.

Hugh McMaster (7):
      wineconsole: Apply the new background colour to the visible screen buffer.
      kernel32: Apply the new background colour to the active line.
      wineconsole: Apply the selected background colour to the entire font preview dialog.
      kernel32: Implement the TRUE pathway of GetCurrentConsoleFont.
      kernel32/tests: Add tests for the TRUE pathway of GetCurrentConsoleFont.
      wineconsole: Improve a user dialog resource string.
      user32/tests: Add some expected WPARAM values to the SetFocusComboBox sequences.

Huw D. M. Davies (4):
      bcrypt/tests: Fix incorrect null termination.
      include: Add IDropSourceNotify.
      shell32: The attributes is not an array, so don't label it as such.
      shell32: Set the stream and storage attributes where needed.

Jacek Caban (12):
      jscript: Make parse_decimal a more generic helper.
      jscript: Added new is_finite helper.
      jscript: Added JSON object stub implementation.
      jscript: Added JSON.parse implementation.
      jscript: Added JSON.stringify implementation.
      jscript: Added JSON tests.
      bcrypt: Make BCRYPT_HASH_LENGTH tests more generic.
      bcrypt: Make BCRYPT_HASH_LENGTH implementation more generic.
      bcrypt: Added BCRYPT_ALGORITHM_NAME property implementation.
      mshtml: Use script versioning 2 if we're not in quirks mode.
      jscript: Fixed tests on some old jscript versions.
      mshtml: Wine Gecko 2.44 release.

Jactry Zeng (1):
      winecfg: Use better shortcut keys.

Jeremy White (1):
      winspool.drv: If the call to cupsPrintFile fails, print the cups error message.

Joachim Priesner (5):
      scrrun: Implement filesys_DriveExists.
      scrrun/tests: Move code to get a fixed drive to a function.
      scrrun: Implement filesys_GetDrive for local drives.
      comctl32: Fix comments explaining visibleOrder and firstVisible.
      comctl32: Treeview: Fix crash when deleting the first visible item while bRedraw == false.

Justas Lavišius (1):
      include: Force stack alignment on x86_64.

Józef Kucia (48):
      wined3d: Add EXT_texture_integer extension.
      wined3d: Set default sampler filtering to NEAREST.
      wined3d: Add support for integer samplers.
      wined3d: Make distinction between sampler index and sampler bind index.
      wined3d: Add ARB_texture_rgb10_a2ui extension.
      wined3d: Add support for WINED3DFMT_R8G8B8A8_UINT textures.
      wined3d: Add support for WINED3DFMT_R8G8B8A8_SINT textures.
      d3d11/tests: Add test for integer textures.
      d3d10core/tests: Add test for integer textures.
      wined3d: Recognize SM4 dcl_temps opcode.
      wined3d: Recognize SM4 else opcode.
      wined3d: Implement SM4 ieq instruction.
      wined3d: Implement SM4 ilt instruction.
      wined3d: Implement SM4 ineg instruction.
      wined3d: Recognize SM4 not opcode.
      wined3d: Implement SM4 not instruction.
      wined3d: Implement SM4 ine instruction.
      wined3d: Recognize SM4 round_pi opcode.
      wined3d: Recognize SM4 round_z opcode.
      wined3d: Implement SM4 round_pi instruction.
      wined3d: Implement SM4 round_z instruction.
      wined3d: Recognize SM4 sample_c_lz opcode.
      wined3d: Recognize SM4 sample_b opcode.
      wined3d: Validate render state in wined3d_device_set_render_state().
      ddraw: Return DDERR_INVALIDPARAMS for render states >= D3DSTATE_OVERRIDE_BIAS.
      wined3d: Add support for WINED3DFMT_R32G32B32_FLOAT format.
      wined3d: Add support for WINED3DFMT_R16_UNORM format.
      wined3d: Recognize SM4 icb register.
      wined3d: Recognize SM4 dcl_immediateConstantBuffer.
      wined3d: Recognize SM4 dcl_output opcode.
      wined3d: Recognize SM4 dcl_sampler opcode.
      wined3d: Fix SM4 exp, log and rsq instructions.
      wined3d: Clean up naming in shader_sm1.c.
      wined3d: Recognize SM4 dcl_input_ps opcode.
      wined3d: Recognize SM4 dcl_input opcode.
      wined3d: Recognize SM4 dcl_input_ps_sgv opcode.
      wined3d: Recognize SM4 dcl_input_ps_siv opcode.
      wined3d: Recognize SM4 dcl_input_sgv opcode.
      wined3d: Recognize SM4 dcl_output_siv opcode.
      wined3d: Recognize SM4 dcl_input_siv opcode.
      wined3d: Recognize SM4 dcl_globalFlags opcode.
      wined3d: Recognize SM4 sample_c opcode.
      wined3d: Merge shader_glsl_sample() and shader_glsl_sample_lod().
      wined3d: Implement SM4 sample_b instruction.
      wined3d: Implement SM4 sample_d instruction.
      d3d11/tests: Add test for SM4 sample_b instruction.
      d3d10core/tests: Add test for SM4 sample_b instruction.
      d3d11: Rename WINE_D3D10_TO_STR to WINE_D3D_TO_STR.

Ken Thomases (3):
      winemac: Make macdrv_process_text_input() asynchronous and process internal events while awaiting its result.
      winemac: Change the processEvents parameter of -[WineEventQueue query:timeout:processEvents:] to a flags bitmask.
      winemac: Don't process QUERY_IME_CHAR_RECT while waiting in OnMainThread().

Kira Backes (1):
      user32: Add MOUSEHOOKSTRUCTEX for mouse wheel support.

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

Matteo Bruni (16):
      wined3d: Improve wined3d_popcount() implementation.
      wined3d: Limit the number of WINED3D_MULTISAMPLE_NON_MASKABLE quality levels reported.
      wined3d: Add ARB_internalformat_query extension.
      d3d9: Return one quality level when the multisampling type isn't available.
      wined3d: Add a real implementation of wined3d_check_device_multisample_type().
      wined3d: Fail texture creation when invalid multisample settings are specified.
      d3d9/tests: Extend test_checkdevicemultisampletype().
      d3d9/tests: Test the creation of render targets with invalid multisample settings.
      d3d8/tests: Port test_checkdevicemultisampletype() from d3d9.
      d3d8/tests: Test the creation of render targets with invalid multisample settings.
      d3d11: Implement d3d11_device_CheckMultisampleQualityLevels().
      d3d11: Implement d3d10_device_CheckMultisampleQualityLevels().
      d3d11/tests: Add a test for CheckMultisampleQualityLevels().
      d3d11/tests: Test the creation of textures with invalid multisample settings.
      d3d10core/tests: Add a test for CheckMultisampleQualityLevels().
      d3d10core/tests: Test the creation of textures with invalid multisample settings.

Nikolay Sivov (44):
      dwrite: Cluster text position is relative to initial run.
      dwrite: Fix off by one issue in line breaking rule LB21a.
      dwrite: Update line breaking logic with Unicode 8.0.0 modifications.
      dwrite: Don't check for line overflow for DWRITE_WORD_WRAPPING_NO_WRAP mode.
      dwrite: Remove useless assignment (Coverity).
      dwrite: Fix underline/strikethrough position adjustment caused by text alignment.
      ctl3d32: Claim success in Ctl3dRegister().
      d2d1: Support underlined text in DrawTextLayout().
      po: Update Russian translation.
      dwrite: Zero width space U+200b is not a whitespace from analyzer/layout point of view.
      dwrite: Reuse linebreaking whitespace flag when filling cluster metrics.
      dwrite: Reuse linebreaking isSoftHyphen flag for cluster metrics.
      dwrite: Fix setting canWrapLineAfter cluster flag.
      dwrite: Implement DetermineMinWidth() using line breaking info.
      oleaut32/tests: Fix some test failures.
      d2d1: Use drawing effect at DrawGlyphRun().
      dwrite: Fix invalid cluster metrics array index access.
      dwrite: Line height/baseline includes lineGap as well.
      dwrite: Fix parameter validation in CreateTextLayout()/CreateGdiCompatibleTextLayout().
      dwrite/tests: Some tests for layout based on empty text.
      dwrite: Return valid metrics for layout created on empty text.
      dwrite: Inline object origin is at top-left corner, not baseline.
      dwrite: Don't use BOOL defined values for fields that are not BOOL.
      d2d1: Use drawing effect for underlines.
      dwrite: Return NULL file pointer on CreateCustomFontFileReference() failure.
      dwrite: Set isNewline cluster flag.
      dwrite: Update callback analysis interfaces used by layout internally.
      dwrite: Use regular refcounting pattern for layout internal sink/source interfaces.
      dwrite: Implement GetLocaleName() for layout analysis source.
      dwrite: Implement GetTextBeforePosition() for layout analysis source.
      dwrite: Remove some redundant includes.
      dwrite: Fix newlineLength metric to include all newline chars at the end of the line.
      dwrite: Don't use BOOL values to set bit fields.
      dwrite: Improve SetScriptAnalysis()/SetBidiLevel() tracing.
      dwrite: Release drawing effect after trimming sign Draw().
      dwrite/tests: Test that soft hyphen is not marked as a whitespace.
      dwrite: Add a zero width line after last mandatory breakpoint.
      dwrite: Invalidate layout on all cases of attribute change.
      dwrite: Implement SetFlowDirection() for layout.
      dwrite: Implement SetLineSpacing() for layout.
      dwrite/tests: Skip tests if no English family name was returned.
      dwrite: Rework Analyze() to make it easier to extend.
      dwrite: Recognize Type1 .pfb files in Analyze().
      dwrite/tests: Remove failing test line, we have skips for this now.

Paul Gofman (5):
      mscoree: Make vtable and tokens local declarations arch independent.
      mscoree: Implement VTable fixup for x86_64 architecture.
      msvcrt: Handle of thread created by _beginthread should not be closed on thread detach.
      mscoree: Add FixupVTable_Assembly function which takes preloaded assembly headers.
      mscoree: Call native DllEntryPoint when it is defined in COR header.

Pierre Schweitzer (2):
      mpr: Add support for REG_EXPAND_SZ for providers path.
      mpr/tests: Add tests for WNetUseConnectionA().

Piotr Caban (7):
      oleaut32: Fix best version handling in QueryPathOfRegTypeLib when type library redirection is used.
      oleaut32: Add support for best version argument in LoadRegTypeLib.
      server: Avoid infinite loop when we're out of timers in set_win_timer server call.
      user32: Test error returned in out of timers case.
      oleaut32: Update cdguid on data reallocation in WMSFT_compile_custdata.
      oleaut32: Add ICreateTypeLib2::SetCustData implementation.
      oleaut32: Add ICreateTypeLib2::SetCustData tests.

Riccardo Bortolato (3):
      d3d9: Implement d3d9_device_UpdateSurface() on top of wined3d_device_copy_sub_resource_region().
      d3d9: Replace wined3d surface refcounting with texture refcounting.
      wined3d: Get rid of the surface refcounting functions.

Sebastian Lackner (2):
      server: Add missing check for objattr variable in load_registry wineserver call (Coverity).
      server: Avoid invalid memory access if creation of namespace fails in create_directory (Coverity).

Snorri Sturluson (1):
      ntdll: Fill in memory counters under OS X.

Stefan Dösinger (1):
      ddraw/tests: Port test_lockrect_invalid to other versions.

Vincent Povirk (2):
      kernel32/tests: Add tests for GetTimeZoneInformationForYear.
      kernel32: Implement GetTimeZoneInformationForYear.

--
Alexandre Julliard
julliard@winehq.org
