The Wine development release 1.9.10 is now available.

What's new in this release (see below for details):
  - High resolution ("Retina") rendering option on Mac OS X.
  - More compatible directory enumeration.
  - A number of C++ runtime fixes.
  - Video output improvements.
  - Various bug fixes.

The source is available from the following locations:

  http://dl.winehq.org/wine/source/1.9/wine-1.9.10.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.9/wine-1.9.10.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.9.10 (total 25):

   9532  Month calendar control uses 0=sunday for firstDayOfWeek
  13843  tooltips not working properly - message problems
  14638  Discription file of task configuration \'C:\plc.xml\' not found
  18166  dlls/ntdll/directory.c: implicit declaration of function 'getdirentries'
  20383  SetMenuInfo() with MIM_BACKGROUND not implemented
  24017  Multiple applications need 'reg.exe' 'query' operation implementation
  24916  Soulbringer: crash in D3D Hardware mode
  26268  Multiple applications need ntdll.ZwSetLdtEntries stub (kwiksupport.me, Ragnarok Online patcher)
  32056  iexplore images.google.com doesn't work
  33961  RPC: server crashes during procedure call that returns variable size array as out parameter
  34122  Multiple applications expects files returned by FindFirstFile/FindNextFile to be in alphabetical order (Civilization V with 2 expansion packs, TAGAP)
  36838  TOCA Touring Car Championship: installer copies one file from CD and then shows an error
  37090  Multiple applications crash with built-in amstream (Shogun: Total War, Medieval: Total War)
  37926  NordicBet Poker-client fails to install
  38625  Pac-Man Championship Edition DX+: incomplete text rendering
  38811  Java JRE 8 installer 'jre-8uXX-windows-i586.exe' crashes on startup (GetThreadPreferredUILanguages is a stub)
  39509  OneDrive for Business installer crashes in Win8 mode (user32.dll 'SetCoalescableTimer' stub missing)
  39940  Stars! tooltips have wrong background color
  40027  Caesar IV Demo crashes at launch
  40342  playSNOW.exe needs implementation of KERNEL32.dll.InterlockedPushListSList
  40355  HeidiSQL not starting since version 1.9.5
  40517  Office 2007 shows error message "Unexpected error during export" when trying to export document as PDF file
  40532  Microsoft Word Viewer 11.8 does not show text on file properties dialog until the text is selected
  40550  AfterEffects CS6 crashes at launch
  40562  AkelPad: [ToolBar plugin] tooltips for toolbar buttons have some extra text

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

Changes since 1.9.9:

Akihiro Sagawa (4):
      po: Update Japanese translation.
      imm32: Avoid null pointer dereference in trace.
      imm32: Use wine_dbgstr_rect() and wine_dbgstr_point() in traces.
      imm32/tests: Add tests for life cycle of default IME window.

Alex Henrie (2):
      ole32: Fix memory leak in FileMonikerImpl_ComposeWith.
      riched20: Don't call UpdateWindow after setting the background color.

Alexandre Julliard (14):
      server: Add support for maintaining a client-side directory cache.
      ntdll: Store the directory identity and search mask in the directory cache.
      inetcomm: Don't use strcasecmp on Ansi strings.
      ntdll/tests: Convert directory filename tests to Unicode.
      ntdll: Implement RtlCompareUnicodeStrings.
      ntdll: Cache the entire directory contents and sort the names before returning files.
      ntdll/tests: Add tests for directory sorting.
      configure: We no longer use getdirentries.
      kernel32: Don't bother storing the file mask in FindFirstFileEx.
      kernel32: Don't cache the full directory in FindFirstFileEx.
      ntdll: Support remaining information classes in NtQueryDirectoryFile.
      makefiles: Fix symlink rules when ln -s isn't supported.
      comctl32/status: Use DrawFrameControl to draw the size grip.
      kernel32/nls: Convert remaining files to UTF-8.

Alistair Leslie-Hughes (7):
      inetcomm: Implement IMimeBody SetProp.
      inetcomm: Implement IMimeBody GetProp.
      inetcomm: Add MimeGetAddressFormatW stub.
      d3d11shader.h: Add ID3D11Module, ID3D11ModuleInstance interfaces.
      d3dcompiler: Add D3DLoadModule stub.
      inetcomm: Improve IMimeMessage SetOption.
      inetcomm: Ignore OID_SAVEBODY_KEEPBOUNDARY value in IMimeMessage_SetOption.

Andrew Eikum (6):
      winmm: Restrict some MCI actions to the creating thread.
      powrprof: Stub PowerSetActiveScheme.
      winegstreamer: Add YUV to ARGB32 transformation filter.
      winegstreamer: Flip video output.
      qcap: Search the whole graph for an unconnected pin.
      qedit: Don't require SampleGrabber to be playing to call callback.

Andrey Gusev (14):
      setupapi: Fix a typo in comment.
      shell32/tests: Fix a typo in comment.
      tools/winapi: Fix a typo in comments.
      user32/tests: Fix a typo in ok() message.
      wintrust/tests: Fix a typo in ok() messages.
      gdi32/tests: Fix a typo in trace() message.
      msxml3: Fix a typo in comment.
      dbghelp: Fix a typo in comment.
      user32/tests: Fix a typo in comment.
      po: Update Ukrainian translation.
      wined3d: Fix a typo in checkGLcall.
      d3d9/tests: Fix a typo in skip() message.
      wined3d: Fix a typo in FIXME() messages.
      msvfw32: Fix a typo in TRACE() message.

André Hentschel (2):
      user32/tests: Don't test function directly when reporting GetLastError().
      msvcrt/tests: Don't test function directly when reporting errno.

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

Austin English (1):
      ntdll: Add NtSetLdtEntries/ZwSetLdtEntries stub.

Charles Davis (1):
      winemac.drv: Move create_bitmap_from_dib() above the import/export functions.

Daniel Lehman (4):
      ntdll: Add NtQueryMutant.
      ntdll: Fix prev_count from NtReleaseMutant.
      ntdll: Add trace for NtQueryEvent/Semaphore.
      ntdll: Remove stub from trace.

François Gouget (6):
      d3dx9_36/tests: Spelling fixes for mesh and xfile ok() messages.
      qmgr: Fix a spelling error in a TRACE().
      dwrite: Fix a typo in dwrite_3.idl.
      dwrite: Notify_factory_fallback_removed() is unused so remove it.
      user32/tests: Fix a spelling error in a scroll comment.
      kernel32/tests: Fix a spelling typo in a virtual comment.

Gerald Pfeifer (1):
      riched20: Properly clear all of a buffer of type WCHAR.

Hans Leidekker (4):
      webservices: Add a stub implementation of WsCall.
      webservices: Add support for reading date values.
      webservices: Implement WsDateTimeToFileTime.
      webservices: Implement WsFileTimeToDateTime.

Hugh McMaster (6):
      kernel32/tests: Add more tests for GetConsoleFontInfo.
      kernel32/tests: Add tests for SetConsoleFont.
      reg: Output the number of matches when querying the registry recursively.
      reg: Output line break before displaying query output.
      reg/tests: Add tests for 'reg query'.
      reg/tests: Add tests for 'reg add/delete/query /?'.

Jacek Caban (27):
      user32/tests: Moved creating .ico file into a helper function.
      user32: Use proper types in ICO_GetIconDirectory.
      user32/tests: Added PrivateExtractIcons test.
      mshtml: Ensure that bind_event is not called multiple times for the same event.
      mshtml: Bind load event directly to the target.
      mshtml: Added IHTMLElement2::oncontextmenu property implementation.
      wininet: Return synchronously from InternetReadFileEx if there is no more data to read.
      wininet: Added support for IRF_NO_WAIT flag.
      wininet/tests: Added IRD_NO_WAIT flag tests.
      msctf: Improved ITfKeystrokeMgr::TestKeyUp and TestKeyDown stubs.
      mshtml: Fixed GetNextDispID for the case when the first dynamic property is deleted.
      msctf.idl: Added ITfTransitoryExtensionSink declaration.
      msctf: Use generic sink type for thread manager sinks.
      msctf: Moved thread manager's AdviseSink implementation into a more generic helper.
      msctf: Moved thread manager's UnadviseSink implementation into a more generic helper.
      msctf: Moved thread manager's sink list destructor implementation into a more generic helper.
      msctf: Added a helper macro for interating sink list.
      msctf: Use generic sinks in Compartment object.
      msctf: Use generic sinks in Context object.
      msctf: Use generic sinks in InputProcessorProfiles object.
      msctf: Added document manager's AdviseSink and UnadviseSink implementation.
      msctf: Added ITfTransitoryExtensionSink tests.
      jscript: Properly handle function expressions with identifiers.
      wininet: Updated winehq.org cert info.
      wininet: Fixed http tests on win10.
      wininet: Get rid of test_http1_1 test.
      wininet: Added open_simple_request helper and use it where appropriate.

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

Ken Thomases (12):
      winemac: Implement the WGL_WINE_query_renderer extension.
      winemac: Use floor() rather than truncation when converting Cocoa event positions to integers.
      winemac: Add support for a high-resolution ("Retina") rendering mode.
      winemac: Remove the assumption that OpenGL views are always immediate subviews of the window content view.
      winemac: Add function macdrv_set_view_superview().
      winemac: Change macdrv_set_view_window_and_frame() to macdrv_set_view_frame().
      winemac: Create views hidden initially and add macdrv_set_view_hidden() to change that.
      winemac: Change macdrv_create_view() to not add the new view to a window's content view.
      winemac: Make show_window() and hide_window() tolerate being called when there's no Cocoa window.
      winemac: Extract some logic into a new function, sync_window_z_order().
      winemac: Mirror the hierarchy of Win32 child windows with Cocoa views.
      winemac: When a child window's client area is equal to its whole area, use a single Cocoa view for both.

Kim Malmo (2):
      po: Update Norwegian translation.
      po: Update Norwegian translation.

Kirill K. Smirnov (2):
      msi: Do not return success on failure (spotted by clang).
      mciavi32: Propely handle Heap[Re]Alloc failure.

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

Maarten Lankhorst (3):
      dsound: Use AudioClient buffer statistics.
      dsound: Use AudioClient for position.
      dsound: Mix float natively.

Michael Müller (6):
      dwmapi: Return S_OK in DwmSetWindowAttribute stub.
      quartz: FileSource_Load should not fail on unknown file formats.
      amstream: Implement IAMMediaStream::GetMultiMediaStream for video.
      amstream: Implement IDirectDrawMediaStream::GetMultiMediaStream.
      amstream: Implement IAMMediaStream::GetMultiMediaStream for audio.
      amstream: Implement IAudioMediaStream::GetMultiMediaStream.

Michael Stefaniuc (6):
      wmp/tests: Use SetRect() instead of open coding it.
      dwrite/tests: Use SetRect() instead of open coding it.
      dwrite: Use SetRect() instead of open coding it.
      user32: Use IsRectEmpty() instead of open coding it.
      wined3d: Use IsRectEmpty() instead of open coding it.
      ddraw: Use IsRectEmpty() instead of open coding it.

Nikolay Sivov (22):
      ctl3dv2: Claim success in Ctl3dRegister().
      comctl32/listview: Simplify setting redraw mode flag.
      d3dx10: Implement D3DX10UnsetAllDeviceObjects().
      comctl32/tooltips: Cut tooltip text at first tab char unless TTS_NOPREFIX is used.
      dwrite: Make IDWriteGdiInterop1 a part of a factory.
      dwrite: Implement GetFontSignature().
      dwrite: Use common structure to pass stream/facetype/index data around.
      po: Update Russian translation.
      dwrite/tests: A test for references returned from IDWriteFontFace3.
      dwrite: Fix reference equality condition.
      dwrite: Validate simulation flags and fail face/reference creation.
      dwrite: Implement IDWriteFontList1::GetFont().
      dwrite: Implement IDWriteFontList1::GetFontFaceReference().
      dwrite: Implement IDWriteFontFamily1::GetFontFaceReference().
      include: Added IDWriteFontSet definition.
      comctl32/header: Use proper return type for HDM_CREATEDRAGIMAGE handler.
      comctl32/imagelist: Simplify setting ImageList_DragEnter() return code.
      kernel32: Handle NULL locale name in IsValidLocaleName().
      kernel32: Set C3_KASHIDA only for kashida character.
      kernel32/nls: Added SSHORTESTDAYNAME* entries.
      webservices: Actually use channel type in WsCreateServiceProxyFromTemplate() (Clang).
      msvcrt/tests: Fix a test failure on early XP versions.

Olivier F. R. Dierick (2):
      shell32: Set last error explicitly in SHFileOperation().
      shell32/tests: Tests for broken apps that check GetLastError() after SHFileOperation().

Paul Gofman (2):
      d3dx9: Add 'exp' preshader opcode.
      d3dx9: Add test for 0 * INF preshader operation.

Pierre Schweitzer (2):
      comdlg32: Check for overflow before dereferencing.
      user32: Check bounds before dereferencing.

Piotr Caban (13):
      mshtml: Add more <img> onload tests.
      mshtml: Fix HTMLWindow3_setInterval behavior on 0 msec intervals.
      mshtml: Make it possible to clear timer and interval with any of clearTimeout and clearInterval functions.
      msvcp90: Allocate facetvec of size at least 40 in locale::_Locimp::_Locimp_Addfac.
      msvcr100: Add missing fields to lconv structure.
      msvcrt: Fix mbtowc behavior for buffers containing more than one character.
      msvcp110: Fix Yarn::operator=(const char*) implementation.
      msvcp110: Don't allocate empty buffers in _Locinfo::_Locinfo_ctor.
      msvcp110: Use locale_string::assign instead of freeing and allocating new object in _Locinfo__W_Getdays.
      msvcp110: Fix num_put<char> structure layout.
      msvcrt: Fix mbsrtowcs behavior when no out buffer is passed.
      msvcrt: Add mbsrtowcs_s implementation.
      msvcrt: Add mbsrtowcs_s tests.

Sebastian Lackner (7):
      ntdll: Initialize Reserved_0 bit in NtQueryInformationThread.
      mscoree: Avoid buffer overflow when mono print handler returns huge string at once.
      ntdll: Make sure buffer allocated in get_cached_dir_data is big enough for returned entry.
      kernel32: Fix possible leak of directory handle in RemoveDirectoryW.
      amstream/tests: Add tests for GetMultiMediaStream methods.
      ntdll: Fix buffer allocation check in get_dir_data_space.
      dsound: Get rid of no longer needed mix_buffer_len field.

--
Alexandre Julliard
julliard@winehq.org
