The Wine development release 1.7.15 is now available.

What's new in this release (see below for details):
  - New Task Scheduler service.
  - Many regression test fixes.
  - Support for exception unwinding in VBScript.
  - Various bug fixes.

The source is available from the following locations:

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

   5928  Timeless Time and Expense 3.0: bad fields in calendar/time entries
   8697  Visual Pinball : graphics is very messy
  13638  dogfood: xampp won't work properly
  20387  Seagate Crystal Reports 6 installer crashes due to incorrect ordinal numbering of 'odbccp32.dll' exports
  20623  Multiple VB6 apps complain with "Run-time error '445'" (Swiftkit, VMXBuider 0.8)(IFileSystem3::CreateTextFile method implementation needed)
  23448  F1 2000 and F1 Championship Season 2000 crash at startup
  23570  Cannot play songs using Songbird 1.4.3 and 1.7.3
  23930  Drakensang Dark Eye crash on start (needs D3DXCreateBox)
  26235  Pioneer DJs 1.6 hangs on startup (SetupDiEnumDeviceInterfaces needs to retain DeviceInterfaceData->cbSize upon reset)
  26339  MSXML, HTTPS GET don't work
  27060  Multiple applications need Network Configuration Component (netcfgx.dll) (iNodeSetup, CommView, Shan Xun 802.1x client)
  27307  Program Error - Program crashes on open
  27612  'Moorhuhn - Juwel der Finsternis' crashes on startup
  27831  Tic Tac Toe Game (vbscript) cannot be played (colon used for placing multiple statements on the same line in select case statements)
  27892  Iexplore blank page or binary
  28987  Some video files fail to play in Windows Media Player 9/10 (using native wmvcore/wmp dlls)
  29528  Google SketchUp 8 crashes on exit
  29679  Quicken 2012 aborts at startup.
  29785  Band-in-a-Box 2012 crashes on startup
  30043  Infinite loop in mshtml navigate
  30809  ConEmu: Fails to start cmd.exe
  31377  Symantec VIP Access no longer installs (needs WinMGMTS object stub)
  31423  AmiBroker fails on startup
  31437  Multiple applications and games need wmvcore.dll.WMCreateProfileManager (Tinker, Luxology Modo, aTube Catcher, iMesh 7.x)
  31724  SolidWorks Explorer 2012 fails to install, reporting 'Could not get typeinfo of hreftype 384 for VT_USERDEFINED, hr = 0x80004005'
  31968  Multiple applications need ITextStream get_AtEndOfStream method implementation (wPrime 2.09, SolidWorks Explorer 2014)
  31970  Microstation 8i installer doesn't work (needs VBScript GetObject implementation)
  32109  CorelDRAW 12 fails to install
  32161  IAudioClient should support IMarshal
  33191  installer of AliWangwang: some text can't be displayed normally
  34154  iTunes 7 does not install
  34536  3DMark06 crashes with native d3dx9_36.dll
  34717  Games GUI (Roller Coaster Tycoon 2) does not load anymore
  34815  iexplore hotmail.com needs IHTMLFrameBase::get_onload
  35110  LabChart Reader 8 installer ends prematurely (VBScript parser fails to recognize class variables declared with 'Dim' within class statement)
  35390  Samsung Magician v4.0 fails to install (SWbemLocator.ConnectServer method dispargs are optional)
  35445  CPCE v4.1 (Coral Point Count with Excel extensions, VB6 app) fails on startup (needs scrrun IFolder::get_Path)
  35530  fjords is very slow because of GetLocaleInfoW checking registry
  35575  gdi32:font Windows 8.1 failures (johab)
  35596  Multiple applications and games crash due to GetNumaHighestNodeNumber stub (64-bit ApexDC++, CrossFire-Downloader, Moorhuhn)
  35644  Spin Tires crashes with arb shaders
  35645  Sid Meier's Ace Patrol (Steam) crashes on unimplemented function msvcp110.dll._Xtime_get_ticks
  35705  Stability issues in certain games with recent Wine (maybe Nvidia driver related)
  35753  CURA 14.01 installed correctly but crashes when started
  35762  Tic Tac Toe Game (vbscript) cannot be played (parenthesis syntax for specifying arrays as function arguments)
  35769  Target attributes is ignored when submitting form
  35778  Samsung Magician v4.0 fails to install (widl emits incorrect var type for IDispatch* defaultvalue)
  35794  iTunes 7 installer aborts early (failure to find builtin 'RegExp' class)
  35799  Mortal Online (MMORPG) client 1.75.00.07 crashes on login (missing Win32_LogicalDisk WMI class 'VolumeSerialNumber' property)
  35803  Chessmaster Grandmaster Polish Edition installer crashes
  35806  Multiple VB6 apps complain with "Run-time error '445'" (Swiftkit)(ITextStream::WriteLine method implementation needed)
  35816  iTunes 7 installer aborts early ('Err' object 'Clear' and 'Number' methods are stubs)
  35819  "A Very Long Rope to the Top of the Sky" fails to start.

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

Changes since 1.7.14:

Akihiro Sagawa (4):
      gdi32: Improve the font enumeration order for complex script locales.
      version/tests: Add more VerQueryValueA tests.
      version: Don't convert binary version resource to ANSI texts.
      gdi32/tests: GetGlyphOutlineA is broken for johab charset on windows.

Alexandre Julliard (8):
      makedep: Add a helper function for concatenating paths.
      makedep: Pass the source directory as root for building documentation.
      c2man: Remove a possible path from the spec file name.
      configure: Always run makedep on the top-level makefile.
      user32/tests: Mark a failing test as todo.
      user32: Set the queue mask only after flushing the window surfaces.
      server: Restore the masks from the previous get_message when a wait is satisfied.
      user32/tests: Make a few more messages optional.

Alistair Leslie-Hughes (6):
      ntoskrnl.exe: Add stub MmLockPagableSectionByHandle.
      ntoskrnl.exe: Add stub MmUnlockPagableImageSection.
      ntoskrnl.exe: Add stub KeInsertQueue.
      include: Add netcfgx.idl.
      netcfgx: Implement DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServer.
      netcfgx: Register interfaces.

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

André Hentschel (1):
      gdi32/tests: GetCharABCWidthsA is broken for johab charset on windows.

Aric Stewart (2):
      imm32: Add IME_CMODE_FULLSHAPE to conversion mode.
      imm32: Set context conversion and sentence status.

Austin English (2):
      setupapi: Make sure DeviceInterfaceData->cbSize is initialized in SetupDiEnumDeviceInterfaces.
      kernel32: Improve GetNumaHighestNodeNumber stub.

David Quintana (2):
      comctl32: Fix horizontal separators in vertical toolbars.
      shlwapi: SHInvokeCommand last parameter is a command ID, or 0 to use the default.

Dmitry Timoshkov (13):
      schedsvc: Add Task Scheduler service.
      schedsvc: Implement SchRpcHighestVersion.
      schedsvc: Implement SchRpcCreateFolder.
      schedsvc: Implement SchRpcDelete.
      schedsvc: Implement SchRpcRegisterTask.
      schedsvc: Implement SchRpcRetrieveTask.
      taskschd: Implement ITaskService::get_HighestVersion.
      schedsvc: Mark service as auto-start once a task is registered.
      schedsvc: Replace external trace statements by internal versions.
      widl: Move is_ptr() and is_array() to header.h and make them inline.
      widl: Unify indentation of comments.
      widl: Move is_void(), is_declptr() and is_conformant_array() to header.h and make them inline.
      ntdll/tests: Always wait until the operation completes if returned status is STATUS_PENDING.

Eriks Dobelis (1):
      wintab32: Fix pkSerialNumber typo.

Frédéric Delanoy (9):
      cmd/tests: Correctly determine script path for root directories.
      cmd/tests: Don't use "@pwd@\" when expecting a full path.
      krnl386.exe16: Use BOOL type where appropriate.
      comctl32: Use BOOL type where appropriate.
      gdiplus: Use BOOL type where appropriate.
      user32/tests: Use BOOL type where appropriate.
      riched20: Use BOOL type where appropriate.
      urlmon/tests: Use BOOL type where appropriate.
      qcap: Use BOOL type where appropriate.

Hans Leidekker (4):
      shlwapi/tests: Fix test failures on Windows 8.
      wbemprox: Implement Win32_LogicalDisk.VolumeSerialNumber.
      mscms/tests: Fix test failures on Wine when color profiles are present.
      wbemprox/tests: Don't use infinite timeouts.

Henri Verbeet (40):
      user32: Fix TEXT_WordBreak() when no characters fit.
      gdi32/tests: Fix test_window_dc_clipping() when the virtual screen origin is not (0, 0).
      gdi32/tests: Fix test_device_caps() on multihead setups.
      ddraw/tests: Skip the overlay tests in test_block_formats_creation() if overlays are not supported.
      wined3d: Handle shader_arb_free_context_data() during context creation.
      wined3d: Only use a single allocation for each struct private_data.
      d3d9/tests: Move some stateblock tests to device.c.
      d3d8/tests: Move some stateblock tests to device.c.
      d3d9/tests: Don't share the D3D object either in visual.c tests that have their own device.
      d3d9/tests: Give add_dirty_rect_test() its own device.
      d3d9/tests: Use a separate device for volume_dxt5_test().
      d3d9/tests: Use a separate device for volume_srgb_test().
      d3d9/tests: Use a separate device for fog_special_test().
      d3d9/tests: Use a separate device for zenable_test().
      d3d9/tests: Use a separate device for multisample_get_rtdata_test().
      d3d9/tests: Use a separate device for update_surface_test().
      d3d9/tests: Use a separate device for srgbwrite_format_test().
      d3d9/tests: Use a separate device for depth_bounds_test().
      d3d9/tests: Use a separate device for fp_special_test().
      d3d9/tests: Use a separate device for shadow_test().
      d3d9/tests: Use a separate device for intz_test().
      d3d9/tests: Use a separate device for depth_blit_test().
      d3d9/tests: Use a separate device for depth_buffer2_test().
      d3d9/tests: Use a separate device for depth_buffer_test().
      d3d9/tests: Use a separate device for dp3_alpha_test().
      d3d9/tests: Use a separate device for alphareplicate_test().
      d3d9/tests: Use a separate device for texop_range_test().
      d3d9/tests: Use a separate device for texop_test().
      d3d9/tests: Use a separate device for multiple_rendertargets_test().
      d3d9/tests: Use a separate device for vpos_register_test().
      d3d9/tests: Use a separate device for vface_register_test().
      d3d9/tests: Use a separate device for pretransformed_varying_test().
      d3d9/tests: Use a separate device for nested_loop_test().
      d3d9/tests: Use a separate device for unbound_sampler_test().
      d3d9/tests: Use a separate device for dp2add_ps_test().
      d3d9/tests: Use a separate device for cnd_test().
      d3d9/tests: Use a separate device for constant_clamp_ps_test().
      d3d9/tests: Use a separate device for volume_v16u16_test().
      d3d9/tests: Use a separate device for x8l8v8u8_test().
      d3d9/tests: Use a separate device for texkill_test().

Jacek Caban (28):
      vbscipt: Use VariantCopyInd in exec_script.
      vbscript: Use VariantCopyInd in invoke_variant_prop.
      vbscipt: Allow ':' to be a separator in select case statement.
      vbscript: Added support for VARIANT references to interp_newenum.
      wmsdkidl.idl: Added some missing declarations.
      rpcndr.h: Don't redefine EXTERN_GUID if it's already defined.
      wmvcore: Added WMCreateProfileManager implementation.
      mshtml: Removed test failing on Windows 8.1.
      mshtml: Bind events not sent to default view to body element instead of directly to target.
      mshtml: Added IHTMLFrameBase2::onload property implementation.
      mshtml: Adder _parent target support to navigate_anchor.
      crypt32/tests: Improved test failure message.
      mshtml: Moved htmldoc5.c content into htmldoc3.c.
      mshtml: Merge htmldoc3.c into htmldoc.c.
      mshtml: Added IHTMLDocument7 stub implementation.
      mshtml: Skip tests depending on iframe onload event on IEs older than IE9.
      mshtml: Added support for target attribute in submit function implementation.
      vbscript: Allow empty brackets in argument declarations.
      mshtml: Fixed tests on old IEs and improved results on IE11.
      urlmon: Fixed sec_mgr.c tests failing on some recent Windows.
      vbscript: Allow creating RegExp object by new expression.
      jscript: Represent NULL VT_UNKNOWN VARIANT as NULL VT_DISPATCH.
      oleaut32: Fixed vartest.c tests on Windows 8.1.
      vbscript: Moved Error object implementation to global.c.
      vbscript: Added support for exception unwinding.
      vbscript: Added Err.Number implementation.
      vbscript: Added Err.Clear implementation.
      vbscript: Added error handling tests.

Jactry Zeng (2):
      include: Fix a typo in ITextServices method named TxGetCurTarget.
      riched20/tests: Fix a SysAllocString leak.

Ken Thomases (6):
      winex11: Don't leak client window and colormap when pixel format is changed.
      winemac: Make the window's contentView its firstResponder again after changing its style.
      winemac: Fix wglSwapBuffers() to operate on the HDC, not the current GL context.
      winemac: Make the swap interval a property of the window, not the context.
      winex11: Don't reset OpenGL swap interval of window on SetParent().
      winex11: Remove unused "parent" parameter from create_gl_drawable().

Marcus Meissner (5):
      crypt32: Fixed copy and paste error in engine creation (Coverity).
      msxml3: Mirror the NULL checking logic (Coverity).
      msi: Fixed missing free in an error path (Coverity).
      hhctrl.ocx: Free the correct buffer (Coverity).
      wtsapi32: Remove useless info free (Coverity).

Matteo Bruni (10):
      d3dx9: Fix a WARN.
      d3dx9/tests: Skip some volume tests if loading the texture fails.
      d3dx9/tests: Skip a test if DXTn texture formats are not supported.
      d3dx9/tests: Mark a test todo_wine when DXTn textures aren't supported by the GL driver.
      d3dx9: Correctly handle empty parameter data.
      d3dx9: Create shaders and strings.
      d3dx9: Store pointers to referenced parameters for "usage 1" resources.
      d3dx9: Parse "usage 2" effect resources.
      d3dx9: Split out set_matrix_transpose from set_matrix.
      d3dx9: Copy the entire matrix at once if there is no need of type conversions.

Michael Stefaniuc (11):
      dmcompos: COM cleanup for the IDirectMusicChordMap iface.
      dmcompos: Remove the extraneous IUnknown from DirectMusicChordMap.
      dmloader: None of the COM classes support aggregation.
      dmloader/tests: Centralize the skip().
      dmloader: Add COM tests for DirectMusicLoader.
      dmloader: Pass the object to the IDirectMusicContainer_Release helper.
      dmloader: Don't crash on container destruction if it was never loaded.
      dmloader/tests: Add COM tests for DirectMusicContainer.
      dswave: DirectSoundWave doesn't support COM aggregation.
      dswave/tests: Add COM tests for DirectSoundWave.
      dmloader/tests: Skip the tests if we don't have IDirectMusicLoader8.

Nikolay Sivov (32):
      msxml3: Remove dynamic properties support.
      msxml3/tests: Fixed some test failures.
      scrrun: Fix Next() for file collection.
      scrrun: Fix Skip() for file collection.
      scrrun/tests: Use a writable location for folder creation test.
      scrrun: Implement Skip() for drive collection.
      scrrun: Implement Count() property for drive collection.
      scrrun: Remove unneeded forward interface definitions from idl.
      widl: Fix duplicate typeinfo being written to typelib for enums.
      scrrun: Initialize find handle for file collection.
      wbemdisp: Specify default value for method arguments.
      scrrun: Implement Path() property for Folder.
      msi: Update feature selection bitmaps.
      msxml3: Respect stylesheet output mode when dumping resulting document.
      msxml3: Fix some test failures on Win8.1.
      scrrun: Implement CreateTextFile().
      winedump: Improve typelib header dumping.
      winedump: Output parameters and default values type for methods.
      widl: Fix default value types.
      msi: 'optional' only applies to VARIANT and VARIANT* types.
      scrrun: Implement WriteLine/Write for ITextStream.
      stdole2: Fix usage of 'optional' with 'defaultvalue'.
      idl: Remove 'optional' for 'defaultvalue' non-VARIANT arguments.
      scrrun: Implemented AtEndOfStream() property.
      user32: Added AddClipboardFormatListener/RemoveClipboardFormatListener stubs.
      kernel32: Added WerUnregisterMemoryBlock() stub.
      scrrun/tests: Update idl file in tests.
      wshom.ocx/tests: Update idl file in tests.
      msi: MsiInstaller coclass is not included in a typelib.
      msi: Update MsiServerMessage registration version to match module version.
      user32: Added ChangeWindowMessageFilterEx() stub.
      xmllite: Implement CreateXmlWriterOutputWithEncodingName().

Piotr Caban (7):
      ole32: Update reference counter of returned moniker in CreateGenericComposite.
      msvcrt: Improve tolower_l implementation.
      msvcrt: Improve tolower tests.
      msvcrt: Improve toupper_l implementation.
      msvcrt: Fix p__p___mb_cur_max tests.
      msvcrt: Don't add 0x prefix while printing 0 with printf.
      msvcp110: Add _Xtime_get_ticks implementation.

Qian Hong (2):
      user32/tests: Skip more winstation tests when no enough privileges.
      netapi32: Add stub for NetScheduleJobDel.

Rico Schüller (1):
      d3dx9/tests: Check if D3DFMT_X1R5G5B5 is supported.

Sebastian Lackner (3):
      shell32: Register user administrative tools shell folder.
      ntdll: Fix possible race-condition in iocp poller code.
      ntdll: Use condition variable for RtlQueueWorkItem implementation.

Stefan Dösinger (21):
      wined3d: Don't modify existing data if set_private_data fails.
      d3d9/tests: Show that a failing SetPrivateData call does not clear the old contents.
      d3d8/tests: Show that a failing SetPrivateData call does not clear the old contents.
      ddraw/tests: Show that a failing SetPrivateData call does not clear the old contents.
      wined3d: Correctly handle the size parameter in get_private_data.
      d3d9/tests: Use a custom GUID for the private data tests.
      d3d9/tests: Test GetPrivateData size behavior.
      d3d8/tests: Use a custom GUID for the private data tests.
      d3d8/tests: Test GetPrivateData size behavior.
      wined3d: Decouple private data from the resource structure.
      wined3d: Free old data after addrefing the new one.
      ddraw: Use the new private store api.
      ddraw/tests: Test GetPrivateData size behavior.
      ddraw/tests: Add mipmap private data tests.
      ddraw/tests: Use a custom GUID for the private data tests.
      wined3d: Remove the version parameter.
      d3d8: Introduce a resource structure.
      d3d8: Use the private store api for buffers.
      d3d8: Use the private store api for volumes.
      d3d8: Use the private store api for textures.
      d3d8: Use the private store api for surfaces.

Stefan Leichter (1):
      odbccp32: Add ordinals to spec file.

Vincent Povirk (7):
      user32/tests: Add a test for empty popup menus.
      user32/tests: Put some menu items in the test_menu_trackagain menu.
      user32/tests: Add message tests for TrackPopupMenu.
      user32: Create popup menu windows before WM_ENTERMENULOOP.
      gdiplus: Account for negative height/width in GdipDrawImagePointsRect.
      gdiplus: Fix an overzealous optimization.
      tapi32: Stub lineOpenW.

Zhenbo Li (5):
      mshtml: Added IHTMLTableRow::align property implementation.
      mshtml: Added IHTMLTableRow::vAlign property implementation.
      mshtml: Added IHTMLTableRow::rowIndex property implementation.
      mshtml: Added IHTMLTableRow::sectionRowIndex property implementation.
      mshtml: Added IHTMLTable::align property implementation.

--
Alexandre Julliard
julliard@winehq.org
