The Wine development release 1.8-rc1 is now available.

This is the first release candidate for the upcoming Wine 1.8. Please
give this release a good testing to help us make 1.8 as good as
possible.

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-rc1.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8-rc1.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-rc1 (total 54):

   8712  amstream video demo does not play because of IDirectDrawMediaStreamImpl_CreateSample stub
   9872  Leisure Suite Larry 7 fails to run in WinXP mode
  16782  Sea3D chat text unreadable
  21879  Word95 can't create new document
  23817  Creative Writer 2 can't show images in .max files
  25263  Biet-O-Matic calculates shipping cost wrong for German locale
  25843  Wine causes terminal to lose some inputrc settings
  26034  DNAsp5 crashes when trying to copy text from an output
  27664  Various Telltale games crash on startup when a joystick is plugged in (application provides EnumDevice callback with wrong calling convention)
  27859  Task Coach: Crashes on start (uses python2.7)
  28729  EasyBCD: bcdedit complains about lack of privileges (import of registry hive using native API fails/wineserver token privilege check)
  29206  Mystery Cases - Madame Fate (Bigfish games): Director Player Error:  Unable to load movie playlist
  30588  Houdini 12.x (3D animation tool) crashes on startup
  30855  Rhymes (Russian rhymes dictionary) doesn't work correctly
  31889  Cmd testrunner fails in case of mismatches on synchronization lines
  32639  Sega Rally Revo sound stuttering
  32701  The Dame In Black Case: installer fails when registering msdxm6.ocx (needs 'HKLM\\Software\\Microsoft\\MediaPlayer' key 'Installation DirectoryLFN' value)
  33718  comctl32:propsheet Add button test failure
  34123  Sonic & All-Stars Racing Transformed: the game fails to initiate due to Wine failing to mount its CD images
  34261  Sonic and All-Stars Racing Transformed (Steam) crashes during intro video
  34953  Message "Application tried to create a window, but no driver could be loaded. Make sure that your X server is running and that $DISPLAY is set correctly." cannot be suppressed
  35659  Dassault Systemes CATIA v5 reports 'no certified opengl libary has been found. Check your system installation' on startup (opengl32.dll version resource 'LegalCopyright' mismatch)
  35688  iMesh 7.x reports 'You are using an older version of Windows Media Player!' (needs WMP 10 version registry key)
  35718  Multiple games have extreme flicker, stutter, slowdown (Path of Exile, Roller Coaster Tycoon, Counter Strike: Global Offensive, Warframe, Crysis, Anno 1602,  Splinter Cell: Blacklist)
  35970  Wine del returns 1 on error unlike on Windows
  36255  World of tanks doesn't run after upgrade to 0.9
  36428  valgrind shows a possible leak in scrrun/tests/dictionary.c
  37161  D3D_SHADER_VARIABLE_FLAGS is not defined in d3dcommon
  37200  Warhammer 40k: Kill Team (Steam version) does not start
  37203  Age of Empires II Conquerors 800x600 launch screen black on wine versions later than 1.7.13
  37595  cls command does not fill screen attributes
  37799  Children of the Nile: crash on start when not using virtual desktop
  37881  Multiple applications crash on unimplemented function msvcp120.dll._Cnd_init (Livescribe Echo Desktop 3.0, Acrobat Reader DC 2015)
  37955  USB DAC sound problems
  37994  AVRStudio 4.18: Editor window text rendered incorrectly (transparent tab characters)
  38103  Process Hacker 2.x needs ntoskrnl.exe.ProbeForRead
  38252  Candleworks FX Trade Station 2 updater crashes
  38391  Deus Ex: Human Revolution does not properly detect speaker configuration
  38427  Desura client 0.0.20.2 crashes on unimplemented function msvcp120.dll._Thrd_current
  38600  Planetary Annihilation needs msvcp110.dll._Cnd_init
  39018  A9CAD fails to start, throws 'X Error of failed request:  BadValue (integer parameter out of range for operation)'
  39045  Accuweather.com download page displays only the background image in built-in iexplore
  39212  cmd:batch fails if privileges not high enough
  39230  odbccp32:misc fails if privileges not high enough
  39323  StarForce 3.x: Protection Environment Driver v1.x 'sfdrv01.sys' crashes on unimplemented function ntoskrnl.exe.ExDeleteNPagedLookasideList (Blazing Angels Squadrons of WWII Demo)
  39347  World of Warships 0.4.x/0.5.x: incorrect water surface height calculated for unknown reasons, causing ships to appear floating in the air (with GLSL shader backend)
  39362  Blazblue Calamity Trigger crash on press start screen
  39384  Tencent QQ 7.6 frame manager kernel driver 'QQFrmMgr.sys' crashes on unimplemented function ntoskrnl.exe.CmRegisterCallback
  39426  skype crash - unimplemented combase.dll.RoGetActivationFactory
  39468  Adobe Photoshop CS2 installer triggers __stack_chk_fail() on Wine builtin 'msiexec'
  39517  No music or voices in Skyrim after intro video
  39581  iMesh 7.x installer warns about old version of Microsoft Windows Media Player (missing 'HKLM\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{6BF52A52-394A-11d3-B153-00C04F79FAA6}' registry key)
  39613  Microsoft .NET Framework 1.1 fails to install with Wine 1.3.2+
  39630  Issue while building wow64 for Slackware 14.1

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

Changes since 1.7.55:

Alexandre Julliard (13):
      winegcc: Force stack alignment on all x86 platforms.
      winegcc: Disable setting image base address on Android.
      make_makefiles: Configure substitutions are allowed in the top makefile.
      configure: Build binaries as PIE on Android.
      configure: Disable the preloader on Android.
      configure: Use the standard dll directory on Android.
      makefiles: Generate makefiles and po rules only for disabled dlls.
      winex11: Always create direct rendering OpenGL contexts.
      winex11: Make OpenGL traces more compact and readable.
      user32/tests: Fix a test that assumes that a menu handle is invalid.
      user32: Add workaround for removed SC_TASKLIST system menu item.
      configure: Don't allow doing a 32-bit Wow64 build from inside the source tree.
      advapi32: Don't try to create the registry root.

Alistair Leslie-Hughes (2):
      odbccp32/test: Correct tests without privileges.
      configure: Correctly detect OpenAL.

Andrew Eikum (2):
      user32: Use font default height if GetTextExtentPoint returns empty rectangle.
      kernel32: Always uninitialize the terminal for the console shell process.

Andrew Nguyen (1):
      dinput: Allow EnumDevices callback functions with broken calling conventions.

Andrey Gusev (2):
      wine.inf: Add HKLM\Software\Microsoft\MediaPlayer\Installation DirectoryLFN key.
      po: Update Ukrainian translation.

André Hentschel (2):
      winepulse: Avoid 32-bit calculation with 64-bit result (Coverity).
      winepulse: Add missing return after default case in a switch (Coverity).

Aric Stewart (2):
      hidclass.sys: Break the report descriptor into multiple lines.
      comctl32: ILC_COLORDDB imagelists can be created with 0 sizes.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Austin English (3):
      user32: Use winediag debug channel for some error messages.
      opengl32: Add "Not Microsoft" to Copyright string to satisfy CATIA.
      ntoskrnl.exe: Add CmRegisterCallback/CmUnRegisterCallback stub.

Bruno Jesus (1):
      user32: Don't add scroll bars to mdiclient if the window style doesn't allow it.

Dmitry Timoshkov (3):
      user32/tests: Add more tests for mixed menu with strings and bitmaps.
      user32: Menu item with a "magic" bitmap should not have MFT_BITMAP type set.
      user32/tests: Add some tests for mdiclient scrolling.

François Gouget (7):
      cmd/tests: Fix handling of synchronization line mismatches.
      cmd/tests: Use net session to verify we have sufficient privileges.
      wined3d: Make surface_prepare_rb() static.
      configure: Clean up the winmm module checks.
      msvcp120/tests: Make i386_Thrd_current() static.
      advapi32: Fix the FILE_DIR_DISALLOWED spelling.
      cmd/tests: Fix the %~a check on Windows >= 8.

Henri Verbeet (9):
      d2d1: Validate brush types in d2d_d3d_render_target_FillGeometry().
      d2d1: Add support for opacity brushes.
      d2d1: Add a pixel shader for triangle/bitmap/bitmap draws.
      d2d1: Add a pixel shader for triangle/bitmap/solid draws.
      d2d1/tests: Add some tests for opacity brushes.
      d2d1: Add a pixel shader for triangle/solid/bitmap draws.
      d2d1: Take the recommended rendering mode into account in d2d_d3d_render_target_DrawGlyphRun().
      d2d1: Calculate intersections in a more robust way in d2d_geometry_intersect_self().
      wined3d: Ignore "always_offscreen" for ORM_BACKBUFFER in context_create().

Hugh McMaster (4):
      reg/tests: Fix the add empty type test.
      cmd: Set colour attributes when clearing the screen with 'cls'.
      cmd: 'del' should set %errorlevel% to zero, not one, on error.
      Assorted spelling and grammar fixes.

Jacek Caban (5):
      ole32: Use absolute key path in create_classes_root_hkey.
      mshtml: Added support for getElementsByTagName in document fragment nodes.
      ntdll: Added more NtOpenKey tests.
      kernel32: Call registry functions with full key path.
      mshtml: Make msec argument of setTimeout optional.

Józef Kucia (1):
      d3d11: Implement d3d11_immediate_context_RSGetViewports().

Ken Thomases (3):
      winemac: Add resource file.
      winemac: Enable localization of strings used to build Mac menus.
      winemac: Use the display unit number rather than display ID for the initial display mode registry key.

Nikolay Sivov (12):
      gdi32/tests: Some empty string tests for GetTextExtentPoint.
      comctl32/tests: Enable visual tests in interactive mode, fix build failure.
      winex11: Remove tracing function that was never used.
      oleaut32: Remove unused tracing macro.
      user32/tests: Use separate test window for each scrollbar test.
      kernel32: Fix context initialization for EnumDateFormatsExEx.
      winmm: Initialize AUXCAPSA.wReserved1 returned from auxGetDevCapsA() (Coverity).
      dwrite: Return face count of 1 for CFF file type.
      po: Update Russian translation.
      d2d1: Properly free brush data buffer is created from.
      user32/tests: Relax iCaptionWidth test to fix some failures.
      winmm: Initialize reserved fields of data returned by waveOutGetDevCapsA and waveInGetDevCapsA (Coverity).

Piotr Caban (10):
      oleaut32: Take lcid into account while parsing input variant in VARIANT_FormatNumber.
      oleaut32: Take lcid into account while parsing input variant in VARIANT_FormatDate.
      oleaut32: Take lcid into account while parsing input variant in VARIANT_FormatString.
      msxml3/tests: Add more IXMLDOMNode_get_text tests.
      msxml3/tests: Add tests for sub-nodes whitespaces trimming while getting node text.
      msxml3/tests: Show that sub-elements should not be divided with ' ' in IXMLDOMNode_get_text.
      msxml3/tests: Add CDATA block to whitespace trimming tests.
      winex11.drv: Send WM_DROPFILES if IDropTarget_Drop failed or DROPEFFECT_NONE was set.
      winex11.drv: Inform x11 that we're interested in drop if windows expects WM_DROPFILES message.
      winex11.drv: Don't call IDropTarget::{DragOver,DragLeave,Drop} functions if DragEnter fails.

Qian Hong (3):
      atl100: Implemented semi stub AtlAxCreateControlLic and AtlAxCreateControlLicEx.
      ntoskrnl.exe: Add PsRemoveCreateThreadNotifyRoutine stub.
      server: Remove out of date comment.

Sebastian Lackner (2):
      ntdll/tests: Print the correct status code in ok() messages.
      server: Do not require SeBackupPrivilege in load_registry and unload_registry.

Vincent Povirk (1):
      setupapi: Add a manifest to indicate the tests don't need elevation.

--
Alexandre Julliard
julliard@winehq.org
