The Wine development release 1.7.16 is now available.

What's new in this release (see below for details):
  - More regression test fixes.
  - String arrays better supported in the IDL compiler.
  - Initial stubs for DirectX Video Acceleration.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.16.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.16.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.7.16 (total 50):

  11114  World in Conflict complains with "No appropriate 3D graphics card detected" (b3DAccelerationExists and b3DAccelerationEnabled dxdiagn properties missing)
  12388  Commandos 3: read_from_framebuffer_texture error (glCopyTexSubImage2D)
  15133  Application blocks waiting for a critical section during startup. This problem does not occur in Windows.
  17440  Anarchy Online: Fog bug introduced between v. 1.1.11 and 1.1.13
  19269  Distant impostors does not work in Lord of the Rings Online
  20466  Multiple broken apps and games with incorrect TLS usage crash on startup (TLS slot index allocation must start at non-zero indexes (Brothers in Arms: Hell's Highway, ProShow Gold 5/6)
  21576  Touch screen loses calibration when in full screen mode - specifically AtomixMP3.exe
  21956  Empire Earth 1.00 and 1.04 crash with unhanded page fault
  22016  R.U.S.E. Public Beta in-game rendering is washed out
  23601  Windows Movie Maker 2.6 reports 'A new collections file cannot be created' (needs 'Microsoft' folder in CSIDL_LOCAL_APPDATA)
  24702  Pro Evolution Soccer 2010 DEMO: shows black screen with stars and never load
  25727  Dead Space resolution issues
  25780  MS Works 9.0 can't find license terms
  25914  Dead Space 2 exits with error
  27625  Panzer General 3D Demo: second scenario fails to load
  27797  No sound in FMOD games (Gratuitous Space Battles demo, Armored Brigade)
  27900  Miranda IM v0.9.25 group chats are broken
  28571  Saving file in Rockwell Arena Simulator causes crash.
  29003  T4C: Crashes during or after patching phase
  29875  MS Works 9.0 can't install (infinite waiting for estimating time)
  29968  Final Fantasy XI crashes when unfocused in windowed mode
  30079  Broken Sword - The Sleeping Dragon: Graphics corruption
  31079  Fatal error during Stronghold Crusader Demo installation
  31433  Foxit Reader 5.3.1.0606 crashes on startup
  32245  Multiple applications crash on startup due to unimplemented function shell32.dll.SHExtractIconsW
  32835  Batman: Arkham Asylum (non-Steam) Demo fails on startup (IWbemClassObject::GetNames with qualifier unsupported)
  33603  Metro: Last Light crash after several minutes
  33732  Broken non-PCM audio playback in Microsoft Sound Recorder
  34352  Multiple applications need 'Network Configuration Component Object', CLSID '{5b035261-40f9-11d1-aaec-00805fc1270e}' (CommView, iNodeSetup 3.60)
  34668  Age of Empires Trial version only gives a black screen
  35064  Daemon Tools Lite crashes after opening
  35112  L.A. Noire 1.3 (Steam version) fails to start, claiming "DX94: Graphics card capabilities are below the minimum specifications." (wined3d clamps device caps MaxVertexIndex to 0xFFFFF)
  35359  Kompas-3D v14 installer fails
  35474  'Das Fussball Studio' (VB6 based german soccer league db app) reports Run-time error '445' (needs IFile::OpenAsTextStream)
  35550  Horizon (Steam) needs msvcp100.dll.?_Random_device@tr1@std@@YAIXZ
  35555  Drakan Demo doesn't show the name of the display driver (the problem is in GetDeviceIdentifier when it is _not_ passed the DDGDI_GETHOSTIDENTIFIER flag)
  35678  Defiance patcher crashes on start (gdiplus/GdipDrawImagePointsRect)
  35786  Incorrect behaviour in printf with 0 value on "%#x"
  35802  OneNote 2013 installer needs KERNEL32.dll.SetWaitableTimerEx
  35809  Avoid deletion of precious (empty) folders such as '%USERPROFILE%\\Application Data' during MSI product upgrades/uninstalls
  35818  mscms/profile tests fail on Fedora
  35825  Mortal Online (MMORPG) client 1.75.00.07 displays garbled buttons/images with builtin gdiplus
  35827  Corel PaintShop Pro X6 v16.2 installer crashes on startup ('text/jscript' type not recognized when converting to script GUID)
  35833  iTunes 7 installer aborts early (automation methods HRESULT incorrectly translated to VBScript runtime Err.number)
  35838  MS Works 9.0 word processor crashes on startup (process heaps need to be 64K aligned)
  35840  'Das Fussball Studio' (VB6 based german soccer league db app) reports Run-time error '445' (needs ITextStream ReadAll method implementation)
  35867  Multiple applications need support for INetCfgLock, CLSID '{c0e8ae93-306e-11d1-aacf-00805fc1270e}' (CommView, iNodeSetup 3.60)
  35888  Stahlschlüssel 2007 no CD in drive warning
  35891  sdb2xml and native setupapi override crash on unimplemented function apphelp.dll.SdbInitDatabase
  35908  Regedit has wrong letter view in title bar with a desktop mode

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

Changes since 1.7.15:

Alexandre Julliard (10):
      ntdll: Heap handles should be 64K-aligned.
      kernel32/tests: Move allocation tests into heap.c.
      kernel32: Don't allocate FLS index 0.
      makedep: Add dependency for ttf font files when necessary.
      makedep: Add phony install targets for fonts also for the ttf case.
      makedep: Load some variables from the top-level makefile.
      makedep: Allow the top-level makefile to set default values for make variables.
      makedep: Add helper functions to get and set variables in string arrays.
      make_xftmpl: Always output data in little-endian format.
      make_xftmpl: Get rid of the parser structure.

Alistair Leslie-Hughes (4):
      netcfgx: Add INetCfg interface support.
      include: Add interface INetCfgLock.
      netcfgx: Add INetCfgLock support.
      dbghelp: Improve dwarf support.

Andrew Eikum (1):
      winmm/tests: Accept MMSYSERR_ALLOCATED for more tests.

Andrey Gusev (1):
      po: Update Ukrainian translation.

André Hentschel (2):
      setupapi: Add support for more architectures when building fake dlls.
      setupapi: Don't confuse ARM with ARM64.

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

Austin English (5):
      ws2_32: Skip some tests on broken ISPs.
      winhttp: Skip tests on broken ISPs.
      shell32: Fix a typo.
      wine.inf: Add %AppData%\Microsoft and %LocalAppData%\Microsoft folders:.
      apphelp: Add a stub for SdbInitDatabase.

Dmitry Timoshkov (13):
      include: Fix a typo in _MSC_VER.
      schedsvc: Skip the UTF-8 byte order mark when returing XML to the client.
      widl: Pass type attributes from write_array_tfs to write_pointer_description.
      widl: Pass type attributes from write_array_tfs to write_array_element_type.
      widl: Avoid generating negative offsets for conformant arrays of strings.
      widl: Don't call write_embedded_types if an array element is a string.
      widl: Add support for an array of strings to write_string_tfs.
      rpcrt4/tests: Add a couple of tests for marshalling an array of strings.
      widl: Correct the condition when to use new code path which avoids writing negative offsets in the pointer description.
      schrpc.idl: Add missing [string] attribute to an array of strings being returned by SchRpcEnumFolders/SchRpcEnumTasks.
      schedsvc: Implement SchRpcEnumFolders.
      schedsvc: Implement SchRpcEnumTasks.
      schedsvc: Add some tests for scheduler RPC API.

Erich Hoover (1):
      ws2_32: Ask the server to process unsupported WSAIoctl operations.

Eriks Dobelis (2):
      wintab: Fix incorrectly classifying cursor as stylus instead of eraser.
      wintab: Initialize lcOutExtX and Y values.

François Gouget (3):
      wbemprox/tests: Make test_GetNames() static.
      netcfgx/tests: Make create_configuration() static.
      user32/tests: Fix compilation on systems that don't support nameless unions.

Gerald Pfeifer (1):
      readme: Raise the minimum version of FreeBSD to 8.0.

Hans Leidekker (13):
      wbemprox: Add support for WBEM_FLAG_NONSYSTEM_ONLY and WBEM_FLAG_SYSTEM_ONLY in IWbemClassObject::GetNames.
      user32/tests: Add more tests for PrivateExtractIcons.
      shell32: Forward ShExtractIconsW to user32.PrivateExtractIconsW.
      riched20: Don't return DLGC_HASSETSEL from WM_GETDLGCODE if the control style includes ES_SAVESEL.
      fonts: Add Hungarian localization of Tahoma font names.
      wldap32/tests: Skip tests if the connection times out.
      shell32/tests: Remove todo handling from DDE tests.
      shell32/tests: Mark some test results as broken.
      wbemprox: Add a stub implementation of Win32_PhysicalMemory.
      wbemprox: Implement more properties of Win32_OperatingSystem.
      wbemprox: Implement more properties of Win32_DiskDrive.
      wbemprox: Implement Win32_CDROMDrive.MediaType.
      wbemprox: Implement Win32_VideoController.Availability.

Henri Verbeet (25):
      d3d9/tests: Use a separate device for texdepth_test().
      d3d9/tests: Use a separate device for texbem_test().
      d3d9/tests: Use a separate device for fog_with_shader_test().
      d3d9/tests: Use a separate device for stream_test().
      d3d9/tests: Use a separate device for test_vshader_float16().
      d3d9/tests: Handle the Windows 8 testbot results in zenable_test().
      d3d9/tests: Handle the Windows 8 testbot results in fp_special_test().
      d3d9/tests: Handle the Windows 8 testbot results in cnd_test().
      d3d9/tests: Use an easier to debug texture in generate_bumpmap_textures().
      d3d9/tests: Handle the Windows 8 testbot results in test_vshader_input().
      d3d9/tests: Use a separate device for test_vshader_input().
      d3d9/tests: Use a separate device for clip_planes_test().
      d3d9/tests: Use a separate device for sgn_test().
      d3d9/tests: Use a separate device for sincos_test().
      d3d9/tests: Use a separate device for loop_index_test().
      d3d9/tests: Use a separate device for test_mova().
      d3d9/tests: Use a separate device for test_compare_instructions().
      d3d9/tests: Use a separate device for test_constant_clamp_vs().
      d3d9/tests: Use a separate device for viewport_test().
      d3d9/tests: Use a separate device for alphatest_test().
      d3d9/tests: Use a separate device for zwriteenable_test().
      d3d9/tests: Use a separate device for yuv_layout_test().
      d3d9/tests: Use a separate device for yuv_color_test().
      d3d9/tests: Use a separate device for np2_stretch_rect_test().
      d3d9/tests: Use a separate device for tssargtemp_test().

Hermès Bélusca-Maïto (2):
      usp10: Avoid non-standard array initialization.
      winemac.drv: Fix a typo in _MSC_VER.

Hugh McMaster (3):
      regsvr32: Replace printf calls with WriteConsole function.
      regsvr32: Move silent check to the output_write function.
      regsvr32: Fix filename in version definition.

Huw D. M. Davies (2):
      riched20: Add a helper to return the default line height and use that in EM_LINESCROLL.
      riched20: Keep track of fractions of WHEEL_DELTA when scrolling.

Jacek Caban (14):
      mshtml: Added IHTMLStyle::listStyleType property implementation.
      vbscript: Fixed a leak.
      wininet: Merge GetLastError() test into other request tests.
      wininet: Fixed tests on some old Windows versions.
      vbscript: Store required stack offset before doing jump.
      dxgi.idl: Added IDXGIDevice1 declaration.
      dxgi1_2.idl: Added new file.
      vbscript: Map some known error codes to vbscript errors.
      vbscript: Return only code part of HRESULT for vbscript errors as Err.number.
      vbscript/tests: Added more error tests.
      ntdll: Reserve TLS slot 0 for broken apps that compare index to 0 instead of TLS_OUT_OF_INDEXES.
      kernel32: Skip reserved TLS tests on WinXP SP1.
      docobj.idl: Added some new OLECMDID values.
      ieframe: Fixed some tests on IE11.

Jactry Zeng (2):
      riched20: Return E_INVALIDARG for empty ppSel in ITextDocument::GetSelection.
      riched20: Fix a typo in CreateIRichEditOle.

Javier Cantero (3):
      user32: Fix side effect in SubtractRect().
      user32/tests: Add SubtractRect() test.
      user32/tests: New test cases for SubtractRect().

Julian Rüger (1):
      po: Update German translation.

Kai Tietz (1):
      corerror.h: Merge with mingw-w64's extensions.

Ken Thomases (10):
      winemac: Don't recreate the GL view when the pixel format is set again.
      winemac: Improve handling of swap interval with respect to pbuffers, clamping to 0.
      wined3d: Don't leak the HDC of an invalid context in context_update_window().
      wined3d: Simplify the error path of context_update_window().
      wined3d: Don't call GetPixelFormat() to set a flag that's already set.
      wined3d: When restoring pixel format in context_release(), mark the context as needing to be set on the next context_acquire().
      wined3d: Track if a context's hdc is private so we never need to restore its pixel format.
      wined3d: Track if a context's private hdc has had its pixel format set, so we don't need to check it.
      winex11: Maintain the swap interval when the drawable is recreated.
      winex11: Remove set-but-never-read hwnd and fbconfig_id fields of struct x11drv_escape_set_drawable.

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

Marcus Meissner (1):
      wbemprox: Fixed leaks in fill_datafile (Coverity).

Markus Weiland (1):
      dxdiagn: Added properties for hardware acceleration capabilities.

Michael Müller (6):
      dxva2: Added stub dll.
      include: Add dxva2api.idl.
      include: Add physicalmonitorenumerationapi.h.
      include: Add lowlevelmonitorconfigurationapi.h.
      include: Add highlevelmonitorconfigurationapi.h.
      dxva2: Add implementation for stub functions.

Michael Stefaniuc (2):
      shell32: Simplify the creation of an IEnumIDList.
      shell32: COM cleanup for IEnumIDList.

Nikolay Sivov (30):
      kernel32: Added SetWaitableTimerEx().
      scrrun: Implement OpenAsTextStream().
      oleaut32/tests: Remove early returns on test failure that never happen.
      oleaut32/tests: Move string allocation after function pointer check (Coverity).
      comctl32/tests: Fix uninitialized variable case (Coverity).
      ole32: Fix some leaks on early returns (Coverity).
      ole32: Fix leaks on error paths (Coverity).
      scrrun: Close find handle on error (Coverity).
      scrrun: Fix a find handle leak (Coverity).
      winhttp: Move allocation after input validation to fix leaks (Coverity).
      comctl32: Fix a leak on error path (Coverity).
      gdiplus: Fix image attributes leak (Coverity).
      msi: Fix a record leak on error paths (Coverity).
      msi: Fix a leak of allocated string buffer on error path (Coverity).
      msi: Fix a record leak on error path (Coverity).
      msi: Fix a record leak on failure removing a column (Coverity).
      scrrun: Added IsReady property for a drive.
      scrrun: Implement TotalSize property for a drive.
      scrrun: Implement AvailableSpace property for a drive.
      scrrun: Implement DriveLetter property for a drive.
      qcap/tests: Check method return values (Coverity).
      msxml3/tests: Check return values (Coverity).
      regsvr32: Fix some usage message issues.
      kernel32: Added QueryUnbiasedInterruptTime().
      po: Update Russian translation.
      msxml3: Handle NULL child in appendChild().
      scrrun: Implement ReadAll().
      scrrun: Implement Read().
      scrrun: Implement FreeSpace() for a drive.
      fonts: Added glyphs for U+0404/U+0454 Ukrainian Ye for Tahoma Bold.

Piotr Caban (7):
      user32/tests: Workaround SetForegroundWindow failure due to foreground lock timeout.
      msvcp90: Add _Random_device implementation.
      msvcrt: Remove setlocale test with empty locale string.
      qcap/tests: Fix AviMux test failures on Win2k.
      user32: Change SetFocus behavior on windows with parent and no WS_CHILD flag.
      user32: Change SetForegroundWindow behavior on windows with parent and no WS_CHILD flag.
      user32: Make it possible to activate a window with parent and no WS_CHILD flag in WS_NCLBUTTONDOWN function.

Robert Naumann (1):
      mgmtapi: Fix a typo in the export of SnmpMgrRequest.

Sebastian Lackner (1):
      kernel32: Silence SetWaitableTimerEx fixme message.

Shuai Meng (1):
      oleaut32: Fixed bounds of VarIntFromFloat.

Stefan Dösinger (15):
      d3d9: Introduce a resource structure.
      d3d9: Use the private store api for buffers.
      d3d9: Use the private store api for textures.
      d3d9: Use the private store api for surfaces.
      wined3d: Remove resource private data methods.
      wined3d: Select the component by editing the swizzle.
      wined3d: Handle LOG and LOGP in shader_hw_scalar_op.
      wined3d: Handle RCP in shader_hw_scalar_op.
      wined3d: Translate LOGP to LG2 in the ARB shader backend.
      wined3d: Translate shader model 2.0+ EXPP to EX2.
      wined3d: Raise MaxPrimitiveCount and MaxVertexIndex.
      d3dx9_36/tests: Initialize some test values.
      d3dxof: Make the get_primitive_string parameter a DWORD.
      d3dxof: Include wine/port.h in parsing.c.
      include: The NumUAVs parameter of OMGetRenderTargetsAndUnorderedAccessViews is an input parameter.

Stefan Leichter (1):
      wtsapi32: Extend the parameter check of WTSEnumerateProcessesW.

Thomas Faber (15):
      dplayx: Fix broken pointer arithmetic.
      gameux/tests: Avoid a variable-length array.
      gdi32: Avoid variable-length arrays.
      msxml3: Avoid a variable-length array.
      shell32: Avoid a variable-length array.
      ws2_32: Avoid a variable-length array.
      oleview: Avoid variable-length arrays.
      configure: Enable -Wvla if available.
      comctl32: Make Str* functions private.
      setupapi: Fix buffer overflow in SetupGetFileCompressionInfoW.
      advapi32: Fix stack corruption in CredIsMarshaledCredentialW.
      advapi32: Remove unnecessary buffer copy in CredMarshalCredentialW.
      advapi32/tests: Use a loop for CredUnmarshalCredential test cases.
      advapi32: Set output type earlier in CredUnmarshalCredential.
      advapi32: Fix uneven length handling in CredUnmarshalCredential.

Vijay Kiran Kamuju (1):
      mshtml: Add text/jscript as valid mime type for javascript files.

Vincent Povirk (4):
      gdiplus: Limit image output to the bounds of the Graphics object.
      gdiplus: Remove a useless comparison.
      gdiplus: Copy palettes with bitmaps.
      msi: Fix infinite loop.

Zhenbo Li (1):
      mshtml: Added IHTMLTableRow::bgColor property implementation.

--
Alexandre Julliard
julliard@winehq.org
