The Wine development release 1.8-rc2 is now available.

What's new in this release (see below for details):
  - Bug fixes only, we are in code freeze.

The source is available from the following locations:

  http://dl.winehq.org/wine/source/1.8/wine-1.8-rc2.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8-rc2.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.8-rc2 (total 45):

   5627  Install can not find WORDPAD for README
   6176  Rhino 3D v3 (CAD app) crashes on startup (OpenGL/DIB driver needs to return max index for NULL PIXELFORMATDESCRIPTOR)
   9095  DM Genie 2.x fails on startup with 'ITypeInfo_fnInvoke failed to convert param 1 to VT_VARIANT|VT_ARRAY|VT_BYREF from VT_I2|VT_BYREF'
   9435  MDI child window outside main window gives scrollbars
  18378  NFS 4 Road Challenge: Installation of 4.50 patch fails
  20948  Eclipse (Europa) Links from Welcome window do not work
  22417  Roblox fails to start games, reports 'RobloxApp(13): Unknown error 0x800703E6'
  22691  Drag-and-drop doesn't work in CDBurnerXP 4.2+ audio disc mode
  24208  Eclipse (Europa) - html-based Welcome window is blank
  24473  IRPF Bolsa software doesn't work
  24747  MP3VCR 0.4.17 (VB6 app) crashes when clicking 'presets' button or doing other actions (change skin, load radio station)
  25064  Solo on Keyboard 9.0.5: Clicking on HTML page no effect.
  28029  Gunz launcher runs explorer instead of the game's launcher
  28589  Poor performance in Diner Dash 5
  31537  Encore 5 crashes when opening .enc files
  31629  Diner Dash 2: Moving mouse causes graphics to jump around
  31998  Avseq crashes in <How to Play> menu when multisampling enabled in Wine
  32006  Multiple games and applications need 'IDXGIOutput::GetDesc' method implementation (Direct3D10 SDK samples, Need for Speed Most Wanted 2012)
  33258  Visio 2010 and Office 2010 can't be installed in the same prefix
  33720  user32:menu
  33736  Excel Viewer 2007: "Open" button does not work on Vista+
  34175  Shift-backspace doesn't work as backspace in cmd
  35418  some drawing operations in Mixcraft 6 are very slow with client-side graphics enabled
  35422  Dashlane (password and forms-fill manager) fails to install
  35610  The of user32:msg tests fail in the Hebrew locale
  35655  3Dmark 2000 shows considerable performance drop after Wine 1.7.13 (expensive GetPixelFormat() called too frequently)
  35734  Pokemon Zeta 1.3.28 crashes on startup (ASProtect SKE v2.72)
  35975  Comanche 3 shows only gray screen
  36081  mshtml/dom test crashes
  36086  Installation of Half-Life Opposing Force fails due to file "ereg.dll" being read-only
  36900  Star Wars Galactic Battlegrounds Clone Campaigns: no video (regression)
  36932  BreezeBrowser: cannot expand directories in file browser
  36970  Blue Iris 3.x (video surveillance software) crashes after 30 seconds
  37358  FEAR 1: Installer says "wrong serial" even if entered correctly
  37859  BOINC 6.x/7.x take a long time to "start" when launched from boincmgr
  37939  Keyboard doesnt work for Project IGI 2
  37944  Origin's updater crashes before finishing the download process
  38669  IBM Endpoint Manager (IEM) Console 9.1 installer hangs at 'Evaluating launch conditions' stage
  39039  Popup tooltips missing and buttons don't work on mageia.org/en/downloads/
  39247  user32:sysparams fails in a Japanese locale
  39445  Drag and drop in Foxit Reader doesn't work anymore
  39536  Multiple games render black/garbled screen when anti-aliasing enabled (Guild Wars, Eve Online, Gear Grinder)
  39635  Hungarian Excel Viewer 2007: "Open" dialog on Win8 does not refresh correctly
  39648  MTA: San Andreas 1.5: failure to process 64-bit FairplayKD.sys driver IRPs due to incorrect alignment/packing of I/O manager structures
  39665  dinput: MotoGP 3 demo fails to accept key presses to control the driver.

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

Changes since 1.8-rc1:

Adam Martinson (1):
      kernel32/tests: Add tests for closing named pipes with CloseHandle.

Akihiro Sagawa (1):
      po: Update Japanese translation.

Alex Henrie (1):
      po: Update Catalan translation.

Alexandre Julliard (10):
      winex11: Fix a copy&paste typo in the initial position of a window.
      kernel32/tests: Avoid testing the D: drive which may not exist.
      explorer: Treat unrecognized options as a file to open.
      Revert "oleaut32: Implement a better stub for IPicture::SaveAsFile."
      user32/tests: Fix a few more menu test failures on Windows.
      user32/tests: Fix a few msg test failures on Windows 7.
      gdiplus/tests: Check the correct fallback font when Arial is missing.
      user32: Reduce the idle timeout before flushing surfaces to make it less noticeable.
      gdi32: Periodically flush a window surface if the app is continuously painting.
      winex11: Flush the output of a flushed surface right away.

Alistair Leslie-Hughes (3):
      include: Add d3dx10async.h.
      d3d11: Make blend_factor optional in d3d11_immediate_context_OMSetBlendState().
      d3d10core/tests: Add test for NULL blend factor in OMSetBlendState().

Andrew Eikum (1):
      Revert "explorerframe: Allow treeview expandos to open with a single click.".

Andrey Gusev (2):
      Assorted typos fixes.
      progman: Fix GROUP_AddGroup() declaration.

André Hentschel (1):
      ws2_32/tests: Don't test function directly when reporting WSAGetLastError().

Bernhard Übelacker (1):
      dinput: Fail in SetCooperativeLevel on invalid hwnd.

Bruno Jesus (7):
      msacm32: Remove dead code from acmFormatDetailsW.
      ws2_32: Add a couple of options to sockopt debug.
      comctl32: Respect an assert in TREEVIEW_RemoveAllChildren.
      msacm32/tests: Add some acmStreamPrepareHeader and acmStreamConvert tests.
      ws2_32/tests: Add more tests related to WSACleanup.
      ws2_32/tests: Check if the first IP is a default route in gethostbyname.
      ws2_32/tests: Ensure we have more than one IP to test gethostbyname.

Dmitry Timoshkov (4):
      comctl32/tests: Add a test for system class properties.
      oleaut32/tests: Add some tests for IPicture::SaveAsFile.
      oleaut32: Implement a better stub for IPicture::SaveAsFile.
      oleaut32: Grow the marshalling buffer exponentially.

François Gouget (3):
      cmd/tests: Fix the builtin tests when the current directory contains a space.
      d2d1: Remove WINAPI on static functions where not needed.
      xaudio2_7: Make some functions static.

Henri Verbeet (1):
      dxgi: Implement dxgi_output_GetDesc().

Hugh McMaster (3):
      kernel32: Use virtual-key codes in the console StdKeyMap.
      kernel32: Interpret Shift-Backspace as Backspace when using the Win32 keymap in wineconsole.
      kernel32: Remove un-needed VK_DEL entries from the console keymap.

Jacek Caban (4):
      mshtml/tests: Fixed tests on win10.
      mshtml: Added IHTMLDOMAttribute2::put_value implementation.
      wininet: Improved debug traces.
      ieframe: Silence some noisy FIXMEs.

Jactry Zeng (1):
      po: Update Simplified Chinese translation.

Jiaxing Wang (1):
      regedit: Need 3 bytes of room at end of buffer for \r\n\0 to avoid endless loop.

Joachim Priesner (1):
      kernel32/tests: Add tests for GetDriveType with invalid drive spec.

Julian Rüger (1):
      po: Update German translation.

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

Michael Müller (1):
      msvcp90: Basic_string_wchar_dtor should set EAX to 0 on i386.

Michael Stefaniuc (2):
      maintainers: Add section for the Stable branch.
      ieframe: Use BOOL instead of VARIANT_BOOL in on_commandstate_change().

Nikolay Sivov (17):
      user32/tests: Some tests for SetScrollInfo().
      dplayx: Fix a possible memory leak on error path (Coverity).
      ddeml: Don't trash 'cb' field of structure returned by DdeQueryConvInfo16() (Coverity).
      wininet: Remove a bit of dead code (Coverity).
      wldap32: Properly implement ldap_encode_sort_control[A, W] (Coverity).
      d2d1: Fix a copy-paste issue in EndDraw() (Coverity).
      comctl32/treeview: Use consistent format for hex values in traces.
      comctl32: Item with negative cChildren acts as if it actually had children.
      user32: Don't overwrite 'cb' field with uninitialized data in DdeQueryConvInfo() (Coverity).
      crypt32: Fix key name null termination (Coverity).
      sc: Fix service handle leak on error path (Coverity).
      wineoss: Initialized wReserved1 field returned to auxGetDevCapsW().
      winmm: For consistency forward wReserved1 values from -W to -A calls too.
      winmm/tests: Remove unreliable tests.
      winex11: Simplify XGetWindowProperty return code checks (Clang).
      d3dx9: Use proper enum member (Clang).
      ntdll: Remove unused helper (Clang).

Piotr Caban (2):
      msxml3/tests: Run IXMLDOMNode::get_text whitespace tests on other msxml versions.
      shell32: Improved IDataObject::QueryGetData implementation.

Rafał Harabień (1):
      include/ddk: Fix memory layout of IRP and IO_STACK_LOCATION in wine64.

Sebastian Lackner (7):
      kernel32/tests: Add tests for sending empty message in combination with CloseHandle.
      kernel32/tests: Add tests for calling WriteFile on pipe when other end is closed.
      server: Fix crash when calling GetNamedPipeHandleState on partially closed pipe.
      server: Fix crash when calling SetNamedPipeHandleState on partially closed pipe.
      kernel32/tests: Add tests for calling wait functions with pseudo handles.
      kernel32/tests: Avoid busy-looping in APC deadlock tests.
      gdi32: Add check for NULL pointer in dibdrv_wglDescribePixelFormat.

Sergey Isakov (2):
      msi/tests: Simplify the logic in an if condition.
      tapi32: Simplify the logic in an if condition.

Stefan Dösinger (8):
      wined3d: Support loading renderbuffers in surface_load_location.
      wined3d: Discard depth stencils on unload.
      d3d9/tests: Multisampled render targets are zeroed on creation.
      d3d8/tests: Multisampled render targets are zeroed on creation.
      d3dx9_36: Replace powf(2, unsigned int) with (1u << unsigned int).
      include: Add DXGI_SWAP_EFFECT_FLIP_DISCARD.
      dxgi/tests: Test DXGI_SWAP_EFFECT_FLIP_DISCARD.
      dxgi/tests: Windows 10 properly makes buffers read only.

Svante Signell (1):
      winepulse.drv: Avoid PATH_MAX in Windows code.

Thomas Faber (7):
      dinput: Implement MSVC version of enum_callback_wrapper.
      d3dxof: Avoid undefined behavior in parse_object_parts.
      quartz: Fix IEnumMoniker reference leak in FilterGraph2_Connect.
      quartz/tests: Test aggregation with CLSID_FilterMapper2.
      quartz/tests: Test aggregation with CLSID_FilterGraph.
      ntdll/tests: Fix build with PSDK headers.
      gdiplus/tests: Fix build with MSVC.

Vijay Kiran Kamuju (1):
      wine.inf: Install wordpad in Program FilesWindows NT\Accessories.

Vincent Povirk (5):
      advapi32/tests: Skip test when registry virtualization can't delete values.
      atl100/tests: Check Administrators group if UAC is disabled.
      comctl32/tests: Accept touchscreen-related messages in button tests.
      d3d8/tests: Accept CURSOR_SUPPRESSED in cursor flags.
      d3d9/tests: Accept CURSOR_SUPPRESSED in cursor flags.

--
Alexandre Julliard
julliard@winehq.org
