The Wine development release 1.7.36 is now available.

What's new in this release (see below for details):
  - Some preliminary 64-bit support for Mac OS X.
  - Support for configuring speakers in Winecfg.
  - Improved support for Mac OS X Trash folder.
  - Support for typographic features in DirectWrite.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.36.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.36.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.7.36 (total 44):

  11117  Youtube Downloader crashes on unimplemented shdocvw.DoFileDownload
  14448  Spectaculator: menu icons do not show properly when not fullscreen
  16373  Adobe Reader 8.1 can't open "Beyond Adobe Reader"
  17271  Office 2003/2007 help does not work
  18357  MyHeritage Family tree builder crashes in the begining of the installtion (NSIS installer)
  21327  Weird behaviour with Alt+Tab and wine fullscreen applications
  24331  NI Circuit Design Suite 10.1.1 fails to install
  24384  Program Error - My Heritage Family Tree Builder
  27558  EA Origin: application starts in Polish instead of English
  28142  GODS-Lands of Infinity: NPCs have multiple shadows
  29289  Sharepod crash
  29655  Adobe Reader 9.5.0 fails to open document restricted by remote server (Adobe LifeCycle Rights Management security)
  30016  iWin Games Manager installer crashes on unimplemented function oleaut32.dll.OleSavePictureFile
  30261  Imperial Glory - Creating multi-player game causes crash
  30344  Windows 8 consumer preview setup crashes due to unimplemented function msi.dll.MsiEnumClientsExW
  30432  UpdateResource doesn't update Resource Table virtual address
  30823  mono program incorrectly writing Chinese characters to console with Wine mono
  32229  Windows Live Essentials 2012 web installer crashes (CreateHardLinkTransactedW and DeleteFileTransactedW missing)
  32297  dwChannelMask, nAvgBytesPerSec and nBlockAlign handled incorrectly by mmdevapi drivers in IsFormatSupported.
  32524  mmdevdrv assertion failure on FarCry3 loading screen
  32943  GOG.com Uru Complete Chronicles crashes after intro videos
  34603  Trainsimulator 2014 crash at start/fails to start
  34806  Brothers in Arms Road to Hill 30 demo: Clicking sounds in audio
  35755  UltraISO 'ISODrive.sys' crashes on unimplemented function ntoskrnl.exe.ExfInterlockedRemoveHeadList
  35893  sdb2xml (.NET 2.0 app) crashes on unimplemented function apphelp.dll.SdbOpenDatabase
  36466  Add WScript.Echo support for VBScripts and JScripts
  36684  fRo game ( Ragnarok ) : loop bug while installing
  36882  Certain Touhou Games (10, 14, 14.3) run at 20 FPS rather than 60
  37012  Evernote 5.5.x crashes when accessing the Market tab
  37250  PDFXChange Editor 5.5 build 309.0 crashes on unimplemented function cryptui.dll.CryptUIDlgSelectCertificateFromStore when trying to sign a document
  37272  CheatEngine 6.4 fails after remote process 'breakin', reporting 'Debugger Crash:Access violation (Last location:41)'
  37691  Problems with internal windows in IDA (Qt)
  37749  Parts of .ogg files played in Touhou Danmakufu ph3 (Wine 1.7.33) are skipped
  37872  Multiple applications need support for IHTMLWindow2::open '_self' window name (CompeGPS)
  37880  Watchtower Library 2010 crashes on startup
  37895  PostgreSQL 9.3 VBScript based post-install steps fail due to parser errors (optional parameter between other parameters, pair of empty commas)
  37940  Invalid file buffering behavior causes data corruption
  37941  msvcr100.dll lacks two functions: iswpunc_l and iswspace_l needed for Dragon Naturally Speaking
  37951  ASUS PC Link needs KERNEL32.dll.GetSystemFirmwareTable
  37953  stack overwrite in msvcrt functions
  37970  prntvpt.dll.PTQuerySchemaVersionSupport not implemented (Photoshop CS6 crashes)
  37987  Medieval 2: Total War crashes with built-in msvcp71
  38017  sdb2xml (.NET 2.0 app) crashes on unimplemented function apphelp.dll.SdbGetFirstChild
  38018  Windows Live Essentials 2012 web installer crashes on unimplemented function ktmw32.dll.RollbackTransaction

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

Changes since 1.7.35:

Akihiro Sagawa (3):
      winmm/tests: Add MPEGVideo driver tests using a wave audio file.
      mciqtz32: "status mode" returns resource strings.
      po: Update Japanese translation.

Andrew Eikum (1):
      winmm: Allow HMIXEROBJ handles in place of device IDs in mixerGetDevCaps.

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

Austin English (18):
      include: Add minimal ntdef.h.
      kernel32: Add GetSystemFirmwareTable stub.
      include/ddk: Add KWAIT_BLOCK struct to ntddk.h.
      kernel32: Sync spec file with windowss 7.
      prntvpt: Add a stub for PTQuerySchemaVersionSupport.
      msi: Add stubs for MsiEnumClientsExA/W.
      evr: Add stub dll.
      include: Add hidusage.h.
      kernel32: Add CreateHardLinkTransactedA/W stubs.
      oleaut32: Add a stub for OleSavePictureFile.
      ntoskrnl.exe: Add a stub for ExInterlockedRemoveHeadList.
      shdocvw: Add DoFileDownload stub.
      apphelp: Add a stub for SdbOpenDatabase.
      cryptui: Add CryptUIDlgSelectCertificateFromStore stub.
      ktmw32: Add a stub for RollbackTransaction.
      apphelp: Add a stub for SdbGetFirstChild.
      apphelp: Add a stub for SdbCloseDatabase.
      ntoskrnl.exe: Add ExfInterlockedRemoveHeadList stub.

Charles Davis (4):
      configure: Check that we can link to QuickTime.framework before using it.
      winemac.drv: Always initialize a closure-captured object pointer.
      ntdll: Support 64-bit Mac OS.
      dbghelp: Support 64-bit dyld_all_image_infos structures, too.

Daniel Scharrer (1):
      kernel32: Add stub implementation for EnumResourceLanguagesEx.

Henri Verbeet (11):
      d2d1: Implement d2d_bitmap_brush_GetTransform().
      d2d1: Implement d2d_linear_gradient_brush_GetTransform().
      d2d1: Implement d2d_solid_color_brush_GetTransform().
      d2d1: Implement d2d_bitmap_brush_SetTransform().
      d2d1: Implement d2d_linear_gradient_brush_SetTransform().
      d2d1: Implement d2d_solid_color_brush_SetTransform().
      d2d1: Implement d2d_bitmap_GetPixelSize().
      d2d1: Implement d2d_bitmap_GetDpi().
      d2d1: Implement d2d_bitmap_GetSize().
      d2d1: Implement bitmap brush support for d2d_d3d_render_target_FillRectangle().
      d2d1: Implement d2d_d3d_render_target_DrawBitmap().

Jacek Caban (14):
      mshtml: Added URI_ flags declaration and improved debug traces.
      mshtml: Added support for _self target in IHTMLWindow2::open.
      vbscript: Allow omitting optional function parameters in call expressions.
      wscript: Added IHost::Echo implementation.
      mshtml: Use our submit implementation for all windows, but only for POST method.
      mshtml: Added IHTMLDocument2::ondblclick property implementation.
      jscript: Added support for VT_UI4 variants.
      jscript: Don't use builtin property for exposing Boolean constructor.
      jscript: Don't use builtin property for a few more constructors.
      jscript: Don't use builtin property for *Error constructors.
      jscript: Use separated functions for implementing builtin call, get and set operation.
      jscript: Pass 'this' as jsdisp_t to getters.
      jscript: Pass 'this' as jsdisp_t to setters.
      jscript: Fixed handling VT_VARIANT|VY_BYREF types.

Josh DuBois (2):
      buildimage: Fix typo in conditional.
      buildimage: Allow use of rsvg-convert as alternative to rsvg.

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

Ken Thomases (6):
      winemac: When Cocoa brings a window forward, tell Wine even if it's disabled or no-activate.
      winemac: Track which window was brought forward by Cocoa separately from the window receiving the click event.
      winemac: Tell Wine that Cocoa brought a window forward even if a window is being dragged.
      opengl32: Fix get_current_context_type() to not shift the type bits down.
      winemac: Prevent interpolation of the window surface image when it's blitted to the actual window.
      winemac: Raise full-screen windows in front of the status items in the Mac menu bar.

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

Mark Harmstone (6):
      mmdevapi: Allow PKEY_AudioEndpoint_PhysicalSpeakers to be overridden.
      dsound: Fix 3D positioning bug with head-relative buffers.
      mmdevapi: Do nothing on property store Commit.
      winecfg: Add speaker config controls to audio tab.
      winecfg: Fix bug causing 5.1 speakers to appear as stereo.
      include: Add standard effect GUIDs to dsound.h.

Matteo Bruni (2):
      opengl32: Don't use deprecated functions for extension checking purposes on core profile contexts.
      wined3d: Use the core version of the asynchronous queries functions.

Nikolay Sivov (13):
      dwrite: Initial implementation of GetTypographicFeatures().
      dwrite: Make sure we don't have duplicates in locale/value pairs for font names.
      kernel32/tests: Make loader tests independent from each other.
      kernel32/tests: Remove todo_wine that doesn't work anymore.
      kernel32: Fix writing resource section as a last section in UpdateResource().
      kernel32/tests: Remove a couple of duplicated constants.
      dwrite: Forward GetGdiCompatibleMetrics() to newer call.
      dwrite: Implement GetCaretMetrics().
      po: Update Russian translation.
      dwrite: Simplify collection_find_family().
      dwrite: Improve error handling during font collection creation.
      dwrite/tests: Fix couple of leaks when creating test font instance.
      dwrite: Implement GetGlyphCount().

Orion Poplawski (1):
      msvcrt: Bump MSVCRT_MB_LEN_MAX to 5 and use it in MSVCRT__wctomb_l for default buffer lengthSet MB_LEN_MAX to 5 to match MSVCRT_MB_LEN_MAX.

Piotr Caban (11):
      msvcrt: Handle read buffer flushing in msvcrt_flush_buffer helper.
      msvcrt: Reset write direction after flush on read/write stream.
      msvcrt: Add _iswspace_l implementation.
      msvcrt: Add _iswpunct_l implementation.
      shell32: Create trash test file in temp directory.
      shell32: Handle TRASH_EnumItems failures correctly.
      shell32: Pass trash path to TRASH_EnumItems.
      shell32: Add partial support for Mac trash enumeration.
      msvcp71: Added basic_string<char>::insert(iterator, char*, char*) implementation.
      user32/tests: Added GetMessagePos tests.
      user32: Only use DIALOGINFO->hwndFocus to store last focus of inactive windows.

Sebastian Lackner (2):
      dbghelp: Don't fill KdHelp structure for usermode applications.
      slc/tests: Add tests for SLGetWindowsInformationDWORD.

Stefan Dösinger (7):
      wined3d: Pass WM_SYSCOMMAND(SC_RESTORE) to DefWindowProc.
      d3d/tests: Show that WM_SYSCOMMAND(SC_RESTORE) is delivered only once.
      wined3d: Fix the color keyed P8 alpha ref value.
      wined3d: Don't use TXP for rectangle P8 textures.
      d3d11: Print UINT sdk_version with %u.
      d3d11: Switch to d3d-style formatting.
      wined3d: Check the d3d buffer to find converted attributes.

YongHao Hu (1):
      msvcp90/tests: Add more tests to ostream_print_complex_float.

--
Alexandre Julliard
julliard@winehq.org
