The Wine development release 1.7.13 is now available.

What's new in this release (see below for details):
  - More Task Scheduler support.
  - A few more Direct3D 10 interfaces.
  - More Windows Media Player stubs.
  - ARM code generation improvements.
  - Better memory size reporting on Mac OS X.
  - Various bug fixes.

The source is available from the following locations:

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

   6351  Battlefield 2 graphics problems
   7366  softPROGRESS eISLP fails to display prescription information details
  10528  mdiviewer unusable
  12320  [The Master Genealogist (5/6/7) Gold U.S Edition] - Fonts/Text Do not Show in "Details/Children & Siblings" Windows (unless you install vb6run and choose: native_oleaut32 with winetricks )
  12442  UOAssist: crash after startup attempting to fetch http page in frame
  12792  Warcraft III videos is not playing
  17214  Proteus VX fails to install (VT_DISPATCH to VT_xxx conversion: uninitialized VARIANTARG passed to DISPID_VALUE invoke call)
  19322  Letters missing in tahomabd.ttf
  19553  VideoReDo Plus crashes when video file is loaded.
  22433  Starship Tycoon demo crashes on exit
  24517  Many DirectX10/11 games need dxgi.dll.CreateDXGIFactory1 (Deus Ex: Human Revolution, Alan Wake, AC III, NFS: Most Wanted, Civ V, ...)
  25481  Desktop launchers generated by Steam use unregistered URL handler
  25526  Aura crashes
  25649  Firefox: alt tabbing is sometimes screwy
  25771  getElementsByName not implemented- causes problems for some applications navigating internet.
  26001  Champions Online installer crashes on startup
  26221  Shattered Origins config screen edges are not transparent, but pink
  26698  Dope Wars 2.2 weapon rack text is not drawn correctly
  27364  Osu! fails to install (ole32.IIDFromString returns unexpected error code)
  27417  Assassins Creed media validation fails (SafeDisc 4.85.x)
  27527  Move of the SendMessage() breaks 3DMark2001se
  27733  Fishdom 2: some fish render purple
  27977  freegate fg715x.exe exit silently
  28460  ieframe/ie test fails if CFLAGS="-fstack-protector-all" is used
  28463  oleaut32/tmarshal.c test crashes if CFLAGS="-fstack-protector-all" is used
  28996  rynga aborts on startup due to stubby GdipGetPropertyItemSize
  29611  FL Studio 10 is invisible without "emulate virtual desktop"
  29615  Inpage Urdu 2000 crashes on startup
  29983  AVRstudio 4.14 unable to get list of supported device for AVR simulator
  30132  FL Studio 10 crashes on start
  30447  Lexware 2012 product installers show an empty dialog window on startup (urlmon.CreateURLMoniker with base context and non-well formed URI, DOS-style path)
  31159  League of Legends: store doesn't load with builtin wininet
  31162  New Ubisoft Game Launcher fails to start games
  31439  ITKFEGUI.EXE crashes on startup.
  31505  AVR Studio 4.18 SP2 (build 700) crashes during build of projects
  33372  winmm:midi fails on systems with no sound card
  34052  The Witcher: Character models are sometimes invisible
  34098  Gamefly Client fails to install downloaded game content
  34304  Louisiana Adventure Demo fails with 'OLE error 80004001' (HTMLStyleSheet_get_href is a stub)
  34852  Xibo installer 1.4.x complains "Player cannot be installed on systems with Internet Explorer version smaller than 7.0"
  34892  IE8 crashes in 'purist' mode, needs unimplemented urlmon.dll.108
  34921  Multiple games and applications need bcrypt.dll.BCryptGenRandom (Need for Speed: The Run, Battlefield 3)
  35171  Adobe Shockwave Player 12.x installer crashes on startup (URL moniker notify window class not unregistered during unload of urlmon)
  35256  Skyrim - "Not enough memory to run application" error
  35362  Aeria Games/Aura Kingdom launcher account signin fails due to IHTMLDocument2.GetActiveElement stub
  35406  Dawn Of War: Dark Crusade crash
  35417  all texts looks a bit shifted left
  35433  Civilization 4 BTS randomly page faults
  35485  Tab control is keeping pressed with TCM_SETCURSEL wParam:-1
  35509  ProPresenter 4.x (.NET 3.5 WPF app) installer needs WshShortcut_put_IconLocation
  35524  Adobe Audition 3.0 crashes on startup (GdipFillRectangles must validate graphics object parameter)
  35546  Microsoft .NET Framework 3.0 'servicemodelreg.exe' crashes during installation
  35565  Assassin's Creed 2: 'UbisoftGameLauncher.exe' needs msvcp90.dll.??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z
  35567  Xibo Player 1.4.x crashes on startup (WMI reports network adapter with IPEnabled=true and MACaddress=NULL)
  35569  Questrade IQ needs msvcr110.dll._libm_sse2_pow_precise
  35579  d3d8:visual test_scalar_instructions() fails on Windows
  35580  d3d8:device test_display_formats() fails on Windows 8
  35584  wine can no longer execute rm.com (DOS application)
  35588  Assassins Creed II fails installation fails at the end
  35601  Mediacoder crashes on start after transcoding audio
  35609  Menu popup failures in user32:msg on Windows XP
  35612  jscript:activex fails if the user does not have sufficient privileges
  35620  WatchGuard System Manager 11.8.1 crashes on unimplemented function wsnmp32.dll.SnmpStartup

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

Changes since 1.7.12:

Akihiro Sagawa (3):
      gdi32/tests: Mark Win2k result as broken.
      gdi32/tests: Improve the font search method for test_EnumFontFamiliesEx_default_charset.
      gdi32/tests: Avoid using GetGlyphIndices directly.

Alexandre Julliard (21):
      makefiles: Generate the testlist.c files at make depend time.
      makefiles: Add makefile variables for the winegcc parameters.
      user32: Use delayed imports to call the imm32 functions.
      winebuild: Generate position-independent code for ARM.
      ntdll: Fix printing formats for ARM registers.
      kernel32: Set correct binary type for COM and PIF files.
      widl: Ignore unknown -m target options.
      wrc: Ignore unknown -m target options.
      winebuild: Add support for -marm and -mthumb target flags.
      winegcc: Forward -marm and -mthumb options to winebuild.
      configure: Add the -marm option to the target flags.
      ntdll: Trace missing exception info on ARM.
      kernel32/tests: Add some tests for dll import resolution.
      ntdll: Don't fixup imports when a dll is already loaded.
      ntdll: Don't fixup imports for executables.
      ntdll: Move fixup_imports to avoid forward declarations.
      ntdll: Only allocate TLS data when resolving imports.
      makedep: Only add global includes to the include paths when generating the makefile.
      makedep: Look for source files only in the source directory.
      makedep: Generate .fon rules directly into the output instead of adding generated files.
      kernel32: Fix build on older Mac OS X.

Alistair Leslie-Hughes (4):
      dpnet/tests: Add DirectPlay8Server tests.
      dpnet/tests: Add IDirectPlay8Peer_EnumHosts tests.
      dpnet: Add DirectPlay8 registry keys.
      dpnsvr.exe: New stub program.

Andrey Gusev (3):
      Assorted typos fixes.
      odbccu32: Correct filename string.
      xinput1_4: Add version.rc file.

André Hentschel (1):
      gdiplus/tests: Remove assertions in graphics tests.

Aric Stewart (1):
      winemac.drv: Improve positioning of IME client window based on caret.

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

Austin English (3):
      wbemprox: Add a missing break (Coverity).
      riched20: Remove duplicate declaration.
      configure: Give a warning for missing gnutls.

Bruno Jesus (4):
      bcrypt: Add semi-stub implementation of BCryptGenRandom.
      ws2_32: Add AI_NUMERICSERV support.
      ws2_32: Fix edge case for getaddrinfo in BSD and OSX.
      ws2_32: Fix conversion of address in GetAddrInfoW.

Dmitry Timoshkov (36):
      xmllite/tests: Fix stack corruption in 64-bit builds.
      xmllite/tests: There is no need to initialize OLE.
      xmllite/tests: Add a test for short variant of xml declaration.
      cabinet/tests: Advance buffer by actually read bytes count.
      advapi32/tests: Add a test for page to access mapping performed by CreateFileMapping.
      kernel32: Fix page protection to access mapping performed by CreateFileMapping.
      advapi32/tests: Correct the test failure message.
      scrrun: Move the counter check into the code block where counter is actually incremented.
      scrrun: Fix a file enumeration handle leak.
      taskschd: Forward ITaskFolder::RegisterTask to IRegisterTask constructor.
      taskschd/tests: Add some ITaskDefinition tests.
      taskschd: Add ITaskSettings stub implementation.
      taskschd: Implement most of ITaskSettings get methods.
      advapi32/tests: Fix test failures under Windows 2000 and some XP versions.
      xmllite: Don't fail if encoding declaration is missing.
      xmllite: Don't fail if standalone declaration is missing.
      xmllite/tests: Add a test for names and values parsed from an XML declaration.
      xmllite: Reader should set starting string offsets when encoding is being parsed.
      xmllite: Don't fail the whole parsing process because of unsupported 'xmlns' attribute.
      xmllite: Add an import library.
      taskschd: Implement ITaskFolder::RegisterTask as a wrapper around ITaskFolder::RegisterTaskDefinition.
      taskschd: Add initial implementation of ITaskDefinition::put_XmlText.
      taskschd: Make ITaskSettings a part of ITaskDefinition implementation.
      taskschd: Implement ITaskDefinition::put_Settings.
      taskschd: Implement reading Settings of the task definition XML chunk.
      user32/tests: Flush pending events before testing menu messages.
      shlwapi: Return interface instead of implementation pointer.
      shlwapi: Avoid potential NULL pointer access if HeapAlloc fails.
      shlwapi: Avoid a not necessary intermediate variable.
      taskschd: Add IRegistrationInfo stub implementation.
      taskschd: Make IRegistrationInfo a part of ITaskDefinition implementation.
      taskschd: Delay creation of ITaskSettings until it's required.
      taskschd: Make ITaskDefinition a part of IRegisteredTask implementation.
      taskschd: Implement IRegisteredTask::get_Definition.
      taskschd: Implement IRegisteredTask::get_Xml.
      xmllite/tests: Add a test for parsing an empty element after XML declaration.

Erich Hoover (3):
      kernel32: Add support for security access parameters for named pipes.
      ddraw: Return a DLL in szDriver for GetDeviceIdentifier.
      ddraw: Return the D3D identifier when GetDeviceIdentifier is called with no flags.

François Gouget (8):
      inetmib1/tests: Add a trailing '\n' to an ok() call.
      dpnet/tests: Add a trailing '\n' to an ok() call.
      shell32/tests: Skip any test that needs the .shlexec association if we could not create it.
      ddraw/tests: Skip the primary palette tests if the 640x480x8 mode is not supported.
      atl/registrar: Skip the test_registrar() tests if we don't have elevated privileges.
      atl100/tests: Skip the test_regcat() tests if we don't have elevated privileges.
      ddraw/tests: Better clean up when skipping the primary palette tests.
      faultrep/tests: AddERExcludedApplication() fails if we have insufficient privileges.

Frédéric Delanoy (14):
      Assorted spelling fixes.
      propsys: Use BOOL type where appropriate.
      msvcrtd: Use BOOL type where appropriate.
      crypt32/tests: Use common wine_dbgstr_guid implementation from test.h.
      propsys/tests: Use common wine_dbgstr_guid implementation from test.h.
      dsound/tests: Use wine_dbgstr_guid for printing GUIDs.
      ole32/tests: Use wine_dbgstr_guid for printing GUIDs.
      setupapi: Use BOOL type where appropriate.
      msi: Fix typo in a field name.
      winhlp32: Use BOOL type where appropriate.
      mscoree: Use BOOL type where appropriate.
      mscoree/tests: Use BOOL type where appropriate.
      user32: Use BOOL type where appropriate.
      cabarc: Use BOOL type where appropriate.

Hans Leidekker (3):
      winhttp/tests: Fix a couple of test failures.
      winhttp/tests: Improve tracing.
      wbemprox: Don't list loopback network adapters.

Henri Verbeet (31):
      dxgi/tests: Cleanup test_output().
      dxgi/tests: Use D3D10CreateDevice() to create a device.
      dxgi/tests: Don't reuse the device.
      dxgi: Return DXGI_ERROR_INVALID_CALL when given a NULL mode_count in dxgi_output_GetDisplayModeList().
      dxgi: Properly check if the output array is large enough in dxgi_output_GetDisplayModeList().
      dxgi: Implement CreateDXGIFactory1().
      dxgi/tests: Add tests for CreateDXGIFactory().
      dxgi/tests: Also test for ID3D10Device1 and ID3D11Device in test_device_interfaces().
      d3d10core: Implement ID3D10Device1.
      d3d10_1: Implement D3D10CreateDevice1().
      d3d10core: Implement ID3D10Multithread.
      d3d8/tests: Accept some broken results in test_scalar_instructions().
      d3d10core: Implement d3d10_texture2d_GetDevice().
      d3d10core: Implement d3d10_texture3d_GetDevice().
      d3d10core: Implement d3d10_buffer_GetDevice().
      d3d10core: Implement d3d10_depthstencil_view_GetDevice().
      d3d10core: Implement d3d10_rendertarget_view_GetDevice().
      d3d10core: Implement d3d10_shader_resource_view_GetDevice().
      d3d10core: Implement d3d10_vertex_shader_GetDevice().
      d3d10core: Implement d3d10_pixel_shader_GetDevice().
      d3d10: Release depth stencil state references in d3d10_effect_variable_destroy().
      d3d10: Release blend state references in d3d10_effect_variable_destroy().
      d3d10: Release rasterizer state references in d3d10_effect_variable_destroy().
      d3d10: Release sampler state references in d3d10_effect_variable_destroy().
      d3d10core: Implement d3d10_sampler_state_GetDevice().
      d3d10core: Implement d3d10_blend_state_GetDevice().
      d3d10core: Implement d3d10_depthstencil_state_GetDevice().
      d3d10core: Implement d3d10_rasterizer_state_GetDevice().
      d3d10core: Implement d3d10_query_GetDevice().
      advapi32: Add a stub for EventProviderEnabled.
      d2d1: Add a stub D2D1CreateFactory() implementation.

Huw D. M. Davies (1):
      user32: If the listbox loses focus while holding capture, release it by essentially simulating a button up event.

Jacek Caban (35):
      wmp: Added SetClientSite implementation.
      wmp: Added SetClientSite tests.
      wmp: Added GetClientSite implementation.
      wmp.idl: Added proper version independent ProgID.
      wmp: Added missing registry entries for WindowsMediaPlayer coclass registration.
      wmp: Added GetMiscStatus implementation.
      wmp: Added IOleInPlaceObjectWindowless stub implementation.
      msxml3: Fixed qname leak.
      wmp: Added IConnectionPointContainer stub implementation.
      msxml3: Read stream data until Read fails or returns 0 bytes.
      urlmon: Added IsInternetESCEnabledLocal implementation.
      atl: Share atl_ax.c with atl100.
      atl: Share sources with atl100 instead of forwarding calls.
      atl: Moved AtlRegisterTypeLib to atl.c to avoid importing atl80.dll in atl.dll.
      urlmon: Unregister window class on DLL unload.
      atl: Renamed atl_main.c to atl30.c.
      atl: Moved source files from atl100 to atl directory.
      mshtml: Added IHTMLDocument2::get_activeElement implementation.
      mshtml.idl: Added IHTMLDocument7 and related interfaces declarations.
      mshtml: Use IWebBrowserPriv2IE9 instead of IWebBrowserPriv2IE8 in tests on IE9+.
      wmp.idl: Added some missing interfaces.
      jscript: Skip tests if we can't register ActiveX object.
      vbscript: Skip tests if we can't register ActiveX object.
      wscript: Skip tests if we can't register ActiveX object.
      d3d10_1.idl: Added D3D10CreateDevice1 declaration.
      d3d9.h: Added Direct3DCreate9Ex declaration.
      dxgi.idl: Added CreateDXGIFactory1 declaration.
      shell32/tests: Ensure that tmpdir contains long path name.
      mshtml: Added support for ZoomFactor registry value.
      wmp: Added IWMPPlayer4 stub implementation.
      wmp/tests: Fixed tests on old WMP versions.
      wmp: Added DoVerb(OLEIVERB_INPLACEACTIVATE) implementation.
      wmp: Added IOleObject::Close implementation.
      wmp: Added IOleInPlaceObject::GetWindow implementaiton.
      wmp: Added more tests.

Jactry Zeng (1):
      riched20/tests: Add tests to check the content open by ITextDocument_fnOpen.

Ken Thomases (10):
      d3d8/tests: Ignore broken CheckDeviceType() behavior on 64-bit Windows 8.
      d3d9/tests: Ignore broken CheckDeviceType() behavior on 64-bit Windows 8.
      kernel32: Check that sysctl() call succeeded before using its output.
      kernel32: Avoid truncating 64-bit ullTotalPhys value to 32 bits when copying to ullAvailPhys, ullTotalPageFile, and ullAvailPageFile.
      kernel32: Consolidate some duplicate variable declarations.
      kernel32: Prefer HW_MEMSIZE sysctl variable over HW_PHYSMEM, if available, since it's 64 bits.
      kernel32: Use sysctl(VM_SWAPUSAGE) to get swap sizes on BSDs, if available.
      kernel32: Use the Mach host_info(HOST_BASIC_INFO) API to obtain total RAM after trying sysctl(HW_MEMSIZE) and before HW_PHYSMEM.
      kernel32: Prefer the Mach host_statistics64(HOST_VM_INFO64) API over sysctl(HW_USERMEM) to obtain free memory.
      kernel32: Fix build on newer Mac OS X.

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

Marcus Meissner (1):
      oleaut32: Incorrect sizeof() to MultiByteToWideChar (Coverity).

Martin Storsjo (5):
      wined3d: Fix clamping in reading rectangular YV12 textures.
      wined3d: Fix the YV12 illustration.
      wined3d: Add support for NV12 textures.
      wined3d: Use an rbtree for storing shaders for texture format conversion/blitting.
      d3d9/tests: Add tests for different YUV texture layouts.

Matteo Bruni (10):
      d3dx9: Add some TRACEs and FIXMEs to D3DXCreateTextureFromFileInMemoryEx.
      d3dx9: Enforce minimum texture dimensions for block-based pixel formats.
      d3dx9: Trace DDS pixel format.
      d3dx9: Add missing trace to D3DXLoadVolumeFromFileInMemory.
      d3dx9: Handle pixel formats larger than 32 bits in surface loading / filtering functions.
      d3dx9/tests: Create A8L8 and DXTn textures instead of plain surfaces.
      d3dx9: Add some more float pixel formats.
      d3dx9: Allow loading float "FOURCC" DDS files.
      d3dx9/tests: Add a test for constant tables in FX20 shaders.
      d3dx9/tests: Use a valid version tag for the "empty" shader.

Michael Stefaniuc (6):
      qedit: IMemInputPin / IQualityControl are IPin stuff.
      qedit/tests: Expand the SampleGrabber COM tests.
      qedit: Return the correct iface in IEnumPins_QueryInterface().
      qedit/tests: COM tests for IEnumPins from SampleGrabber.
      strmbase: Return the iface instead of the object pointer.
      qedit: Use the generic BaseFilter implementation in SampleGrabber.

Nikolay Sivov (23):
      oleaut32: Add more tracing, hide initialization details by calling a method.
      oleaut32: Initialize result VARIANT in *FromDisp().
      comctl32/tab: Fix TCM_SETCURSEL on negative indices.
      wshom: Implement LocationPath property for shortcut.
      wininet: Update module version.
      mshtml: Implement HTMLStyleSheet_get_href().
      ole32: Use CoTaskMemAlloc() instead of IMalloc directly.
      ole32: Separate IIDFromString() for CLSIDFromString(), fix corner cases and return values.
      ole32: Use precomposed table for GUID from string conversion.
      ole32: Remove ERR() output that's not really helpful.
      kernel32/tests: Don't test last error when there's no failure.
      kernel32/tests: Fix some test failures in older XP/Win2k3 versions.
      msxml3: Implement addParameter() for XSLProcessor.
      include: Added ITransferSource/ITransferDestination interfaces.
      shell32/tests: Fix a test failure on Win8.
      comctl32/tests: Don't assert() on test failures.
      advapi32/tests: Accept another error code returned on some WinXP systems.
      msxml3: Pass XSL processor parameters to libxml2.
      oleaut32/tests: Some tests for record-based safearray copy.
      comctl32/tests: Some tests for Button control.
      oleaut32: Fix destination data release when copying FADF_RECORD arrays.
      oleaut32: No need to VariantClear() before VariantCopy().
      ole32/tests: Handle context generation failure better.

Piotr Caban (2):
      msvcrt/tests: Don't pass path containing spaces to _spawnvp.
      msvcrt: Return error on invalid handle in _open_osfhandle.

Stefan Dösinger (7):
      wined3d: Don't use NP2 repacking for RECT textures.
      wined3d: Reject height scaled repacked np2 textures.
      d3d9/tests: Clean up yuv_color_test.
      d3d9/tests: Skip YUV tests if the formats cannot be converted.
      d3d9/tests: Add a test for sub resource private data.
      d3d8/tests: Add a test for sub resource private data.
      ddraw/tests: Port test_private_data to ddraw4.

Vincent Povirk (1):
      gdiplus: Improve GdipFillRectangles parameter validation.

Ștefan Fulea (2):
      fonts: Add the missing Romanian diacritical letters to Tahoma Bold.
      fonts: Correct the bitmap parts of Romanian diacritical letters in Tahoma Bold.

--
Alexandre Julliard
julliard@winehq.org
