The Wine development release 1.7.17 is now available.

What's new in this release (see below for details):
  - More implementations for the Task Scheduler.
  - C runtime made more compatible by sharing source files.
  - Fixes in the Mac OS X joystick support.
  - Various bug fixes.

The source is available from the following locations:

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

   5454  Ogre3D based game doesn't render 3d objects in D3D7 mode
   6058  Counter-Strike 1.6 freezes before loggin onto a server
   6716  Database box is not correctly renewed in IDOS
  10686  Marangatu fails with "Object doesn't support this action"
  12327  Team Fortress 2 freezes when starting playin
  12768  gdi32: metafile.ok fails in a virtual desktop
  13869  Splinter Cell Demo (2): Shadow polygon offset errors
  14176  Little Fighter 2 (LF2) crashes with the error message "Couldn't create art surface."
  14394  Team Fortress 2 crashes and locks up randomly
  14730  winecfg: adjusted drive mapping lost
  15162  Team Fortress 2 unstable - random 3d related crashes
  19968  Half-Life 2: crashes when launching
  20542  Tropico 3 demo - no lights on textures
  20785  Artweaver 1.x properties tool window fails to re-dock
  21432  Mounted ISO is not recognized when wine is run from the source tree
  21536  Multiple games need 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management' 'PagingFiles' registry key (Star Wars: The Force Unleashed, Guitar Hero III)
  21770  Keyboard doesn't work in games launched from Steam when using virtual desktop
  22492  Microsoft Money 2003 - Tools menu not displayed
  23140  Steam: can't create 'new folder' when backing up a game
  23330  Age of Empires: Install bar with missing percentage and flashing
  23359  Key input crashes newer source engine games
  23413  Steam Reports Inaccurate Transfer Speeds
  23964  Mafia 2 demo (Steam) crashes after logo screen
  24006  Shadow Vault freezes at startup
  24616  Launch Battlefield 2 (installed as Steam application) : BF2 crashes immediately
  24682  Steam overlay is closing when pressing any key
  25092  Tropico 3 demo - no sea water with scene resolution=high
  25256  Source based games won't start (Team Fortress 2)
  25311  Swiss Manager (2000/11/21 build: 8.0.0.239) hangs when exporting tournament results
  25561  Setting watches (hw breakpoints) in debuggers can generate unhandled floating point stack check exceptions
  25824  comdlg32:findlg test times out when run under clang
  26154  Counter-Strike: Source: models and weapons are invisible
  26182  Half-Life and Team Fortress Classic (Steam) freeze when trying to create a local game or join a server
  26341  FutureTax 2010-2012 crashes on startup, reporting 'unsupported operation error'
  26713  Team Fortress 2 (Steam) crashes in the menu
  27191  Brink: hangs without native msvcr90
  27501  atlas.ti fails open any project file due to lack in ole32 implementation
  28068  bwin.com app fails to start
  28223  kernel32:debugger fails on Windows 7
  28231  Black Dog Cribbage fails to start
  28316  kernel32/debugger.ok: exit status of debugger is sometimes 0 when it should be STATUS_ACCESS_VIOLATION
  28384  Copy to clipboard not working in EMS SQL Manager
  28580  Acclaim Re-Volt: crashes before getting into race
  29050  Astral Masters 1.9 refuses to start: 'Failed to init D3D8 object!'
  29136  Sins of a Solar Empire (Stardock.com/Steam) does not activate
  29409  Team Fortress 2 (Steam): can't select player class or change team using mouse
  29645  PCSX2: Software renderer crashes on initialisation when using more than 1 thread
  29991  Skyrim needs more video memory
  30126  Matrix Games - Distant Worlds fails on startup (GdipDrawEllipse fails to draw ellipse without HDC)
  30247  Adobe Connect add-in displays a blank screen
  30276  Steam installer crashes after clicking first Next button
  30347  Wine can't handle ® symbol in file "Chessmaster® Grandmaster Edition Manual.pdf"
  30384  Add support for network connectivity checks using Network List Manager (NLM) API (Vista+)
  30419  Team Fortress 2 crash - "failed to lock vertex buffer in CMeshDX8::LockVertexBuffer"
  30914  Osu! Doesn't start
  31070  Sid Meier's Pirates! (Steam) crashes on startup
  31359  Magicka (steam) fails to run with "renderTargetIndex" error
  31799  Monkey Island Special Edition (Steam): "MISE.exe has encountered a serious problem and needs to be closed" (XAudio2 not installed)
  31891  Radeon HD6670 detected as 3200
  32275  UK Truck Simulator Demo does not start
  32887  EVE Online in game browser crashes
  33322  QQ crashes on start
  33630  msmoney 2003 crashes when opening data file
  33980  Borderlands 2 (Steam) fails to start
  34023  IE8 remains in memory after being closed
  34269  CompareStringEx does not support NORM_LINGUISTIC_CASING
  34505  Oblivion elder scrolls wont run Installation
  34772  The screen of help opens in background. It is partially visible.
  35066  Battle.net desktop app installer instantly crashes
  35338  Multiple GOG.com installers complain about missing 'sdbinst.exe' at the end of installation (application compatibility database deployment tool)
  35401  Battle.net agent fails to update
  35444  Wayward Terran Frontier Open Alpha (.NET 4.0/XNA 4 game) reports 'Could not find a Direct3D device that supports the XNA Framework HiDef profile'
  35486  GTX 760 is Detected as an 8800GTX by D3D applications
  35582  Stealth World of Warcraft update makes 64-bit client crash 5-10 seconds after logging in
  35600  The Elder Scrolls V: Skyrim (Steam) crashes on startup
  35623  GetFileVersionInfoA / VerQueryValueA do not work properly under Wine, preventing verification of library versions
  35626  Patrician III: divide by zero exception scrolling the city view (side effect in user32.SubtractRect())
  35687  need for speed most wanted
  35863  ddraw tests sometimes fail to receive their messages
  35868  DXVA Checker 3.0.x (.NET 2.0 app) needs unimplemented function dxva2.dll.DXVA2CreateVideoService
  35906  MetaTrader 4 platforms crashes on startup
  35932  EvoSvc (Evolve Service, .NET 4.0 app) fails to register video codecs with Windows Media Player (missing 'HKLM\\SOFTWARE\\Microsoft\\Multimedia\\WMPlayer\\Extensions' registry key)
  35945  WM_NOTIFY (LVN_DELETEALLITEMS) message sent from owner-data list view being destroyed
  35947  winedbg crashes when running tests in gdb mode
  35965  secur32/{negotiate,ntlm} tests fail with samba/winbind 4
  35977  Exile: Escape from the pit crashes on startup
  35983  mz800 emulator hangs on start
  36006  msxml3/domdoc tests crash with WINEDEBUG=warn+heap
  36008  urlmon/uri tests crash with WINEDEBUG=warn+heap

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

Changes since 1.7.16:

Akihiro Sagawa (6):
      user32/tests: Don't forget to destroy the parent window after the tests.
      user32/tests: Add some tests for edit control context menu messages.
      user32: Don't emit WM_COMMAND on choosing an item in a context menu (Edit control).
      user32: Emit EM_SETSEL message when choosing "Select All" from context menu.
      ntdll: Add %gs support for NetBSD.
      msvcrt: Add MBCS handling for _splitpath.

Alexandre Julliard (15):
      makedep: Add a structure to store individual makefile parameters.
      makedep: Compute source paths instead of loading them from the makefile.
      makedep: Store more variables in the makefile structure.
      makedep: Add support for specifying an object directory different from the current directory.
      makedep: Pass a makefile pointer to all internal functions.
      makedep: Add a helper function to check if a string exists in an array.
      makedep: Store the sources list inside the makefile structure.
      Revert "server: Restore the masks from the previous get_message when a wait is satisfied."
      user32: Cache the server queue mask on the client side and reset them when they have changed.
      makedep: Open files from the top-level directory as far as possible.
      makedep: Parse files as soon as they are loaded, and cache the information.
      makedep: Store the includes list inside the makefile structure.
      gdi32: Pass the full DC handle to the hook in DeleteDC.
      wrc: Allow specifying the default message font in dialogs by setting DS_SETFONT.
      user32: Load the message box font through the dialog template.

Alistair Leslie-Hughes (2):
      hnetcfg: Register NetFwOpenPort interface.
      sdbinst: New stub program.

Austin English (5):
      gdi32/tests: Skip some tests if Times New Roman is not installed.
      wine.inf: Add HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles key.
      wmp: Add HKLM\\Software\\Microsoft\\Multimedia\\WMPlayer\\Extensions key.
      ntdll: Make sure flags are preserved in raise_trap_exception().
      user.exe16: Downgrade a couple MESSAGEs to WARNs.

Bruno Jesus (3):
      ws2_32: Use the correct address family in gethostbyaddr.
      po: Update Brazilian Portuguese translation.
      ws2_32: Convert the magic loopback address back to 127.0.0.1 in gethostbyaddr.

Dmitry Timoshkov (40):
      schedsvc: Handle directory creation failure in SchRpcRegisterTask.
      include/vfw.h: Properly declare implicit This* parameter.
      taskschd: Make ITaskFolder::CreateFolder, ITaskFolder::GetFolder and ITaskFolder::DeleteFolder use the RPC API.
      taskschd: Reimplement ITaskFolderCollection enumeration using SchRpcEnumFolders.
      taskschd: Remove registry based task folder management.
      avifil32: Use correct AddRef helpers.
      schedsvc/tests: Fix a couple of typos.
      schedsvc/tests: Avoid test failures on file systems with enabled directory randomization.
      taskschd: Implement ITaskFolder::DeleteTask.
      taskschd: Implement task management using RPC APIs.
      taskschd: Implement IRegisteredTask::get_Name.
      taskschd: Implement IRegisteredTask::get_Path.
      schedsvc: Return correct error code when a being loaded xml doesn't exist.
      schedsvc: Add some tests for SchRpcGetTaskInfo.
      schedsvc: Add SchRpcGetTaskInfo stub implementation.
      taskschd: Forward IRegisteredTask::get_State to SchRpcGetTaskInfo.
      taskschd: Forward IRegisteredTask::get_Enabled to SchRpcGetTaskInfo.
      taskschd: Add invalid parameter check to IRegisteredTask::get_State and IRegisteredTask::get_Enabled.
      schedsvc/tests: Add a test for NULL task name passed to SchRpcRegisterTask.
      schedsvc: Add support for generating new task name in SchRpcRegisterTask.
      taskschd/tests: Add a test for registering a task with NULL name in a not root folder.
      taskschd: Add support for registering a task with NULL name in the root folder.
      oleaut32/tests: Add a test for loading an empty picture from a non-statable stream.
      oleaut32: Fix loading of an empty picture from a non-statable stream.
      taskschd/tests: Add some tests for task registration info.
      taskschd: Implement getters for IRegistrationInfo string properties.
      taskschd: Implement setters for IRegistrationInfo string properties.
      kernel32: Filter out console handles in GetFileSize.
      include/xmldomdid.h: Synchronize with msxml2did.h.
      secur32: Also recognize samba4 failure message if ntlm_auth could not connect to winbindd.
      kernel32: Handle memory allocation failure in ReadConsoleA.
      kernel32: Add a workaround for broken apps that pass negative values to ReadConsole.
      ole32: Add support for VT_INT/VT_UINT to PropVariantClear and PropVariantCopy.
      ole32/tests: Add more tests for PropVariantClear.
      ole32: PropVariantClear should always reset contents of the passed in PROPVARIANT.
      ole32/tests: Fix crashes in PropVariantClear tests under win2000 and XP.
      ole32/tests: Fix crashes in PropVariantClear tests under win64.
      ole32: Revert part of 3cb0c81336.
      ole32/tests: Add some tests for PropVariantCopy.
      ole32: If number of VT_VECTOR elements is 0 there is no need to allocate memory.

Erich Hoover (3):
      kernel32/tests: Add a variety of tests for CompareStringEx.
      kernel32: Allow CompareStringEx NORM_LINGUISTIC_CASING flag.
      kernel32: Allow CompareStringEx LINGUISTIC_IGNORECASE flag.

Hans Leidekker (8):
      netprofm: New dll.
      netprofm: Add a stub implementation of INetworkListManager.
      netprofm: Add a class factory implementation.
      netprofm: Register interfaces.
      netprofm: Add a couple of tests for INetworkListManager.
      netprofm: Fix a memory leak.
      netprofm: Add a stub implementation of INetworkCostManager.
      msxml3: Fix a couple of memory leaks (valgrind).

Henri Verbeet (50):
      d3d9/tests: Use a separate device for pointsize_test().
      d3d9/tests: Use a separate device for fixed_function_bumpmap_test().
      d3d9/tests: Use a separate device for conditional_np2_repeat_test().
      d3d9/tests: Use a separate device for fixed_function_decl_test().
      d3d9/tests: Use a separate device for autogen_mipmap_test().
      d3d9/tests: Use a separate device for texture_transform_flags_test().
      d3d9/tests: Use a separate device for pixelshader_blending_test().
      d3d9/tests: Use a separate device for g16r16_texture_test().
      d3d9/tests: Use a separate device for float_texture_test().
      d3d9/tests: Use a separate device for release_buffer_test().
      d3d9/tests: Use a separate device for srgbtexture_test().
      d3d9/tests: Use a separate device for shademode_test().
      d3d9/tests: Use a separate device for alpha_test().
      d3d9/tests: Use a separate device for ds_size_test().
      d3d9/tests: Use a separate device for offscreen_test().
      d3d9/tests: Use a separate device for maxmip_test().
      d3d9/tests: Use a separate device for z_range_test().
      d3d9/tests: Use a separate device for test_cube_wrap().
      d3d9/tests: Use a separate device for fog_test().
      d3d9/tests: Use a separate device for color_fill_test().
      d3d9/tests: Use a separate device for clear_test().
      d3d9/tests: Use a separate device for lighting_test().
      d3d9/tests: Use a separate device for stretchrect_test().
      d3d9/tests: Use a separate device for depth_clamp_test().
      d3d9/tests: Make the sanity test a normal test.
      d3d9/tests: Get rid of some pointless BeginScene() checks.
      d3d8/tests: Get rid of some pointless BeginScene() checks.
      d3d9/tests: Properly declare matrices.
      d3d8/tests: Properly declare matrices.
      ddraw/tests: Try to make test_coop_level_mode_set() more reliable.
      wined3d: Set VTF filter caps when VTF is supported.
      wined3d: Set the WINED3DPBLENDCAPS_SRCALPHASAT destination blend cap when ARB_blend_func_extended is supported.
      d3d8/tests: Make the sanity test a normal test.
      d3d8/tests: Use a separate device for add_dirty_rect_test().
      d3d8/tests: Use a separate device for volume_v16u16_test().
      d3d8/tests: Use a separate device for volume_dxt5_test().
      d3d8/tests: Use a separate device for fog_special_test().
      d3d8/tests: Use a separate device for resz_test().
      d3d8/tests: Use a separate device for zenable_test().
      d3d8/tests: Use a separate device for multisample_copy_rects_test().
      d3d8/tests: Use a separate device for shadow_test().
      d3d8/tests: Use a separate device for intz_test().
      d3d8/tests: Use a separate device for depth_buffer2_test().
      d3d8/tests: Use a separate device for depth_buffer_test().
      d3d8/tests: Use a separate device for texop_test().
      d3d8/tests: Use a separate device for p8_texture_test().
      d3d8/tests: Use a separate device for cnd_test().
      d3d8/tests: Use a separate device for fog_with_shader_test().
      d3d8/tests: Use a separate device for test_scalar_instructions().
      d3d8/tests: Use a separate device for alpha_test().

Hermès Bélusca-Maïto (1):
      shell32: Automatically expand CPL applet path string.

Huw D. M. Davies (3):
      ntdll: Add a replacement getmntent for Android.
      ntdll: For Android look in /proc/mounts for mounted file systems.
      wineps: Always initialize the Windows page type.

Jacek Caban (7):
      mshtml: Ignore QueryHitPoint calls in activex.c tests.
      services: Skip tests if OpenSCManager failed.
      qcap: Store max frame size separately from video format bitmap info and restore it before each ICCompress call.
      mshtml: Ignore &IID_IWebBrowserPriv2IE7 in wb_qi.
      cscript: Share sources with wscript.
      wscript: Added WScript.CreateObject implementation.
      secur32: Fixed schannel tests on Windows 8.1.

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

Ken Thomases (7):
      dinput: Rename identifiers to get rid of Hungarian notation and deceptive names in Mac code.
      dinput: Fix check of wrong result value due to copy/paste error.
      dinput: Use the proper mutable Core Foundation types for mutable collections and avoid casting.
      dinput: Overhaul how the array of Mac device elements is built and sorted.
      dinput: Check array indexes to avoid exceeding array bounds.
      dinput: Fix numerous leaks.
      dinput: Add additional debug logging to Mac code.

Marcus Meissner (4):
      comctl32: Process GetKeyState return correctly (Coverity).
      usp10: Fixed border condition in shifts (Coverity).
      server: Use longer int in bitshift operation (Coverity).
      winhttp: Avoid leaking authinfo on error (Coverity).

Matteo Bruni (5):
      d3d9/tests: Add a test for timestamp queries.
      wined3d: Add support for GL_ARB_timer_query extension.
      wined3d: Add support for timestamp queries.
      d3dx9: Copy the entire vector at once if there is no need of type conversions.
      d3dx9: Skip the AddRef/Release calls if the new texture is the same as the old one.

Michael Stefaniuc (2):
      netprofm: COM cleanup for INetworkListManager.
      netprofm: COM cleanup for IClassFactory.

Nikolay Sivov (37):
      user32: Fix Edit margins calculation for empty client area case.
      dwrite: Return default text format properties.
      dwrite: Store text format properties.
      user32: Added RegisterPowerSettingNotification() stub.
      include: Added dwrite_2.idl.
      msxml3/tests: Protect from invalid array access (Coverity).
      services: Remove redundant error code check (Coverity).
      dwrite: Added GetTrimming()/SetTrimming() for text format.
      dwrite: Added partial implementation for CreateEllipsisTrimmingSign().
      msxml3: IXSLProcessor_put_output() is not a stub.
      comctl32: Fix LVN_DELETEALLITEMS notification for LVS_OWNERDATA case.
      qedit/tests: Fix a file handle leak on error path (Coverity).
      msi: Fix a leak on error path (Coverity).
      msi: Fix a leak on error path (Coverity).
      shell32: Fix a leak of memory pointing to XDG_PARSED_FILE (Coverity).
      shell32: Fix a cloned pidl leak (Coverity).
      shlwapi: Always close find handle (Coverity).
      winhlp32: Remove unused assignments (Coverity).
      msxml3: Fix transformation result output for stream and BSTR cases.
      quartz: Check GetCurFile() return value (Coverity).
      dsound: Remove duplicated parameter check (Coverity).
      crypt32: Fix properties list lookup (Coverity).
      winhttp: Use proper deallocator (Coverity).
      shlwapi: Use a proper deallocator (Coverity).
      shell32: Use a proper deallocator (Coverity).
      kernel32/tests: Added missing comma (Coverity).
      riched20: GetClientSite() is implemented for IRichEditOle so uncomment related code (Coverity).
      wininet: Remove some dead code (Coverity).
      wine.inf: Fix FontCache service registration info.
      svchost: Simplify error handling, fix trace message.
      msxml3/tests: Fix accessing released intreface pointer.
      urlmon/tests: Fix use after free of IPersistStream interface.
      wshom: Added a stub for IWshEnvironment.
      wscript: Ignore 'nologo' switch.
      shlwapi: Fix UrlEscapeW() for non-ASCII range.
      include: Added some ATL interfaces.
      atl: Simplify error handling in AtlAxAttachControl().

Piotr Caban (18):
      ole32: Null terminate strings in STREAM_ReadString function.
      ole32: Don't write empty CLIPFORMAT in WriteFmtUserTypeStg.
      ole32: Try to open 1Ole stream before trying to create it in SetConvertStg function.
      ole32: Get CLSID from IStorage object in WriteFmtUserTypeStg.
      ole32: Add OleDoAutoConvert implementation.
      ole32: Add more SetConvertStg amd WriteFmtUserTypeStg tests.
      server: Don't debug children when DEBUG_PROCESS and DEBUG_ONLY_THIS_PROCESS flags are passed to CreateProcess.
      user32: Don't fail on windows without menu bar in DrawMenuBar.
      user32/tests: Fix DrawMenuBar test failures.
      msvcrt: Fix compilation errors on Mingw.
      msvcr100: Move functions implementation to msvcrt.
      msvcr90: Share the source code with msvcrt.
      msvcr100: Share the source code with msvcrt.
      msvcr110: Share the source code with msvcrt.
      msvcr70: Share the source code with msvcrt.
      msvcr71: Share the source code with msvcrt.
      msvcr80: Share the source code with msvcrt.
      msvcr80: Remove remaining forwards to msvcrt.

Ryan Turner (2):
      wined3d: Add NVIDIA Geforce GTX 760 to device list.
      wined3d: Add NVIDIA Geforce GTX 750 to device list.

Sebastian Lackner (5):
      ntdll: Unify exception function lookup on x86_64.
      ntdll: Implement RtlAddFunctionTable / RtlDeleteFunctionTable for x86_64.
      ntdll: Implement RtlInstallFunctionTableCallback on x86_64.
      ntdll/tests: Add tests for dynamic unwind table.
      kernel32: Forward RtlInstallFunctionTableCallback to ntdll.

Stefan Dösinger (8):
      d3d9/tests: Add a test for (sub-) resource types.
      d3d8/tests: Add a test for (sub-) resource types.
      ddraw/tests: Add mipmap locking tests.
      d3d9/tests: Test locking of mipmap textures.
      d3d8/tests: Test locking of mipmap textures.
      ddraw/tests: Nvidia has an off-by-one rectangle handling bug.
      dxgi/tests: Add private data tests.
      ddraw: SetPrivateData(..., data = NULL, ...) is not valid.

Thomas Faber (2):
      ntdll/tests: Add tests for RtlUnicodeToUTF8N.
      ntdll/tests: Add tests for RtlUTF8ToUnicodeN.

Vincent Povirk (2):
      gdiplus: Prevent NULL StringFormat in gdip_format_string.
      user32: Allow EndMenu() calls from WM_ENTERMENULOOP.

Vitaly Lipatov (1):
      po: Revise Russian translation.

Zhenbo Li (2):
      mshtml: Don't free a string too early.
      mshtml: Added IHTMLTable::bgColor property implementation.

--
Alexandre Julliard
julliard@winehq.org
