The Wine maintenance release 1.8.3 is now available.

What's new in this release (see below for details):
  - Various bug fixes.
  - A lot of NVidia cards added to the GPU description table.
  - Updates to the National Language Support files.

The source is available from the following locations:

  http://dl.winehq.org/wine/source/1.8/wine-1.8.3.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8.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.8.3 (total 54):

  10063  wineconsole run fail on korean locale.
  17257  TeX2Word will not install
  20695  Cannot scroll documents being compared in winmerge
  23768  winhelp: Some images not shown in certain 16-bit Help files
  24421  MJ's Help Diagnostics crashes on startup (app provided MonitorEnumProc callback relies on ECX = lprcMonitor)
  25790  WM_SETTEXT handler for the user32 buttons generates WM_CTLCOLOR* inconsistent with Windows user32
  26978  tokenadmin.exe crash : Unimplemented function winscard.dll.SCardListReadersA
  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)
  28082  OCCT Perestroïka needs hal.dll.READ_PORT_ULONG
  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)
  28825  Mystic Diary - Haunted Island: Multiple sprite-related bugs in hidden object scenes
  29979  ElsterFormular crashes when trying to print already sent income tax return
  31662  Office 2010 font embedding when exporting to PDF
  32451  Multiple GOG.com installer bundles show a broken/unresponsive dialog window during installation (installer process running out of wndproc slots)
  32979  Metal Gear Solid Crash
  34070  Simutronics 'StormFront.exe' runs out of wndproc slots (ActiveSkin control)
  34851  Multiple applications need kernel32 GetFinalPathNameByHandleA/W (64-bit Autodesk Fusion 360, Microsoft OneDrive)
  35054  Dragon Age 2 system diagnostics tool fails to recognize GeForce GT 425M
  35092  Multiple 64-bit applications need __CxxFrameHandler implementation (Ableton Live 9.1, Adobe Cloud apps)
  35711  Winelib: compile error in wincon.h if NOGDI is defined before #include <windows.h>
  36031  GeForce 9700M incorrectly detected as 9400
  37087  Gothic 2 english demo fails with 'Conflict: a hook process was found. Please deactivate all Antivirus and Anti-Trojan programs and debuggers.'
  38102  Process Hacker 2.x needs winsta.dll.WinStationEnumerateW
  39092  Regression introduced with xaudio2_8
  39215  Nvidia GeForce GTX960M detected as GTX470
  39543  Multiple games and applications crash on unimplemented function KERNEL32.dll.FreeUserPhysicalPages (Microsoft Office 2007 diagnosis service, Eden Eternal)
  39657  Tencent QQ 7.6  crashes on unimplemented function ntoskrnl.exe.PsRemoveLoadImageNotifyRoutine
  39667  dinput: MotoGP 3 demo launcher crashes on leaving key configuration dialog.
  39681  Unimplemented function crypt32.dll.CryptMsgVerifyCountersignatureEncoded
  39730  FillRect() confuses 16bit brush handles with color constants
  39759  Add support for detect  Nvidia TITAN Black in wine3d/device list
  39786  GoodSync crashes, needs oleaut32.OleLoadPictureFile
  39796  SCP Containment Breach page fault
  39918  Mail.Ru GameCenter installer does not work
  39940  Stars! tooltips have wrong background color
  40048  Camtasia Studio 8 : crashes on unimplemented function dwmapi.dll.DwmSetPresentParameters
  40081  CLM Explorer needs fontsub.dll.CreateFontPackage
  40108  kernel32:process regression
  40135  msvcirt.c:1386:5: warning: comparison of unsigned expression < 0 is always false
  40244  PostThreadMessage with WM_NOTIFY message should succeed
  40246  Please document WINEBUILD in the winegcc manpage
  40286  Geforce 980 maxwell card is not properly detected
  40297  Multiple app crashes in macdrv_EnumDisplayMonitors
  40304  EveHQ2 crashes with builtin gdiplus
  40348  Nvidia 800 series cards not detected correctly
  40389  cmd.exe (native): Unimplemented function KERNEL32.dll.GetConsoleAliasExesLengthW
  40396  Windows SDK DirectWrite sample crashes on uninitialized parameter
  40456  NFS MW + NFS Carbon: Car is flying above/under the track (D3DXVec3Transform needs arguments aliasing)
  40466  Midnight Commander needs KERNEL32.dll.GetConsoleFontInfo
  40473  wine fails to compile with >=glibc-2.23
  40487  3dmark Vantage Benchmark: unimplemented functions hal.dll.READ and WRITE PORT
  40493  Prison Tycoon 4 crashes on start up needing msvcp71.dll.??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z
  40517  Office 2007 shows error message "Unexpected error during export" when trying to export document as PDF file
  40525  schannel:main does not recognize package version 0x400000

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

Changes since 1.8.2:

Alexander Lakhin (2):
      user32: Send the correct WM_CTLCOLOR* message in button WM_SETTEXT handler.
      user32: Send WM_CTLCOLOR* message only for visible buttons.

Alexandre Julliard (2):
      wineconsole: If necessary, fallback to a font without the right properties instead of failing.
      kernel32/nls: Convert remaining files to UTF-8.

Alistair Leslie-Hughes (2):
      wined3d: Add detection for NVIDIA GTX TITAN.
      wined3d: Add detection for NVIDIA GTX TITAN Series.

Andrew Eikum (6):
      xaudio2: Explicitly version the 2.7 coclasses.
      xaudio2_8: Use shared source.
      xaudio2: Remove run-time version checks for XAudio2 object.
      xaudio2: Report incoming underruns to the application.
      xaudio2: Protect access to source voice during creation (Coverity).
      xaudio2: Protect access to submix voice during creation (Coverity).

Andrey Gusev (1):
      kernel32/nls: Update currency name and fix a typo.

André Hentschel (2):
      xaudio2_7: Check return of IAudioClient_Start (Coverity).
      shell32: Provide helper function a buffer of correct size.

Aurimas Fišeras (1):
      kernel32/nls: Update currency for Baltic states.

Austin English (8):
      include: Fix GetCurrentConsoleFontEx/SetCurrentConsoleFontEx definition.
      oleaut32: Add OleLoadPictureFile stub.
      wine.inf: Create Microsoft Shared/TextConv directory.
      kernel32: Add GetConsoleFontInfo stub.
      winscard: Add stubs for SCardListReadersA/W.
      crypt32: Add CryptMsgVerifyCountersignatureEncoded stub.
      ntoskrnl.exe: Add PsRemoveLoadImageNotifyRoutine stub.
      ntoskrnl.exe: Add KeDelayExecutionThread stub.

Bernhard Übelacker (1):
      dinput: Implement device property DIPROP_USERNAME.

Caron Wills (9):
      wined3d: Add Nvidia GeForce GTX 860.
      wined3d: Add Nvidia GeForce 820M.
      wined3d: Add Nvidia GeForce 830M.
      wined3d: Add Nvidia GeForce 840M.
      wined3d: Add Nvidia GeForce 845M.
      wined3d: Add Nvidia GeForce GTX 850M.
      wined3d: Add Nvidia GeForce GTX 870M.
      wined3d: Add Nvidia GeForce GTX 880M.
      wined3d: Add Nvidia GeForce GT 730M.

François Gouget (1):
      schannel: Add declarations for SECPKG version 7.

Henri Verbeet (11):
      wined3d: Sanitise map flags in wined3d_surface_map().
      wined3d: Recognise Intel Ivybridge on MacOS.
      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.

Iván Matellanes (1):
      msvcirt: Avoid superfluous comparison in some compilers.

Jarkko Korpi (1):
      wined3d: Add detection for NVIDIA GeForce 425M.

Jean-Christophe Cardot (1):
      winhlp32: Fix some images not shown in certain 16-bit help files.

Jens Reyer (2):
      winegcc: Document WINEBUILD in the manpage.
      msiexec: Fix a typo in the manpage.

Ken Thomases (1):
      user32: Call the EnumDisplayMonitors callback using a wrapper.

Kerstin Noa (1):
      wined3d: Add NVIDIA GeForce GTX 980 GPU information.

Kim Malmo (1):
      wined3d: Add Nvidia 9700M GT.

Louis Lenders (4):
      gdiplus: GdipTransformPath should return Ok if matrix = NULL.
      ntdll: Add stub for RtlAddAuditAccessObjectAce and forward to AddAuditAccessObjectAce in advapi32.
      ntdll: Add stub for RtlAddAccessAllowedObjectAce and forward to AddAccessAllowedObjectAce in advapi32.
      ntdll: Add stub for RtlAddAccessDeniedObjectAce and forward to AddAccessDeniedObjectAce in advapi32.

Michael Müller (2):
      winex11: Add 320x240 as supported resolution in desktop mode.
      kernel32: Implement GetFinalPathNameByHandle.

Nikolay Sivov (11):
      user32: For EnableScrollBar() always go through EnableWindow() in SB_CTL case.
      t2embed: Implement TTGetEmbeddingType().
      fontsub: Added CreateFontPackage() stub.
      fontsub: Improve CreateFontPackage() stub for TTFCFP_SUBSET case.
      t2embed: Implement TTIsEmbeddingEnabledForFacename().
      t2embed: Implement TTIsEmbeddingEnabled().
      gdi32: Increase first gdi handle value.
      dwrite: Always initialize context and font table pointers.
      kernel32/nls: Convert most of the locale data files to UTF-8.
      kernel32/nls: Added SSHORTESTDAYNAME* entries.
      kernel32/nls: Fix shortest day names for Thai and Vietnamese.

Paul Gofman (1):
      d3dx9: D3DXVec3Transform should support input and output parameter overlap.

Piotr Caban (4):
      msvcrt: Dump exception information in x86_64 __CxxFrameHandler.
      msvcrt: Handle frames with CXX_FRAME_MAGIC_VC6 and CXX_FRAME_MAGIC_VC7 magic value.
      user32: Call window procedure even if we're out of winproc handles.
      msvcp71: Add basic_istream<char>::operator>> export.

Rob Walker (1):
      wined3d: Add Nvidia GPU SKUs 950,950M,960,960M.

Sebastian Lackner (8):
      xaudio2_7: Unset DebugInfo->Spare[0] before destroying critical sections.
      user32: Set %ecx to address of rect in EnumDisplayMonitors callback.
      user32/tests: Add tests for button WM_CTLCOLOR* messages.
      user32: Do not block sending/posting WM_NOTIFY messages.
      kernel32/tests: Add test for process object destruction.
      kernel32/tests: Disable Windows version dependent test for pcPriClassBase.
      server: Do not hold reference on parent process.
      ntoskrnl.exe: Add missing linebreak to FIXME in KeDelayExecutionThread.

Seong-ho Cho (1):
      configure: Add AC_HEADER_MAJOR to find where major() is defined.

--
Michael Stefaniuc
mstefani@winehq.org
