The Wine development release 1.5.9 is now available.

What's new in this release (see below for details):
  - Support for GPOS font tables in Uniscribe.
  - Support for XRandr 1.2 and 1.3.
  - Parser improvements for the HLSL compiler.
  - More key exchange algorithms supported on Mac OS.
  - Relay tracing on ARM.
  - Various bug fixes.

The source is available from the following locations:

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

   3569  "MDK" does not display most of graphic
   9638  VB6 apps using scrrun FileSystem object fail because GetIDsOfNames is not implemented (Fileant, WinAmbulance, ...)
  18505  Crashday: Grey overlay at loading screen
  20170  Gruntz: Slow down a lot when displaying text
  20809  15 Days: Crash at startup
  21346  Ashampoo Slide Show 2010: Slideshow preview window crashes the app
  21487  hh.exe: Missing icons, problem displaying initial page of sample .chm file
  25187  Sandlot games launcher "Play Now" button does nothing
  25312  Add support  for XRandR 1.2
  25797  Dogfighter (Steam) hangs when changing the video settings
  26247  Lifbase: text input area borders are corrupted
  26815  Mini Golf cannot be played a second time
  28428  eXperience 112: broken shadows
  28949  VBSCript fail to parse 'for each <> in <>' statement
  29115  Pegasus Mail v. 4.62 build 191 generates exception in safecall method
  29669  Dragon Age: Origins DVD authenticity checks fail (descriptor structures returned by DVD_READ_STRUCT need a descriptor header prepended)
  29697  Winamp [5.623]: Application crashes at startup, needs msvcr90.dll.bsearch_s
  29711  Quick Lohn installation crashes on setup
  29824  Photoscape needs msvcp90.dll.??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z
  30184  Take advantage of xrandr 1.3 features
  30221  Pegasus Mail v4.63 starts w/ exception "(0x80040100) (0x80040100) @01AD84F5" (OleCommandTarget_Exec Unsupported cmdID = 63)
  30316  Pegasus Mail v4.63 - tooltips labels are left blank
  30321  wine iexplore  http://www.mozilla.org/en-US/plugincheck/ crash in mshtml
  30472  iexplore http://jpl.nasa.gov crashes in HTMLDocument_get_cookie
  30495  Serif WebPlus X2 fails to start due to windowscodecs BitmapEncoderInfo_GetPixelFormats being a stub
  30533  The Walking Dead Episode 1: Black screen after startup
  30602  GTA2 crashes on exit
  30757  Dota 2 won't render with d3d9ex
  30872  Fifa 2005 demo crashes with German language selected
  30926  Mathematica 8.0.1 crashes on startup
  30986  Severe frame rate regression in 3D games when changing cursor graphic (esp with animated cursors)
  31082  StarTopia: crashes while loading
  31092  ctest, cmake crash with null this in msvcp90.locale_dtor
  31104  msvcp90.dll.??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z unimplemented
  31115  Driftmoon needs Win32_BaseBoard WMI class (queries for SerialNumber property)
  31120  Clones (game) crashes on start in quartz
  31124  Trying to install Sketchup pro 8 on Ubuntu 12.04 64bit
  31127  .NET Framework 4.5 RC Runtime Optimization Service needs kernel32.dll WerSetFlags stub
  31128  Microsoft.Build tool from .NET Framework 4.x requires kernel32.dll GetDynamicTimeZoneInformation
  31130  Microsoft C# compiler from .NET Framework 4.x requires kernel32.dll GetLocaleInfoEx
  31131  installer of Thunder 7 crashes at unimplemented msvcp71.dll.?$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z
  31132  Rise of Nations : Will not Start
  31138  EverQuest II: Launchpad hangs while loading
  31141  wined3d_get_adapter_display_mode failure with relay+trace
  31155  Microsoft SQL Server 2005 Express Edition: SQL Server System Configuration Checker fails (needs StdRegProv WMI class)
  31160  Driver problem for Epson stylus sx235w printer/scanner. unimplemented function setupapi.dll.SetupDiGetDeviceInstallParamsW
  31165  Kareo installer puts up fatal dialog on startup
  31187  Error file not found "Version.ini" on IPView Pro 3.00 and 4.00 with builtin scrrun.dll
  31198  Google Sketchup Layout crashes during startup
  31201  MathCad 15 can't acquire trial license
  31213  Amnesia - The Dark Descent: launcher.exe crashes on start
  31214  Eschalon Book I: corrupted text in DirectX mode
  31219  Wine cannot install dotnet2 using winetricks
  31229  ChessBase 2009 Light help viewer crashes

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

Changes since 1.5.8:

Alex Henrie (1):
      user32: Minimize and maximize boxes can only appear when WS_SYSMENU is set.

Alexandre Goujon (5):
      include/ddk: Add DVD_DESCRIPTOR_HEADER descriptor structure.
      kernel32/tests: Add a helper to test CDROM ioctl.
      kernel32/tests: Add a IOCTL_DVD_READ_STRUCTURE (DvdPhysicalDescriptor) test.
      kernel32/tests: Add a IOCTL_DVD_READ_STRUCTURE (DvdCopyrightDescriptor) test.
      kernel32/tests: Add a IOCTL_DVD_READ_STRUCTURE (DvdManufacturerDescriptor) test.

Alexandre Julliard (7):
      winex11: Get rid of the no longer needed drawable rect in the X11 device.
      wined3d: Remove unused variables.
      gdiplus: Avoid out of bounds access warning.
      opengl32: Mark invalid handles with ffff instead of 0.
      opengl32/tests: Run more tests against the GDI renderer.
      server: Subtract the current update region from the valid rect when a window client area is changed.
      user32/tests: Move DlgDirList tests to avoid changing the current directory for other tests.

Alistair Leslie-Hughes (2):
      scrrun: Add typelib support.
      mmcndmgr: Implement IMMCVersionInfo.

Andrew Eikum (1):
      mpr: Don't succeed if drive is not remote in WNetGetUniversalName.

André Hentschel (8):
      winedbg: Add branch and exchange operator to ARM disassembler.
      winedbg: Add multiplication operators to ARM disassembler.
      winedbg: Add swap operator to ARM disassembler.
      winedbg: Add new operators regarding data processing to ARM disassembler.
      setupapi: Add a stub for SetupDiGetDeviceInstallParamsW.
      winebuild: Generate relay debugging thunks for ARM.
      ntdll: Add support for relay debugging on ARM.
      msvcrt: Add bsearch_s implementation by reusing code and tests from ntdll.

Aric Stewart (16):
      comdlg32: Do not use GetDlgItemText to get combo box text during an CBN_SELCHANGE notification.
      ups10: Rename common opentype tables used in both GSUB and GPOS to OT_.
      usp10: Load the GPOS table.
      usp10: Change OpenType_GSUB_GetFontScriptTags to OpenType_GetFontScriptTags and load scripts from GPOS table as well.
      usp10: Change OpenType_GSUB_GetFontLangaugeTags to OpenType_GetFontLanguageTags and load languages from GPOS table as well.
      usp10: Change OpenType_GSUB_GetFontFeatureTags to OpenType_GetFontFeatureTags and load features from GPOS table.
      usp10: Implement SHAPE_ApplyOpenTypePositions using GPOS table.
      usp10: Implement GPOS Anchor formats.
      usp10: Add GPOS features to scripts as defined by VOLT.
      usp10: In ScriptTextOut make use of piAdvance and pGoffset to position glyphs.
      usp10: Implement GPOS MarkToBase.
      usp10: Handle GPOS ValueRecords.
      usp10: Implement GPOS Single Adjustment Positioning.
      usp10: Implement GPOS Pair Adjustment Positioning Subtable.
      ups10: Implement Single Adjustment Positioning: Format 2.
      usp10: Implement GPOS Coverage-based Chaining Context Glyph Positioning.

Austin English (4):
      kernel32: Add a stub for WerSetFlags.
      kernel32: Add a stub for GetDynamicTimeZoneInformation.
      inseng: Add a stub for DllInstall.
      kernel32: Add a stub for GetLocaleInfoEx.

Bruno Jesus (2):
      user32/tests: Add a test for OpenClipboard twice with non-zero hwnd.
      user32/tests: Update DlgDirList tests.

Dan Kegel (1):
      wininet: Don't evaluate netconn_get_avail_data() twice in netconn_read().

Daniel Jelinski (6):
      comctl32/treeview: Clean up mouse tracking code.
      comctl32/treeview: Fix NM_RCLICK behavior.
      comctl32/treeview: Send WM_CONTEXTMENU everywhere, not just over items.
      comctl32/treeview: Inlined TREEVIEW_RButtonUp.
      comctl32/treeview: Send WM_CONTEXTMENU only to parent window.
      comctl32/treeview: Fix the position reported by WM_CONTEXTMENU.

Daniel Lehman (1):
      msvcp90: Handle npos as a len in basic_string<>::replace.

Detlef Riekenberg (3):
      credui: Add a stub for CredUIInitControls.
      advapi32: Implement CredIsMarshaledCredentialA/W.
      advapi32/tests: Add tests for CredIsMarshaledCredential.

Dmitry Timoshkov (24):
      winex11.drv: Avoid conflicting definitions of WINGDIAPI.
      gdiplus: Add a test for palette associated with black&white TIFF image.
      windowscodecs: Add a test for palette associated with black&white TIFF image.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedBW palette. Resend.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedGray4 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedGray16 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedGray256 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone8 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone64 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone256 palette.
      windowscodecs: Use predefined WICBitmapPaletteTypeFixedGray4 palette instead of a handmade one.
      windowscodecs: Use predefined WICBitmapPaletteTypeFixedGray16 palette instead of a handmade one.
      windowscodecs: Test pixel format of the loaded TIFF image.
      windowscodecs: Avoid casting IWICFormatConverter to IWICBitmapSource.
      windowscodecs: Use predefined WICBitmapPaletteTypeFixedBW palette instead of a hand-made one.
      gdiplus: Make sure that 1bpp bitmap images get loaded in native format.
      gdiplus: Fix palette flags for a not indexed 1-bpp image.
      gdiplus: Make sure that GdipBitmapLockBits stores valid lockmode.
      gdiplus: Add some tests for GdipBitmapLockBits/GdipBitmapUnlockBits.
      gdiplus: Use public ColorPalette structure to store image palette.
      gdiplus: Pass complete palette info to convert_pixels().
      gdiplus: Pass palette instead of bitmap to setpixel helpers.
      gdiplus: Add support for converting RGB formats to 8bpp indexed.
      gdiplus: Add support for converting RGB formats to 1bpp indexed.

Erich Hoover (3):
      shell32: Fix FindExecutable search path when a default directory is supplied.
      hhctrl.ocx: Implement HH_CLOSE_ALL.
      hhctrl.ocx: Permit WS_CHILD help windows.

Francois Gouget (4):
      gdi32: Remove an unused wgl debugging channel.
      winex11.drv: We must include Xlib.h before Xrandr.h.
      appwiz.cpl: Only offer to download an addon if its installer is missing.
      mshtml: Avoid returning with an unset URL policy in error cases.

Gerald Pfeifer (1):
      ntdll: Omit unused typedef in test_query_process_basic.

Hans Leidekker (13):
      wbemprox: Add a partial Win32_BaseBoard class implementation.
      wbemprox: Implement Win32_Processor.Manufacturer and Win32_Processor.Name.
      fusion: Also copy external files in IAssemblyCache::InstallAssembly.
      ntdll: Report 3dnow and sse features if the processor supports them.
      setupapi: SetupInstallServicesFromInfSection doesn't fail if there are no AddService or DelService directives in the section.
      msi: Don't crash if no working directory is specified for custom action type 34.
      msi: Don't hard-code the ServicePackLevel property.
      wbemprox: Add support for evaluating string comparisons.
      wbemprox: Implement Win32_NetworkAdapter.MACAddress and Win32_NetworkAdapter.PNPDeviceID.
      wbemprox: Return a null variant instead of an empty string if the property isn't set.
      wbemprox: Add a partial StdRegProv class implementation.
      wbemprox: Add support for creating new tables.
      msi/tests: Mark some test results as broken.

Henri Verbeet (33):
      secur32: Only read complete records in schan_InitializeSecurityContextW().
      wined3d: Fix the .spec.
      d3d9: Implement d3d9_device_ResetEx().
      winex11: Get rid of xvidmode.h.
      winex11: Get rid of xrandr.h.
      wined3d: Get rid of the "lockable" parameter to device_parent_create_rendertarget().
      wined3d: Get rid of the "discard" parameter to device_parent_create_depth_stencil().
      wined3d: Print a more obvious message if a format doesn't have a corresponding GL internal format.
      winex11: Remove some unused includes from xrandr.c.
      winex11: Introduce a separate function for initializing the list of XRandR display modes.
      wined3d: Introduce a helper function for checking surface block alignment.
      wined3d: Fix the block alignment check in surface_cpu_blt().
      wined3d: Merge the device parent create_rendertarget() and create_depth_stencil() handlers.
      winex11: Simplify X11DRV_XRandR_Init() error handling a bit.
      winex11: Get rid of some needless globals.
      d3d10core: Always create a wined3d texture for d3d10core textures.
      d3d10core: Implement d3d10_texture2d_Unmap().
      d3d10core: Implement d3d10_texture2d_Map().
      ddraw: Get rid of the "tex_root" hack.
      ddraw: Get rid of some redundant TRACE_ON invocations.
      ddraw: Create texture surfaces from device_parent_create_texture_surface().
      winex11: Simplify the XRandR mode matching code a bit.
      winex11: Fix the virtual desktop check in update_desktop_fullscreen().
      ddraw: Create surfaces with the correct mip level in device_parent_create_texture_surface().
      wined3d: Get rid of the unused sampler_stages limit.
      winex11: Properly calculate the virtual screen rect in xinerama_init().
      winex11: Add support for XRandR 1.2.
      winex11: Add support for XRandR 1.3.
      wined3d: Use the proper texture target in arbfp_blit_set().
      wined3d: Use the proper texture target in ffp_blit_set().
      wined3d: Use the proper texture target in fb_copy_to_texture_direct().
      wined3d: Use the proper texture target in ffp_blit_p8_upload_palette().
      wined3d: Introduce a separate function for initializing various limits.

Huw Davies (3):
      winspool: Don't assume that CUPS is available.
      ntdll: Increase the buffer size for processor features and add a check to catch future overflows.
      ntdll: Remove a spurious assignment.

Jacek Caban (35):
      vbscript: Better representation of statement context.
      vbscript: Fixed 'exit do' statements crossing for in loops.
      vbscript: Fixed function return crossing for loop.
      vbscript: Added support for exit for statement in 'for in' loops.
      ieframe: Call OnInPlaceDeactivate in DoVerb(OLEIVERB_HIDE) implementation.
      ieframe: Added more DoVerb tests.
      ieframe: Added init_test helper.
      ieframe: Avoid useless QI(IID_IWebBrowser2) calls in tests by passing IWebBrowser2 interface where possible.
      vbscript: Ignore version flags in GetDispID.
      mshtml: Moved binding list to HTMLInnerWindow.
      mshtml: Simplify ASServiceProvider_QueryService.
      mshtml: Moved detaching inner window to separated function.
      vbscript: Added UCase implementation.
      vbscript: Added LCase implementation.
      mshtml: Create inner window early in binding process and use it to store current binding callback.
      mshtml: Use per-inner window task_magic for binding.
      mshtml: Don't store outer window in nsChannelBSC.
      mshtml: Use proper task_magic in async_open.
      mshtml: Get rid of no longer needed support for new window navigation in before_async_open.
      mshtml: Added HTMLElement::onkeypress implementation.
      mshtml: Added HTMLInputElement::onchange implementation.
      mshtml: Added IHTMLInputElement::maxLength implementation.
      mshtml: Added IHTMLAnchorElement::name implementation.
      mshtml: Moved invoking DISPID_VALUE to separated function.
      mshtml: Added support for calling functions returned by builtin getters.
      mshtml: Added test of calling IDispatchEx properties.
      jscript: Prefer builtin version.
      jscript: Properly set Number.prototyp.constructor.
      jscript: Properly handle constructor property for most builtin constructors.
      jscript: Properly set Function constructor's constructor property.
      jscript: Properly set Error object's constructor property.
      jscript: Expose RegExpError constructor in global object.
      jscript: Don't set constructor property to each object instance, it belongs to their prototypes.
      d3drmdef.h: Replace unsigned long by ULONG.
      mshtml: Ignore navigation failures from detached bindings.

Józef Kucia (9):
      d3dx9: Validate the size of a volume texture in D3DXGetImageInfoFromFile.
      d3dx9: Fix D3DXLoadVolumeFromVolume so it works for subsets of volumes.
      d3dx9: Implement D3DXLoadVolumeFromFileInMemory.
      d3dx9/tests: Add tests for D3DXLoadVolumeFromFileInMemory.
      d3dx9: Implement D3DXLoadVolumeFromFile.
      d3dx9: Implement pixel format conversion for volume textures.
      d3dx9: Implement point filtering for volume textures.
      d3dx9: Use structure to pass volume size to pixel format conversion functions.
      d3dx9: Implement volume texture filtering in D3DXFilterTexture.

Ken Thomases (3):
      include/wincrypt.h: Add identifiers for Elliptic curve Diffie-Hellman algorithm.
      secur32: On Mac, recognize key exchange algorithm for cipher suites using ECDH.
      secur32: On Mac, define modern ECDH cipher suites if the SDK doesn't.

Lucas Zawacki (3):
      joy.cpl: Correct joystick testing thread behavior.
      joy.cpl: Tab for force feedback tests.
      joy.cpl: Added force feedback direction control.

Marcus Meissner (5):
      d3dcompiler_43: Fixed small overread possibility (Coverity).
      krnl386.exe16: Do not truncate the strcmp result (Coverity).
      setupx.dll16: Avoid strcmp() result truncation (Coverity).
      shell32: Avoid memcmp result truncation (Coverity).
      user.exe: Avoid truncating strcmp result (Coverity).

Matteo Bruni (20):
      d3dcompiler: Fix line info update.
      d3dcompiler: Type names have to be allocated on the heap.
      d3dcompiler: Carry around both shader major and minor version.
      d3dcompiler: Parse compilation target.
      d3dcompiler: Initialize and fix compilation messages generation.
      d3dcompiler: Properly print compilation messages.
      d3dcompiler: Make declaration_statement return a list.
      d3dcompiler: Pass the shader filename to the preprocessor.
      d3dcompiler: Add a trace to the scope push/pop functions.
      d3dcompiler: Improve debug_hlsl_type function.
      d3dcompiler: Add hlsl_report_message function to standardize error messages.
      d3dcompiler: Track the location of each lexer token.
      d3dcompiler: Introduce source_location structure.
      d3dcompiler: Store (and begin to use) location information for variables.
      d3dcompiler: Use location information in add_modifier().
      d3dcompiler: Store location information in constants, variable dereferences and constructors.
      d3dcompiler: Pass the complete location to add_func_parameter().
      d3dcompiler: Variables and functions can't have the same name.
      d3dcompiler: Don't allow semantics on void functions.
      d3dcompiler: Implement basic expressions parsing.

Michael Stefaniuc (1):
      quartz: Remove an object to IFilterGraph2 cast.

Nicolas Le Cam (1):
      windowscodecs: Avoid using uninitialized value (LLVM/Clang).

Nikolay Sivov (22):
      msxml3: Don't use stream written value when saving to stream.
      msxml3: Fix xml declaration output when it's specified in loaded document (in case of stream).
      msxml3: Fix xml declaration output when it's specified in loaded document (in case of file).
      msxml3: Remove unneeded xmlInitParser call.
      msxml3: Add VT_I1 type to variant dump helper.
      scrrun: Added IFileSystem3_FileExists implementation.
      ole32: COM cleanup of storage IStream implementation.
      ole32: Implement GetConvertStg().
      ole32: Simplify storage root entry name initialization.
      ole32: COM cleanup for IStorage interface of base storage implementation.
      ole32: COM cleanup of IPropertySetStorage interface.
      ole32: No need to test for null implementation pointer in methods.
      ole32: Implement SetConvertStg().
      msxml3: Protect from null pointer in load().
      msxml3: Implement put/get for DTD handler callback interface.
      msxml3: Implement a common way to store and get callback interface pointers.
      msxml3: Use single helper to test for handler presence.
      ole32: Use interface macros to call methods.
      ole32: Make ole stream creation helper capable of handling flags data.
      ole32: COM cleanup of HGLOBAL ILockBytes implementation.
      ole32: COM cleanup for IErrorInfo.
      ole32: Fix QueryInterface for IErrorInfo to return IUnknown pointer.

Nozomi Kodama (2):
      d3dx9: Implementation of D3DXSHMultiply2.
      d3dx9_36: Implementation of D3DXSHEvalDirection.

Piotr Caban (10):
      msvcp90: Implement more basic_istream<char>::operator>> functions.
      msvcp90: Implement more basic_istream<wchar>::operator>> functions.
      msvcp90: Implement more basic_ostream<char>::operator<< functions.
      msvcp90: Implement more basic_ostream<wchar>::operator<< functions.
      msvcp: Sync spec files.
      msvcp90: Pass base class pointer to virtual functions.
      msvcp90/tests: Added destructor tests for class with virtual inheritance.
      msvcp90: Fix EOF handling in basic_filebuf<char>::underflow.
      msvcp90: Fix off by one issues in basic_string functions operating on iterators.
      msvcp90: Fix parsing of floating point numbers starting with decimal separator.

Rico Schüller (5):
      d3dx9: Implement ID3DXBaseEffect::GetMatrixPointerArray().
      d3dx9: Implement ID3DXBaseEffect::GetMatrixTransposePointerArray().
      d3dx9/tests: Add effect parameter value GetMatrixPointerArray() test.
      d3dx9/tests: Add effect parameter value GetMatrixTransposePointerArray() test.
      d3dx9/tests: Fix array increment in SetMatrix*PointerArray() test.

Thomas Faber (1):
      ntdll/tests: Add test for RtlIpv4StringToAddress.

Vincent Povirk (4):
      gdiplus: Fix GdipImageRotateFlip for images from streams.
      gdiplus: Fix memory leak in GdipImageRotateFlip.
      gdiplus: Implement LineJoinMiterClipped and partially implement LineJoinMiter.
      gdiplus: Accept a transformation matrix in GdipFlattenPath.

Wei-Lun Chao (3):
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.

--
Alexandre Julliard
julliard@winehq.org
