The Wine development release 1.8-rc3 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-rc3.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8-rc3.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-rc3 (total 40):

   8775  spider solitaire from XP fails to flash card when you ask for hint
   9491  CListCtrl:GetSubItemRect doesn't work for the label row
   9919  Microsoft Access Snapshot Viewer 10.0 install fails (GetPrivateProfileString16 must only return valid key names)
  11627  Need for Speed 2 SE 3dfx demo fails to start
  15083  ReadConsoleInputW() returns wrong values for CTRL+SPACE
  15866  MechCommander 2: DSERR_CONTROLUNAVAIL errors
  20480  Soldier of Fortune II Multiplayer Main Menu won't show up (ATI specific)
  22922  Black and White 2 1.2 is slow, gives GL errors
  24388  Exposure 3.0 crashes while creating exposure image
  26317  AVRStudio 4 installer fails, reports 'The application is already installed'
  27165  ffdshow A/V config tool: drop-down list doesn't appear
  29595  Microsoft Software Jukebox needs  HKLM\Software\Classes\Applications\iexplore.exe\shell\open\command key
  29788  Microsoft Word 2007 needs unimplemented function propsys.dll.PSGetPropertyDescriptionListFromString for saving a file when winver set to Vista or later
  32621  Mouse pointer jumps on opening/closing WinUAE settings window
  34086  MS Paint shows some images messed up.
  35330  Typo: "in a separate windows" on the Man Page (at http://www.winehq.org/docs/wine )
  35941  ncurses is installed but not detected by configure.
  36345  TGB Dual 8.3 ( Game Boy/Game Boy COLOR emulator) crashes when loading a ROM
  37308  PCB123 v2.1.0.7000: slow screen redrawing
  37894  EarthQuake3D (Earthquake monitor) fails to update data, reports 'Error: Server Connection Problem'
  38559  GTA4: crash after benchmark has completed
  38633  SiN Gold (GOG.com) intro videos get frozen
  38851  Wine64 build produces extra warning in secur32 comparing to Wine32 build
  38926  WineHQ should build vanilla Wine binary packages of the biweekly releases for major distros
  38974  Red Faction Guerilla: texture smearing at the side of the screen
  38993  Memory Blocks for Windows 3.x has missing tile animation
  39465  Gif Movie Gear 2.63 about window's gif only animates when mouse is moving (ReleaseDC should force surface flush when main thread is idling)
  39564  Paranormal State: Poison Spring (Steam) crashes on exit with built-in msctf.dll
  39580  AVISave[A,W] is using va_* instead of __ms_va_* definitions for va_list
  39600  Bad sound with Steam Games
  39607  Broken Image in Fitting Window.
  39634  Git v2.6.3 (MSYS2 based): 'rebase.exe' fails on post-install steps (commit page when handling stack fault)
  39670  Eclipse (Europa) does not start
  39673  Logical error in comparison (misprint)
  39683  CreateRestrictedToken() uses wrong enum value for default impersonation level
  39691  TI Derive 6 hangs when clicking on the edit menu item
  39693  SQLBindCol prototype is wrong
  39705  Some programs crash/hang when switching desktop screens
  39706  Gazillionaire (Win16 game using VB3 runtime) refuses to start
  39719  Alex Hunter (hidden object game): custom mouse pointer gets stuck (temporarily) when hitting the top of the screen

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

Changes since 1.8-rc2:

Alexandre Julliard (11):
      winoldapp: Grab the Win16 lock again before exiting.
      Revert "user.exe: Release the Win16 lock due to loading 32-bit dlls in CreateWindow."
      winex11: Add a helper function to check a motion event against the serial number.
      winex11: Ignore EnterNotify events that are older than the last mouse wrap.
      kernel32: Also check OS version to detect old binaries in GlobalMemoryStatus.
      winex11: Include raw motion events in the QS_MOUSEMOVE event filter.
      ntdll/tests: Use more reasonable timeouts and avoid long long constants.
      user32/tests: Maximized windows can be full-screen in recent Windows.
      user32/tests: Also ignore WM_SYSTIMER messages in input tests.
      tools: Allow running installed builtin apps even when the 32-bit loader is missing.
      gdi32: Fix StretchDIBits color mapping for monochrome bitmaps without a color table.

Alistair Leslie-Hughes (1):
      webservices: Add missing break.

Austin English (3):
      iexplore: Add 'HKCR\Applications\iexplore.exe\shell\open\command' key.
      wine.inf: Add "HKLM\System\CurrentControlSet\Services\Eventlog\System" key.
      wine.inf: Add HKCR\folder\shellex\ContextMenuHandlers and HKCR\*\shellex\ContextMenuHandlers keys.

Boyuan Yang (1):
      po: Update Simplified Chinese translation.

Bruno Jesus (2):
      msacm32/tests: Add more acmStreamPrepareHeader tests.
      krnl386.exe16: Skip invalid entries in GetPrivateProfileString16.

Dmitry Timoshkov (6):
      oleaut32: Simplify 'for' loop.
      widl: Fixup the defaultvalue(BSTR) expression type like midl does.
      winhttp/tests: Accept Windows7 return value for WinHttpQueryOption(WINHTTP_OPTION_CONNECTION_INFO).
      winhttp/tests: For a secure connection check what WinHttpQueryDataAvailable() returns as well as first chunk of actual data.
      winhttp/tests: Add a test for data returned by IWinHttpRequest::get_ResponseText().
      winhttp/tests: Add a test for data returned by IWinHttpRequest::get_ResponseText() using an https connection.

François Gouget (1):
      Assorted spelling fixes.

Gerald Pfeifer (2):
      krnl386.exe16: Avoid shift overflows in DMA_ioport_out.
      user32: Avoid shift overflow in nulldrv_GetKeyboardLayoutList.

Hans Leidekker (1):
      ieframe: Don't release the advise sink in IOleObject::SetClientSite.

Henri Verbeet (4):
      ddraw/tests: 64-bit ddraw doesn't support textures.
      ddraw: Return DDERR_NOEXCLUSIVEMODE in ddraw_surface7_Flip() when not in exclusive mode.
      ddraw: Mark surfaces as lost when the device window is deactivated.
      ddraw: Do not mark surfaces as lost unconditionally when setting the cooperative level.

Hugh McMaster (4):
      loader: Fix a typo and improve a sentence in wine.man.in.
      kernel32: Replace NULL argument with pointer to DWORD.
      winex11.drv: Ctrl-Space should generate space, not 0.
      user32/tests: Add tests for VK_SPACE, Shift-Space and Ctrl-Space.

Jacek Caban (3):
      exdisp.idl: Added new DWebBrowserEvents2 members declarations.
      ieframe: Fixed tests on some VMs.
      ieframe: Fixed tests on some VMs.

Jactry Zeng (1):
      riched20/tests: Test EM_REPLACESEL with rtf stream.

Ken Thomases (2):
      winemac: Remove a window from the NSWorkspace notification center when it's deallocated.
      winemac: Don't post a WINDOW_BROUGHT_FORWARD event for a click on a window which is already frontmost in its level.

Matteo Bruni (7):
      msctf: Add a partial implementation of ITfThreadMgrEx_ActivateEx().
      d3dx9: Don't take the fastpath when converting between texture formats of different type.
      wined3d: Flush the GL context before switching away from it.
      wined3d: Add ARB_ES2_COMPATIBILITY entry to the core extensions table.
      include: Add missing D3DPMISCCAPS_POSTBLENDSRGBCONVERT flag.
      wined3d: Respect D3DRS_SRGBWRITEENABLE in clears.
      wined3d: Handle D3DRS_SRGBWRITEENABLE in clears when ARB_framebuffer_sRGB is not supported.

Michael Müller (1):
      winedbg: Print windows version in system info.

Michael Stefaniuc (3):
      dsound/tests: Version differences in flag handling for 3d buffers.
      dsound/tests: Test Pan for 3D secondary buffers too.
      dsound: A version 1 3d secondary buffer allows SetPan().

Nikolay Sivov (8):
      usp10: Remove unused helper (Clang).
      avifil32: Use __ms_va* varargs variant for AVISave[A,W].
      odbc32: Fix SQLBindCol prototype.
      oleaut32/tests: Some tests for SafeArrayDestroyData().
      oledlg: Replace existing menu item in case of empty object too.
      advapi32: Use proper enum member to initialize SECURITY_IMPERSONATION_LEVEL variable (Clang).
      ole32/tests: Some tests for CoGetMalloc().
      browseui: Use defined context kind constant with CoGetMalloc().

Olivier F. R. Dierick (2):
      shlwapi: SHFreeShared returns TRUE when passed NULL handle.
      shlwapi/tests: Test SHFreeShared with NULL handle.

Piotr Caban (2):
      comctl32: Set listview focus in WM_LBUTTONDOWN.
      msiexec: Avoid broken pipe error caused by setting SERVICE_STOPPED state twice.

Qian Hong (3):
      ntdll/tests: Add SIMD exception test for floating point invalid operation fault.
      ntdll: Silence useless fixme message when handling SIMD floating point invalid operation exception.
      ntdll/tests: Restore old value in a more context independent way.

Sebastian Lackner (14):
      winex11.drv: Fix specfile entry for X11DRV_ScrollDC.
      winemac.drv: Fix specfile entry for ImeGetRegisterWordStyle.
      wined3d: Fix specfile entry for wined3d_swapchain_get_back_buffer.
      msvcrt: Fix specfile entry for $I10_OUTPUT and _wcstod_l.
      ntoskrnl.exe: Fix specfile entry for MmMapIoSpace.
      ntdll: Commit new guard pages in virtual_handle_stack_fault.
      kernel32/tests: Add tests for committing stack guard pages.
      wine.inf: Add information for delayed end of DST in Europe/Istanbul.
      maintainers: Add section for timezone database.
      oleaut32/tests: Add test for calling method with coclass argument.
      server: Check winstation visibility in server to avoid race-conditions.
      user32/tests: Add test to check ObjectNameInformation for desktop objects.
      user32: Make sure explorer.exe process is spawned for the correct desktop.
      wineboot: Remove unused declaration for __wine_make_process_system.

Stefan Dösinger (1):
      ddraw/tests: Test color keys on cube map surfaces.

--
Alexandre Julliard
julliard@winehq.org
