The Wine development release 1.5.19 is now available.

What's new in this release (see below for details):
  - Performance improvements in the DIB engine.
  - More fleshed out XML-lite implementation.
  - Some more C++ runtime functions.
  - Various bug fixes.

The source is available from the following locations:

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

   9612  Silent Hunter III: Crashes on loading a savegame at sea (dsound causing out of memory condition)
  11073  crash in cmd.exe with lib.exe (VC++6.0)
  13828  Direct3D only shows garbage when rendering to a child window on intel
  16761  Supreme Commander: No audio at default sample rate/with full audio hardware acceleration
  19668  cmd /c doesn't wait for result before exiting?
  20561  GRLEVEL2: Radar is offset in the upward direction making sampling incorrect.
  21747  Pausing Pikachu Volleyball and opening menus disrupts fade-in/fade-out effects
  24020  League of Legends / Pando downloader can't use its bundled MSVCP90
  25738  cmd.exe: enclosing quoting of builtin command and parameters confuses cmd.exe (Windows PowerShell 2.0 installer)
  26003  In Magicka, certain polygons can stretch across the map and track the player.
  27088  Microsoft Product Support Reporting Tool 6 (32-bit) doesn't detect somethings
  27290  When CreateFileW receives invalid filename it crashes
  27564  Dungeons and Dragon Launcher crashes
  28645  Classic Shell installer fails to extract setup file
  30922  iexplore http://html5test.com/ says Javascript is not enabled
  31024  w3schools ajax examples don't work in iexplore
  31335  __RTDynamicCast (aka dynamic_cast<>) broken on win64?
  31863  d3d8/device.c, d3d9/device.c: tests fail on nVidia chip
  31892  Handle failure to reserve NT shared user data at 0x7ffe0000 (Windows on ARM)
  31981  Microsoft SQL Server 2005 Express Edition: SQL Server System Configuration Checker fails (needs lanmanserver service registry values)
  32031  Adobe Acrobat Professional XI needs msvcp100.dll.??0_Container_base12@std@@QAE@XZ
  32038  Europa Universalis III demo needs msvcp60.dll.?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z
  32042  Port Royale needs msvcp60.dll.??1?$collate@G@std@@UAE@XZ  (purist)
  32185  Bug in BasePinImp_GetMediaType()
  32241  Installer of Creo 2.0 Parametric Free Trial needs msvcp100.dll.?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z
  32277  No sound in Star Wars: Knights of the Old Republic
  32289  Dr.com client hangs at start after clicking on any area of the application
  32292  Railworks 3 Trainsimulator 2013 crashes in OleDraw
  32295  WinUAE emulation window not refreshed properly when other windows move in front of it
  32300  Winecfg applications tab displays apps on one line & they cannot be selected
  32305  Dr.com response slowly when clicking on menu
  32309  TeamViewer-7.0.9377 crashes on start
  32327  Office 2010, Visio 2010 Std installers fail
  32366  Moving objets in Circuitmaker 2000 schematic is delayed (slowed down)
  32367  Mezzmo fails to start due to unimplemented function MSVCR80.dll._encode_pointer
  32381  QQ2012 crashes at start

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

Changes since 1.5.18:

Akihiro Sagawa (1):
      winmm: Fix handling of mmio file buffers.

Alexandre Julliard (34):
      setupapi: Fix total size when appending multi-string values.
      user32: Send WM_MOVING instead of WM_SIZING when moving a window.
      server: Don't expose the desktop on window resizes.
      gdi32: Fully reset the DC state before deleting it.
      user32: Fix handling of NULL paint struct in BeginPaint.
      gdi32: Add a font glyph cache in the DIB engine.
      winex11: Don't bother waiting for XShmPutImage to finish.
      setupapi: Load IRegistrar from atl100.dll.
      gdi32: Add faster implementations of the solid_rects primitive for the common case of R2_COPYPEN.
      gdi32: Add assembly helpers for filling solid rectangles.
      gdi32: Add faster implementation of the pattern_rects primitive when we don't need an AND mask.
      gdi32: Avoid creating a copy of the pattern bits for the R2_COPYPEN case.
      gdi32: Make blend_subpixel inline.
      gdi32: Use the faster memset for vertical gradients.
      gdi32: Avoid computing grayscale glyph intensities when not needed.
      user32: Refresh the desktop when the wallpaper is changed.
      winex11: Store a copy of the surface region.
      winex11: Fall back to normal expose processing for areas outside of the surface region.
      gdi32: Avoid binary ROPs when stretching in DELETESCANS mode.
      gdi32: Avoid binary ROPs when shrinking in DELETESCANS mode.
      gdi32: Don't copy unnecessary rows when shrinking in DELETESCANS mode.
      configure: Building the tools requires include/config.h.
      gdi32: Store and return ABC metrics from get_glyph_outline.
      user32: Ignore the PM_NOYIELD flag on the client side.
      winex11: Support caching glyphs by character code and not only by glyph index.
      gdi32: Support caching glyphs by character code and not only by glyph index.
      gdi32: Support getting character codes instead of glyphs in ExtTextOut for the path driver.
      wineps: Support getting character codes instead of glyphs in ExtTextOut.
      gdi32: Remove special handling for linked fonts in ExtTextOut.
      gdi32: Don't create a separate font handle for linked fonts.
      gdi32: Don't store a font pointer in the generic part of the DC.
      wined3d: Call wglSwapBuffers through the GL driver function table.
      gdi32: Simplify list processing by using the LIST_FOR_EACH_ENTRY macro.
      gdi32: Keep track of the number of fonts on the unused list.

Alistair Leslie-Hughes (2):
      include: Add IGlobalOptions interface.
      oleaut32: Fail if we cannot find the TYPELIB resource.

Andrew Eikum (6):
      winealsa.drv: Improve IsFormatSupported handling.
      winecoreaudio.drv: Convert some OSStatus errors to HRESULT.
      winecoreaudio.drv: Improve IsFormatSupported handling.
      wineoss.drv: Improve IsFormatSupported handling.
      winmm: Don't mask out SND_ALIAS_ID or SND_FILENAME in sndPlaySound.
      urlmon: Out string parameter should be ptr, not wstr.

Andrew Talbot (34):
      printui: Remove unused variable.
      opengl32: Remove unused variable.
      ntprint: Remove unused variable.
      inkobj: Remove unused variable.
      imagehlp: Remove unused variable.
      xmllite: Void functions should not return a value.
      msvcp100: Remove superfluous semicolons.
      msvcp90: Remove superfluous semicolons.
      msvcp71: Remove superfluous semicolons.
      msvcp60: Remove superfluous semicolons.
      wineps.drv: Remove unused variable.
      sensapi: Remove unused variable.
      netapi32: Remove unused variable.
      gdiplus: Remove superfluous braces.
      wtsapi32: Remove unused variable.
      winscard: Remove unused variable.
      winex11.drv: Remove unused variable.
      uxtheme: Remove unused variable.
      shdocvw: Remove unused variable.
      ws2_32: Remove unused semicolon.
      winspool.drv: Remove unused semicolons.
      msvcp100: Remove unused semicolons.
      msvcp90: Remove unused semicolons.
      msvcp71: Remove unused semicolons.
      msvcp60: Remove unused semicolons.
      hhctrl.ocx: Constify some variables.
      mmsystem.dll: De-constify a variable.
      user32: Do not call HeapFree() with address of stack memory.
      hhctrl.ocx: Remove unneeded address-of operators from array names.
      gdiplus: Remove unneeded address-of operator from array name.
      comctl32: Remove unneeded address-of operators from array names.
      windowscodecs: Remove unneeded address-of operators from array names.
      user32: Remove unneeded address-of operator from array name.
      urlmon: Remove unneeded address-of operator from array name.

André Hentschel (11):
      include: Add more CV constants.
      ntdll: Exit when we can't map the shared user data.
      kernel32/tests: Fix crash on win8 in module.
      kernel32/tests: Fix crashes on win8 in console.
      ntdll/tests: Fix check for PAGE_READWRITE.
      winemaker: Output UTF-8 Makefiles.
      psapi/tests: Fix test on win8.
      wintrust/tests: Unify test message in case of a FALSE return.
      winedbg: Add load/str multiple operators to Thumb2 disassembler.
      schannel/tests: Fix test on win8.
      secur32/tests: Fix tests on win8.

Aric Stewart (1):
      user32: More instances where early versions of usp10 are not well behaved with ScriptString_pSize being NULL.

Aurimas Fišeras (4):
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.
      comdlg32: Move and resize controls of the Find dialog to better fit translations.
      po: Update Lithuanian translation.

Carlos Rafael Ramirez (1):
      po: Update Spanish translation.

Charles Davis (2):
      ntdll: Add support for nanosecond precision file times on *BSD.
      ntdll: Add support for BSD-style creation ("birth") time.

Christian Costa (8):
      amstream: Fix return value of BasePinImp_GetMediaType.
      quartz: Fix case in some methods name.
      cabinet: Remove useless ERR and turn one ERR into a WARN.
      cabinet: Simplify concatenation of path and filename.
      cabarc: Add some debug messages.
      cabarc: Keep \ in the cab path as FDICopy expects it.
      cabarc: Handle fdintNEXT_CABINET notification to support multi-cab archive.
      cabarc: Handle fdintENUMERATE notification.

Daniel Jelinski (2):
      wine.inf: Add registry info for lanmanserver service.
      comctl32: Properly initialize internal structures.

Detlef Riekenberg (7):
      crypt32/tests: Fix failures on win7 and above.
      shell32/tests: Remove wrong comment.
      d3dx9_36/tests: Fix broken line test.
      advapi32/tests: Fix crash on 64bit windows for 64bit test.
      shell32: Implement DoEnvironmentSubstW.
      shell32: Fix DoEnvironmentSubstA implementation.
      shell32/tests: Add tests for DoEnvironmentSubstA/W.

Dmitry Timoshkov (12):
      oleaut32: Add a test for loading/saving an empty picture.
      oleaut32: Add support for saving an empty picture.
      windowscodecs: Add a NULL check to GetFrameCount of the BMP decoder.
      windowscodecs: Reimplement QueryCapability of the BMP decoder.
      windowscodecs: Reimplement GetFrameCount of the ICO decoder.
      windowscodecs: Implement QueryCapability of the ICO decoder.
      windowscodecs: Add a NULL check to GetFrameCount of the JPEG decoder.
      windowscodecs: Implement QueryCapability of the JPEG decoder.
      windowscodecs: Add a NULL check to GetFrameCount of the PNG decoder.
      windowscodecs: Implement QueryCapability of the PNG decoder.
      windowscodecs: Add a NULL check to GetFrameCount of the TGA decoder.
      windowscodecs: Implement QueryCapability of the TGA decoder.

Erich Hoover (4):
      advapi: Implement SetNamedSecurityInfoW on top of SetSecurityInfo.
      advapi: Implement GetNamedSecurityInfoW on top of GetSecurityInfo.
      advapi32: Return immediately for unsupported [Get|Set]NamedSecurityInfo objects.
      advapi32: Fix NamedSecurityInfo test crash on some systems.

Francois Gouget (1):
      gdi32: Make make_rgb_colorref() static.

Frédéric Delanoy (4):
      ddraw: Return appropriate value for non matching 32 bit pixel format in PixelFormat_DD2WineD3D (coverity).
      ole32: Add helper for string table memory freeing.
      ole32: Fix some leaks (coverity).
      wined3d: Add some 'fall through' comments (coverity).

Hans Leidekker (5):
      ole32: Use wrappers around NT functions to access the registry in CoGetPSClsid.
      ole32: Convert the remaining RegCreateKey and RegOpenKey calls to the wrappers.
      advapi32: Export more tracing functions.
      kernel32: Implement SetFileValidData.
      configure: Fix detection of fallocate on old glibc.

Henri Verbeet (50):
      d3dx9: Avoid LPD3DXINCLUDE.
      d3dx9: Avoid LPD3DXTEXTUREGUTTERHELPER.
      d3dx9: Avoid LPD3DXPRTENGINE.
      d3d10core: Implement d3d10_device_IAGetInputLayout().
      winex11: Detect broken NVIDIA RandR setups.
      d3dx9: Avoid LPD3DXPRTCOMPBUFFER.
      d3dx9: Avoid LPD3DXPRTBUFFER.
      d3dx9: Avoid LPD3DXPATCHMESH.
      wined3d: Properly handle scalar destinations in shader_glsl_conditional_move().
      d3d10core: Implement d3d10_device_DrawIndexedInstanced().
      d3dx9: Avoid LPD3DXSKININFO.
      d3dx9: Avoid LPD3DXSPMESH.
      d3dx9: Avoid LPD3DXPMESH.
      d3d10core/tests: Don't reuse the device.
      d3d10core/tests: Use the correct enum in test_create_shader_resource_view().
      d3dx9: Avoid LPD3DXMESH.
      d3dx9: Avoid LPD3DXBASEMESH.
      d3dx9: Avoid LPD3DXMATRIXSTACK.
      wined3d: Also unbind stream outputs and the geometry shader in stateblock_unbind_resources().
      wined3d: Fix a typo in wined3d_device_set_stream_output().
      d3dx9: Avoid LPD3DXEFFECTPOOL.
      d3dx9: Avoid LPD3DXEFFECTSTATEMANAGER.
      d3dx9: Avoid LPD3DXSPRITE.
      d3d10core: Implement d3d10_device_VSSetConstantBuffers().
      d3d10core: Implement d3d10_device_VSGetConstantBuffers().
      d3dx9: Avoid LPD3DXLINE.
      d3dx9: Avoid LPD3DXBUFFER.
      d3dx9: Avoid LPD3DXANIMATIONCONTROLLER.
      wined3d: Resolve the instance count for instanced arrays in load_numbered_arrays().
      wined3d: Add support for ARB_instanced_arrays.
      d3dx9: Avoid LPD3DXANIMATIONCALLBACKHANDLER.
      d3dx9: Avoid LPD3DXKEYFRAMEDANIMATIONSET.
      d3dx9: Avoid LPD3DXANIMATIONSET.
      d3d10core: Implement d3d10_device_GSSetConstantBuffers().
      d3d10core: Implement d3d10_device_GSGetConstantBuffers().
      d3dx9: Avoid LPD3DXALLOCATEHIERARCHY.
      d3dx9: Fix the LPLPD3DXFILE typedef.
      ddraw: Avoid LPDDSCAPS.
      d3d10core: Implement d3d10_device_PSSetConstantBuffers().
      d3d10core: Implement d3d10_device_PSGetConstantBuffers().
      ddraw: Avoid LPDDSCAPS2.
      ddraw: Avoid LPDDCAPS.
      ddraw: Avoid LPDDCOLORKEY.
      d3d10core: Implement d3d10_device_VSSetSamplers().
      d3d10core: Implement d3d10_device_VSGetSamplers().
      ddraw: Avoid LPDDPIXELFORMAT.
      ddraw: Avoid LPDDSURFACEDESC.
      ddraw: Avoid LPDDSURFACEDESC2.
      d3d10core: Implement d3d10_device_GSSetSamplers().
      d3d10core: Implement d3d10_device_GSGetSamplers().

Huw Davies (6):
      gdi32: Simplify the point type checking logic.
      winex11: Add a few 'fall through' comments.
      oledb32: Add a 'fall through' comment.
      sane.ds: Add a missing break.
      oledlg: Add a missing break.
      riched20: Flush the output buffer before a codepage change.

Hwang YunSong (1):
      po: Update Korean translation.

Jacek Caban (26):
      mshtml: Fixed a few coverity issues.
      jscript: Fixed some Coverity issues.
      mshtml: Use UTF-8 encoding in is_gecko_path.
      mshtml: Added IHTMLInputElement::defaultValue property implementation.
      hhctrl.ocx: Added import library.
      jscript: Alias arguments properties to real values.
      jscript: Added disp_delete helper and use it in interp_delete_ident.
      jscript: Added disp_delete_name helper and use it in interp_delete.
      jscript: Added support for DontDelete attribute and use it for arguments object.
      jscript: Cut arguments circular reference after returning from the function.
      jscript: Added support for indexed string access.
      wininet: Fixed NULL cookie data pointer handling in InternetGetCookieA.
      mshtml: Added support for converting (some) argument types in builtin function calls using script engine.
      msxml3: Moved XMLHTTPRequest tests to separated file.
      winedump: Added MSFT support.
      jscript: Treat VT_UNKNOWN VARIANTs supporting IDispatch interface as VT_DISPATCH.
      itss: Cleaned up CombineUrl tests.
      itss: Fixed fragment part handling in IInternetProtocolInfo::CombineUrl.
      mshtml: Added SID_SContainerDispatch support.
      mshtml: Properly handle NULL value in set_nsstyle_attr.
      msxml3: Use IUri for storing XMLHTTPRequest URL.
      msxml3: Added basic URL validation in safe mode.
      msxml3: Added URL validation tests.
      msxml3: Tests code clean up.
      jscript: Added more useful debug traces.
      vbscript: Use simplified constant implementation for more constants.

Jason Edmeades (3):
      cmd: Prevent overflow for long command string.
      cmd: Change what 'ver' issues.
      cmd: Wait for command to complete when spawned through cmd /c.

Maarten Lankhorst (1):
      dsound: Set dwChannelMask when limiting channels.

Michael Stefaniuc (11):
      winex11.drv: The winediag debug channel is only used for HAVE_XRRGETSCREENRESOURCES.
      comctl32: Remove a superfluous function pointer cast.
      riched20/tests: Remove a superfluous function pointer cast.
      qmgr: COM cleanup for the IBackgroundCopyManager iface.
      qmgr: Parameter cleanup for a helper function.
      winex11.drv: Remove superfluous function pointer casts.
      msxml3: Remove superfluous function pointer casts.
      qmgr: COM cleanup for the IEnumBackgroundCopyJobs iface.
      qmgr: Merge a helper function.
      qmgr: COM cleanup for the IEnumBackgroundCopyFiles iface.
      qmgr: Merge a helper function.

Nikolay Sivov (24):
      dwrite: Implement family name access methods for IDWriteTextFormat.
      dwrite: Add a separate function to copy text format data.
      xmllite: Implement initial encoding switching.
      xmllite: Add partial support for xml declaration parsing.
      ole32: Fix OleDraw() regarding passed rectangle handling.
      msxml3: Move document loading from stream to a separate function.
      msxml3: Support ISequentialStream as a document load source.
      msxml3: No need to keep a reference to a temporarily used stream.
      xmllite: Implement encoding declaration parsing.
      xmllite: Support standalone declaration.
      xmllite: Fix equal sign parsing.
      msxml3: Properly store SystemID and PublicID (Coverity).
      msxml3: Actually use skipped entity event data.
      msxml3: Fix handling of NULL object site (Coverity).
      msxml3: Check return value (Coverity).
      wshom: Fix refcount for typeinfo pointers.
      dwrite: Handle allocation error (Coverity).
      oledb32: Properly free property sets and propinfo sets (Coverity).
      msxml3: Revert "msxml3: AddRef() typeinfo pointers only when we have to.".
      msxml3: Fix a leak on error path.
      msxml3: Initialize body pointer and size for unknown types (Coverity).
      xmllite: Initial support for attribute list.
      xmllite: Implement attribute iteration methods.
      xmllite: Fix reported node type for attributes.

Piotr Caban (30):
      msvcp100: Added basic_ostream::ends implementation.
      msvcp: Sync implementations.
      msvcp60: Export locale classes destructors.
      msvcp100: Added _Container_base0::operator= implementation.
      msvcp100: Added _Container_base12 class implementation.
      msvcp100: Added _Container_base12 class tests.
      msvcp60: Forward bad_cast functions to msvcrt.
      msvcp60: Added locale::_Locimp::_Global export.
      msvcp60: Added locale::_Getfacet export.
      msvcp60: Added locale::Iscloc implementation.
      msvcp60: Added basic_filebuf<short>::_Initcvt export.
      msvcp60: Added seekoff exports.
      msvcrt: Remove superfluous semicolons.
      msvcp: Remove superfluous semicolons.
      msvcp100: Added exception throwing helpers.
      msvcrt: Added mbrlen implementation.
      msvcrt: Added mbrlen tests.
      msvcrt: Added mbrtowc implementation.
      msvcrt: Added mbrtowc tests.
      msvcrt: Added mbsrtowcs implementation.
      msvcrt: Added mbsrtowcs tests.
      msvcrt: Added wcrtomb implementation.
      msvcrt: Added wcrtomb tests.
      msvcp70: Forward bad_cast functions to msvcrt.
      msvcp: Sync spec files.
      msvcr90: Fixed non-blocking file access tests.
      include: Added MS_ENH_RSA_AES_PROV_XP definition.
      msvcr: Move msvcrXX specific functions implementation to msvcr100.
      tools: Update make_specfiles script.
      msvcr80: Copy _encode_pointer and _decode_pointer functions from msvcp90.

Putin Evgeny (1):
      wineps.drv: Add orientation field to postscript header.

Qian Hong (1):
      ole32: Fix OleDraw() with NULL pUnk.

Rico Schüller (1):
      d3dx9: Improve D3DXMatrixRotationYawPitchRoll().

Stefan Dösinger (14):
      ddraw: Don't create a wastefully large index buffer.
      ddraw: Make the index buffer write only.
      ddraw: Properly use the index buffer as a dynamic buffer.
      ddraw: Don't map 1, 2 and 4 bit alpha formats to WINED3DFMT_A8_UNORM.
      wined3d: Add an explicit break in case of unhandled BUMPENVMAP.
      ddraw: Create a dynamic buffer if DDLOCK_DISCARDCONTENTS is used.
      wined3d: Bind the src in a manual presentation blit.
      wined3d: Correctly count used stages in the atifs pipeline.
      wined3d: Test the correct program for native limits.
      wined3d: Use sign fixup for the atifs bumpenv matrix.
      wined3d: Add GL_ALPHA to the atifs argument replicator debug function.
      d3d9/tests: Skip some texture transform tests if shaders are unsupported.
      d3d9/tests: Give the texture transform test a defined colorop.
      d3d9/tests: Move the clipplane + shader test inside the capability check.

Vincent Povirk (6):
      gdiplus: Use clipping region in alpha_blend_pixels.
      gdiplus: Add a test for drawing to HDC's backed by 32-bit alpha dibs.
      gdiplus: Avoid accessing dib bits directly in GdipCreateBitmapFromHBITMAP.
      gdiplus: Use one GetDIBits call instead of one per row.
      gdiplus: Always use AlphaBlend to draw to 32-bit DIB's.
      gdiplus: Fix graphics bounds for memory DC's.

--
Alexandre Julliard
julliard@winehq.org
