The Wine development release 1.5.26 is now available.

What's new in this release (see below for details):
  - OpenGL support in the Mac driver.
  - Clipboard and drag&drop support in the Mac driver.
  - Improvements to the URL cache.
  - Some fixes for ARM binaries.
  - SPARC platform no longer supported.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.26.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.26.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.5.26 (total 49):

   1886  windows media player 9 setup fails while registering Portable Media Serial Number Service
   9548  pxtone: Can't save new project files (*.ptcop), or *.pttune
  11342  NFS3 demo version does not uninstall
  12832  Propellerheads reason 4 works a lot slower than on WinXP
  13155  msvideo problems when running M1.EXE
  13194  Gordian Knot unable to open codec settings dialog
  14140  Entropia Universe installer hangs
  14421  Wing Commander 3 Kilrathi saga edition. Sound Stutters on movie playback
  16263  Priority: Survive game window flickers
  16975  [StrongDC++] switching between tabs show background windows
  17680  nhOneClick: Authorization required message on some HTML pages
  20637  3DMark 2000, 2001SE - no result of last test
  21655  MacOS: broken mixing in dsound8 tests + assertion failure
  22793  JumpGate: The Reconstruction Initiative glitches badly.
  23100  BURRACO: startup error and then closing connection (needs mshtml.HTMLElement2_insertAdjacentElement impl)
  27003  Latest gnutls breaks wine ssl support
  27210  MCM2: wineqtdecoder crashes after intro
  27320  sims3 crashes after a while in wined3d
  27466  Listview redraw is broken
  27854  Listview: custom draw code overwrites text background color when it shouldn't (it seems)
  27855  entry field in Quicken98-2002 follows keys rather than filling out field
  28039  IAudioClock_GetPosition must ignore underruns (MacOS)
  28723  Sound stutter in Rage when emulated windows version is set to "Windows 7" (XAudio2 -> mmdevapi sound output path)
  28856  Crackling/popping sounds in Starcraft 2 (PulseAudio)
  29274  Steam on Mac - mic test fails and crashes Counter Strike 1.6
  30071  Need a CreateTimerQueueTimer that is stable over time
  30591  Houdini 12.x (3D animation tool) crashes due to unimplemented function msvcrt.dll.__pxcptinfoptrs in "purist" mode (builtin msvcr90)
  31383  Might and Magic Heroes crashes with GL_INVALID_OPERATION
  31920  ComboBox in a program written with Delphi is shown incorrectly
  32276  Railworks 3 2013 Trainsimulator glsl errors.
  32302  Endless Space >=1.0.25: crash during advanced game
  32427  Delphi listview: wrong font when using custom draw
  32541  Endless Space crashes when activating certain options in the menu
  32766  Multiple applications ported to WinRT/ARM require msvcr110.dll (Miranda IM)
  32960  Unimplemented function user32.dll.UserHandleGrantAccess
  33045  Bunch of Heroes freezing on start at the beginning of the intro video
  33054  Enterprise Architect 10 fails to load EAExample.eap poject
  33083  Magic: The Gathering Online Wide Beta installer crashes with X error
  33090  Apache Flex SDK Installer: can not access file system.
  33102  Drakensang exits with error messages
  33110  AudioSurf crash on start
  33144  DnsQuery_A API returns DNS_ERROR_BAD_PACKET when querying for MX records.
  33151  .NET 2.0 program crashes eInvalidOperationException on startup mscorwks
  33152  GetAdaptersAddresses reports incorrect address family for IPv4 addresses
  33168  Disciples: Sacred Lands crashes on start
  33169  Total Annihilation : Kindoms crashes
  33197  Multiple applications ported to WinRT/ARM using msvcr110.dll require some msvcrt math functions (Audacity)
  33198  Multiple applications ported to WinRT/ARM using msvcr110.dll require msvcrt.setjmp
  33200  AliWangwang: needs unimplemented function atl100.AtlSetPerUserRegistration

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

Changes since 1.5.25:

Akihiro Sagawa (2):
      msvcrt/tests: Add _wcstoi64/_wcstoui64 tests.
      msvcrt: Fix incorrect casts in _wcstoi64_l and _wcstoui64_l.

Alessandro Pignotti (4):
      strmbase: Remove code duplicated by every user of ISeekingPassThruImpl.
      qedit: Implement IMediaSeeking and IMediaPosition in sample grabber.
      quartz: The filter graph manager should handle GetCurrentPosition itself.
      strmbase: Frame scheduling should use IMediaSample::GetTime.

Alexandre Julliard (22):
      vbscript: Tweak enum macros to avoid confusing winapi_extract.
      gdi32: Store the font stat information when loading it.
      gdi32: Increment the face refcount when loading the same font file multiple times.
      winex11: Explicitly set the border pixel when creating the client window.
      winex11: Wait for the client window to be created on the server side.
      server: Use socklen_t where appropriate.
      ws2_32: Use socklen_t where appropriate.
      winedbg: Use socklen_t where appropriate.
      winhttp: Always pass a ULONG variable to ioctlsocket.
      wininet: Always pass a ULONG variable to ioctlsocket.
      vbscript: Return after assert(0) to silence warnings.
      jscript: Return after assert(0) to silence warnings.
      exception.h: Android doesn't have sigsetjmp.
      winefile: Pass a value instead of a pointer to avoid type mismatch warnings.
      msi: Avoid intermediate variables when calling create_record.
      msvcrt: Export the ARM version of some mangled names.
      msvcrt: Export the float math functions on ARM.
      msvcrt: Use -arch=i386 everywhere for consistency.
      msvcrt: Synchronize spec files.
      ntdll: Copy some missing math functions from msvcrt.
      ntdll: Copy some missing string functions from msvcrt.
      ntoskrnl: Synchronize spec file with ntdll and msvcrt.

Alistair Leslie-Hughes (3):
      msxml3: Add xmlns attribute test.
      msxml3: Implement IXMLParser Get/Set Factory.
      msxml3: Implment IXMLParser SetInput.

Andrew Eikum (3):
      winmm/tests: Add another valid return code.
      winmm: Truncate buffers to align to frame size.
      winmm/tests: Add tests for non-block-aligned fragment sizes.

Andrew Talbot (16):
      winealsa.drv: Avoid signed-unsigned integer comparisons.
      windowscodecs: Avoid signed-unsigned integer comparisons.
      mscoree: Remove unneeded address-of operator from function name.
      wineps.drv: Avoid signed-unsigned integer comparisons.
      wined3d: Avoid signed-unsigned integer comparisons.
      winhttp: Avoid signed-unsigned integer comparisons.
      winex11.drv: Avoid signed-unsigned integer comparisons.
      xmllite: Avoid signed-unsigned integer comparisons.
      wsock32: Avoid signed-unsigned integer comparisons.
      ws2_32: Avoid signed-unsigned integer comparisons.
      msvcp60: Avoid signed-unsigned integer comparisons.
      joy.cpl: Avoid signed-unsigned integer comparisons.
      dwrite: Avoid signed-unsigned integer comparisons.
      msvcp71: Avoid signed-unsigned integer comparisons.
      wininet: Avoid signed-unsigned integer comparisons.
      user32: Avoid signed-unsigned integer comparisons.

André Hentschel (17):
      winetest: Remove SPARC support.
      dbghelp: Remove SPARC support.
      kernel32/tests: Remove SPARC support.
      ntdll: Remove SPARC support.
      server: Remove SPARC support.
      winedbg: Remove SPARC support.
      widl: Remove SPARC and Alpha support.
      winegcc: Remove SPARC support.
      winebuild: Remove SPARC support.
      winedump: Remove SPARC support.
      libport: Remove SPARC support.
      winapi: Remove SPARC support.
      include: Remove SPARC support.
      winecrt0: Android NDK doesn't have _init and _fini.
      ntdll: Unify the usage of internal SIGCONTEXT type on ARM and ARM64.
      winebuild: Remove get_asm_short_keyword.
      msvcrt: Add setjmp for ARM in spec file.

C.W. Betts (1):
      winemac: Fix compilation on Lion and later.

Daniel Jelinski (6):
      comctl32/imagelist: Fixed merging of images without mask.
      comctl32/listview: Fix font handling in custom draw.
      comctl32/listview: Fix custom draw prepaint handling.
      comctl32/listview: Correct sending NM_CUSTOMDRAW to subitem 0.
      comctl32/imagelist: Use proper color format for merged image lists.
      comctl32/listview: Fix overwriting of item values.

Detlef Riekenberg (1):
      kernel32/tests: Fix failures with virtual Drives (AppVirt Client).

Dmitry Timoshkov (13):
      Revert "gdiplus: Add support for StringFormatFlagsNoClip.".
      gdiplus: GdipDrawString should not clip the string if StringFormatFlagsNoClip is specified.
      gdiplus: Add some tests for string format alignment.
      windowscodecs: Add a test for palette of a PNG image with PLTE and tRNS chunks.
      windowscodecs: Add a comment to PNG decoder that Windows ignores CRC of the chunks.
      windowscodecs: Ask libpng to ignore CRC of PNG chunks.
      windowscodecs: Fix handling of a tRNS PNG chunk in the frame CopyPalette method.
      gdiplus: Print a passed in rectangle in GdipCombineRegionRect.
      gdiplus: Protect from mixing BrushTypeLinearGradient and BrushTypePathGradient.
      gdiplus: Ignore gdiplus page and world transformations when creating a gdi32 clipping region.
      gdiplus: Add more GdipMeasureString/GdipMeasureCharacterRanges clipping and alignment tests.
      gdiplus: GdipMeasureCharacterRanges shouldn't add margins to string bounds.
      gdiplus: GdipMeasureCharacterRanges should treat empty layout extents as infinite when StringFormatFlagsNoClip is specified.

Filip Navara (1):
      iphlpapi: Use prefixed WS_ structures to avoid misalignment on OS X builds.

Francois Gouget (8):
      gdiplus/tests: Skip the tests if unable to load the TIFF image.
      mshtml/tests: Make test_insert_adjacent_elems() static.
      inetcomm: Make mimebody_create() static.
      msvcrt: Remove WINAPI on static functions where not needed.
      qcap: Fix compilation on systems that have v4l1 but not VIDIOCMCAPTURE & co.
      d3dx9_34: Add a space between the spec entry name and the implementation function.
      msxml3/tests: Make test_xmlns_attribute() static.
      msvcr110: Remove an unused debug channel.

Frédéric Delanoy (1):
      vbscript: Specify correct variable in memory allocation check (coverity).

Hans Leidekker (9):
      winhttp: Use symbolic constants for HTTP status codes.
      winhttp: Add a helper to retrieve the redirect URL.
      winhttp: Implement WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP.
      winhttp: Make sure to clear response headers from a previous request.
      wininet: Port resolution doesn't depend on the secure flag.
      winhttp: Make the first parameter of resolve_hostname const.
      user32: Add a stub implementation of UserHandleGrantAccess.
      dnsapi: Increase maximum packet size.
      winhttp: Implement WINHTTP_OPTION_CONNECTION_INFO.

Huw Davies (1):
      usp10: Don't read past the end of the context_type array.

Jacek Caban (38):
      jscript: Added jsstr_substr helper and use it in String object implementation.
      jscript: Use jsstr_substr in jsregexp.c where possible.
      wininet: Use secure variable instead of ssl_s handle in a few more places.
      jscript: Added jsstr_flush helper and use it in array_join.
      jscript: Use jsstr_flush in Error_toString.
      jscript: Use jsstr_flush in construct_function.
      jscript: Use jsstr_flush in jsstr_concat.
      jscript: Use jsstr_flush in jsval_to_variant.
      jscript: Use jsstr_flush in variant_change_type.
      jscript: Use jsstr_flush in String_concat.
      jscript: Reimplemented do_attributeless_tag_format without direct access to object's string buffer.
      jscript: Reimplemented do_attribute_tag_format without direct access to object's string buffer.
      jscript: Use (index,length) pair as match result.
      jscript: Use jsstr_flush in literal_as_bstr.
      urlmon: Fixed handling binding reading immediately from cache.
      urlmon: Added HTTP cache reading tests.
      wininet: Fixed crash in chunked_read if netconn is not available.
      jscript: Pass msg as jsstr_t to create_error.
      jscript: Reuse static instance of 'undefined' string.
      jscript: Avoid direct access to string buffer in a few more places.
      urlmon: Fixed some test failures on IE10.
      wininet: Don't pass expected cache file size to CreateUrlCacheEntry if it's unknown.
      wininet: Added a test of request reading from cache.
      wininet: Skip test_open_url_async on IEs older than 7.
      jscript: Use BSTR also for pure IDispatch call in disp_delete_name.
      jscript: Use BSTR also for pure IDispatch call in disp_get_id.
      jscript: Use BSTR also for pure IDispatch call in Object.hasOwnProperty.
      winnt.h: Added GCC variant of DEFAULT_UNREACHABLE macro.
      vbscript: Use DEFAULT_UNREACHABLE macro where appropriate.
      jscript: Use DEFAULT_UNREACHABLE macro where appropriate.
      msctf.idl: Added ITfContextOwnerServices declaration.
      mshtml.idl: Added IHTMLButtonElement and DispHTMLButtonElement declarations.
      mshtml: Added IHTMLButtonElement stub implementation.
      wininet: Use parsed status_code to test for CONTINUE HTTP response.
      mshtml: Don't use getElementsByTagNameNS in IHTMLDocument3::getElementsByTagName implementation.
      mshtml: Use lazy allocation for connection points.
      mshtml: Added HTMLElementEvents2 support.
      mshtml: Added HTMLElementEvents2 tests.

Jactry Zeng (1):
      atl100: Added AtlSetPerUserRegistration stub implementation.

Jeff Muizelaar (1):
      dbghelp: Store the vendor id in the correct order.

Jörg Höhle (3):
      winmm: Don't log the uninitialised MCI output buffer in case of error.
      mmsystem: MIDIHDR.dwOffset exists since Win 32 only, not in 16 bit code.
      winmm: Fix GetPosition when using MSACM codecs.

Ken Thomases (28):
      winemac: Fail gracefully and early when run from a non-GUI session.
      winemac: Implement OpenGL support.
      winemac: Implement WGL_ARB_make_current_read.
      winemac: Implement WGL_ARB_pixel_format and enable dependent extensions.
      winemac: Implement WGL_ARB_pbuffer.
      winemac: Implement WGL_ARB_render_texture.
      winemac: Implement WGL_NV_render_texture_rectangle.
      winemac: Implement WGL_EXT_swap_control.
      winemac: Improve handling of "invert" pixels in monochrome cursors.
      winemac: Don't defer attaching OpenGL context to view if it is backed by a window device.
      winemac: Override -[NSOpenGLContext clearDrawable] to not hide the GL surface.
      winemac: Implement CountClipboardFormats() with support for text formats.
      winemac: Implement IsClipboardFormatAvailable() with support for text formats.
      winemac: Implement EnumClipboardFormats() with support for text formats.
      winemac: Implement GetClipboardData() with support for text formats.
      winemac: Implement setting of clipboard data with support for text formats.
      winemac: Add support for "query" events which wait for synchronous responses.
      winemac: Add support for delay-rendered (a.k.a. promised) clipboard data.
      winemac: Add clipboard formats which can or must be put on Mac pasteboard without transformation.
      winemac: Add support for CF_DIB and CF_BITMAP clipboard formats.
      winemac: Synthesize additional bitmap pasteboard types from any that Cocoa can convert.
      winemac: Add support for CF_HDROP clipboard format, mapped to/from Cocoa's NSFilenamesPboardType.
      winemac: Allow for processing Cocoa events while waiting for query results.
      winemac: Enable pasteboard functions to operate on arbitrary pasteboards.
      winemac: Extract new function from macdrv_GetClipboardData() parameterized by the target pasteboard.
      winemac: Extract new function from macdrv_IsClipboardFormatAvailable() parameterized by the target pasteboard.
      winemac: Extract new function from macdrv_EnumClipboardFormats() parameterized by the target pasteboard.
      winemac: Implement support for drag-and-drop.

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

Marcus Meissner (2):
      msxml3: Initialize hr (Coverity).
      quartz: Free wszPatternString (Coverity).

Michael Stefaniuc (14):
      inetcomm: COM cleanup for the IMimeMessage iface.
      inetcomm: Pass the object instead of an iface to a helper function.
      inetcomm: COM cleanup for the IMimeSecurity iface.
      inetcomm: Use a static interface instance for IMimeAllocator.
      inetcomm: COM cleanup for the IMimeBody iface.
      inetcomm: Include the object instead of IMimeBody in struct body_t.
      inetcomm: COM cleanup for the IStream iface.
      mpr: Use offsetof for the size of structs with varlen arrays.
      avifil32: COM cleanup for the IAVIFile iface.
      avifil32: Merge and cleanup the IPersistFile iface.
      avifil32: Avoid forward declaration of IAVIFile/IPersistFile methods.
      avifil32: Support COM aggregation for AVIFile.
      avifil32/tests: Add COM tests for AVIFile.
      kernel32: Avoid TRUE FALSE conditional expressions.

Nikolay Sivov (14):
      msxml3: Filter unsupported child nodes in insertBefore() for elements.
      msxml3: CDATA nodes can't have children.
      xmllite: Support pending input reads for PI nodes.
      xmllite: Support resuming for start tag.
      xmllite: Actually resume comment and PI parsing while on Misc part.
      xmllite: Support CDATA nodes.
      xmllite: Support resuming to comments and PIs while on Content part.
      xmllite: Make another read attempt if we don't have enough data initially.
      xmllite: Fix a test failure on Windows 8.
      msxml3: Added a simple test for CDATA processing with SAX reader.
      msxml3: Fix some test failures on Windows 8.
      msxml3: Process CDATA section before reporting it.
      msxml3: Use characters callback helper in one more place.
      xmllite: Implement ReadValueChunk().

Nozomi Kodama (2):
      d3dx9: Implement D3DXSHEvalConeLight.
      d3dx9: Save multiplications for better performance.

Petr Kočandrle (2):
      po: Completed WineMine Czech translation.
      po: Completed winecfg and clock Czech translation.

Piotr Caban (22):
      msvcrt: Don't duplicate standard handles during initialization.
      msvcrt: Reuse standard file descriptors after closing them.
      msvcrt: Added stdin close/open tests.
      msvcrt: Rename msvcrt_alloc_fd_from to msvcrt_set_fd.
      msvcrt: Don't set unhandled exception filter, XcptFilter is responsible for handling signals.
      msvcrt: Added __pxcptinfoptrs implementation.
      msvcrt: Added __pxcptinfoptrs tests.
      msvcr90: Check more fields in _getptd tests.
      ieframe: Pass BSTR to handle_navigation_error.
      wininet: Improved urlcache debug traces.
      wininet: Cleanup and optimize URLCacheContainer_OpenIndex function.
      wininet: Added better urlcache index file validation on first open.
      wininet: Rename URLCacheContainer_* functions to cache_container_*.
      cryptnet: Lock cache file while accessing it.
      cryptnet: Open file with FILE_SHARE_READ flag in File_RetrieveEncodedObjectW.
      cryptnet: Don't ignore HttpEndRequestW error in HTTP_RetrieveEncodedObjectW.
      wininet: Don't create cache file if it's forbidden.
      wininet: Test if cache entry is created when INTERNET_FLAG_NO_CACHE_WRITE flag is used.
      wininet: Added tests for Cache-Control: no-cache and no-store HTTP headers.
      wininet: Rename CACHEFILE_ENTRY to entry_header.
      wininet: Rename URL_CACHEFILE_ENTRY to entry_url.
      msvcrt: Limit access to out buffer in fread function.

Sergey Guralnik (1):
      user32: Use window height/width instead of client for combo resizing.

Stefan Dösinger (3):
      ddraw/tests: Use a TnLHal device only if supported in ddraw7 tests.
      ddraw/tests: Use a software VP device in test_surface_interface_mismatch.
      ddraw/tests: Use hardware VP only if available in the visual tests.

Stefan Leichter (1):
      msvcr110: Add VS2012 C/C++ runtime.

Tijl Coosemans (1):
      winebuild: Don't register cleanup function when --save-temps is passed after --output.

Vincent Povirk (4):
      gdiplus: Store the image type on a Graphics object in case the image is freed.
      gdiplus: Fix GdipCreateBitmapFromGraphics implementation.
      gdiplus: Also get a DC for drawing WMF images.
      gdiplus: Correct EMF record size calculation.

Volkan Gezer (1):
      po: Updated Turkish translation.

--
Alexandre Julliard
julliard@winehq.org
