The Wine development release 1.7.37 is now available.

What's new in this release (see below for details):
  - Interface change notifications.
  - Support for the UTF-7 encoding.
  - A number of graphical fixes for themed controls.
  - Wininet now implemented on top of Win32 sockets.
  - Various bug fixes.

The source is available from the following locations:

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

   8621  Silktest 5 installer aborts on disk space check
   9447  Supreme Commander's FMVs do not skip frames
  10913  start.exe doesn't support optional process title argument
  11764  Add support for multi-channel audio
  12738  Karafun: plays song, but doesn't display lyrics  (kfn file)
  15027  Microsoft Office 2007, Adobe AfterEffects 6 installers EULA very slow
  15974  Metatrader 4 doesn't restore MDI child window positions and (maximized) state on restart
  17322  Multiple applications need partial 'NetUserEnum' implementation (Fresh Diagnose 8.0, Directory Opus 10, Nero Burning ROM v8)
  17702  Ever17 requires the Courier New font
  21004  RCT3 crashes on launch when virtual desktop isn't used (fullscreen).
  23120  Crystal Disk Info 3.6 will not start
  23843  Flickering window title bar in Su Doku Active in virtual desktop mode
  23866  Microsoft Wine Guide crashes, unimplemented function msvideo.dll16._MCIWNDCREATE
  25553  Sometimes 'make test' hangs after an 'under-run' error.
  26565  Multiple games need 'xapofx1_4.dll' audio effects component for XAudio2 (Homefront)
  26759  SIV (System Information Viewer) wants Vista+ connect.dll 'IsInternetConnected' for Internet accessibility check
  27388  IE8 UTF-7 doesn't work
  28295  mshtml/htmldoc.ok flaky
  28298  riched20/editor.ok cursor position test flaky
  28323  urlmon/tests/protocol.ok slightly flaky: protocol.c:2892: Test failed: ref=2
  28470  qmgr tests deadlock with WINEDEBUG=warn+heap on slower machines
  28503  comctl32/treeview.ok fails occasionally
  28524  urlmon:url test case is ok after the 2nd attempt
  28547  ole32/clipboard.ok crashed in X11DRV_CLIPBOARD_LookupData
  28573  user32/cursoricon.ok failed,
  28643  ole32/clipboard.ok crashes rarely in XInternAtoms()
  29072  wldap32 tests flaky because they rely on external host ldap.itd.umich.edu
  29238  Star Trek Armada II: Game crashes when attempting to launch a network game (IDirectPlayVoiceClient_GetCompressionTypes must return at least one result)
  29560  RagTime 5.6.5 installer does not respond to mouseclicks properly
  29924  control and inetcpl show some texts in wrong language
  29938  signcode tool from .NET Framework SDK 1.1 crashes due to unimplemented function cryptui.dll.CryptUIWizDigitalSign
  30323  Unigine Heaven DX11 Benchmark 3.0 Basic Edition: Ambient Occlusion causes graphical issue
  31778  Unhandled page fault while starting CEDAR Logic simulator (A wxWidgets Windows application)
  31924  mixerGetDevCaps does not support mixer device handles
  31951  TomTom Home SatNav needs KERNEL32.dll.SetVolumeMountPointW
  32025  Guitar pro 6 hangs when saving a file
  32137  Kugou2012: crashes when installing
  32328  Many .NET and Silverlight applications require SIO_ADDRESS_LIST_CHANGE for interface change notifications
  32498  installer of PPTV hangs
  32666  Black background in PowerPoint 2003
  32769  PowerPoint 2003 hangs when opening test document
  32777  winmm:mci fails if the current directory is read-only
  32957  SolidWorks 2012 freezes
  33616  secur32: assertion failure in libgcrypt, when loding a page (wine iexplore)
  33709  Skyrim: no sound after intro video in 64 bit wineprefix
  34639  Guild Wars: Crash on starting the game
  34654  GOG.com downloader mode fails in browser (unimplemented association query)
  34895  Internet Chess Club (ICC) Dasher 1.5.x crashes on startup
  34913  GEOVIA Surpac 6.x (geology and mine planning software) needs vbscript:Global_InStrRev
  35455  酷狗音乐盒(KuGou Music) hangs
  35544  Proteus 8 Professional installer needs IWshShell3::RegRead method implementation
  35545  Proteus 8 demo installer needs IWshShell3::RegWrite method implementation
  36258  Gears of War crashes on unimplemented function d3dx9_36.dll.D3DXDisassembleShader
  36544  The Weather Channel Desktop App for Windows fails to install
  36812  Avast! Free Antivirus 9.0.2013 services crash on unimplemented function rpcrt4.dll.I_RpcBindingInqLocalClientPID
  36830  Nexon Atlantica Online: broken launcher/updater reports 'Atlantica is currently under maintenance. Please try again later' (relies on 'wininet' to initialize sockets API)
  37064  Ultima IX sometimes crashes on exit
  37505  window.screenLeft fails silently and stops script execution
  37506  object.setAttribute('') fails silently and stops script execution
  37946  ComputeMark v2.1 crashes on startup (needs 'Win32_VideoController' WMI class 'DriverVersion' property)
  37957  No way to disable "surround sound"
  38002  imperivm stops at the beginning of the first execution after installing
  38003  Outlast needs XAPOFX1_5.dll
  38045  Nitro Family crashes on unimplemented function  msvcp70.dll.??6std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z
  38046  mshtml not fire BeforeNavigate event if the app: hyper link is in a frame window
  38050  Nitro Family crashes on unimplemented function msvcp70.dll.?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z
  38055  The Weather Channel for Windows Desktop 2.1.x (.NET 4.0 app) installer crashes
  38072  GEOVIA Surpac 6.x (geology and mine planning software) installer reports 'WshShell3_Run failed to convert wait argument'
  38077  Livezilla Client 3.2.x (.NET 2.0 app) fails on startup with 'DRAGDROP_E_NOTREGISTERED' (HtmlDocument2::ExecCommand IDM_FONTSIZE support missing)
  38080  NeoImaging could crash after start without native winhttp
  38088  APB Reloaded Launcher (.NET 2.0 app) crashes on startup (some CIM data type to OLE variant (VT) mappings are incorrect)

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

Changes since 1.7.36:

Alex Henrie (5):
      kernel32: Support UTF-7 in WideCharToMultiByte.
      kernel32: Support UTF-7 in MultiByteToWideChar.
      dpvoice/tests: Add GetCompressionTypes tests.
      dpvoice: Turn GetCompressionTypes into a semi-stub.
      cryptui: Fix grammar in warning message.

Alexandre Julliard (1):
      msvcp70: Fix calling convention for a non-member function.

Alistair Leslie-Hughes (1):
      shell32: Implement IApplicationAssociationRegistration QueryCurrentDefault.

Andrey Gusev (2):
      po: Update Ukrainian translation.
      xapofx1_3: Add stub dll.

Austin English (12):
      rpcrt4: Add a stub for I_RpcBindingInqLocalClientPID.
      connect: Add stub dll.
      mf: Add stub dll.
      connect: Add IsInternetConnected stub.
      kernel32: Add SetVolumeMountPointA/W stubs.
      d3dx9_36: Add D3DXDisassembleShader stub.
      crytpui: Add CryptUIWizDigitalSign stub.
      xapofx1_5: Add stub dll.
      xapofx1_4: Add stub dll.
      po: Use English names for Programs Files in Lithuanian translation.
      x3daudio1_1: Add stub dll.
      include: Add msasn1.h.

Bruno Jesus (1):
      rsaenh/tests: Fix a copy & paste issue.

David Heidelberger (1):
      dbghelp: Implement DW_TAG_unspecified_type.

Erich Hoover (5):
      server: Implement socket-specific ioctl() routine.
      server: Add socket-side support for the interface change notification object.
      server: Add blocked support for SIO_ADDRESS_LIST_CHANGE ioctl().
      server: Implement the interface change notification object.
      ws2_32/tests: Add an interactive test for interface change notifications.

Frédéric Delanoy (1):
      po: Update French translation.

Gerald Pfeifer (1):
      vbscript: Avoid use of uninitialized variable in Global_InStrRev().

Hans Leidekker (11):
      msi: Always update column info after applying a transform to the _Columns table.
      msi: Get rid of the open streams cache.
      msi: Get rid of the refcount parameter to msi_addstringW.
      msi: Don't write streams to storage until the database is committed.
      wbemprox: Implement Win32_VideoController.DriverVersion.
      wbemprox: Implement Win32_SID.
      winhttp: Implement a task queue for asynchronous requests.
      winhttp: Return an error from winhttp_request_get_ResponseBody if the request is not sent.
      winhttp: Implement IWinHttpRequest::get_ResponseStream.
      netapi32: Add a partial implementation of NetUserEnum.
      wbemprox: Fix the type mapping for Win32_SoundDevice.StatusInfo.

Henri Verbeet (30):
      wined3d: Add some warnings when resource_init() fails due to format restrictions.
      wined3d: Do not validate format restrictions for buffers.
      wined3d: Implement WINED3DSIH_SQRT in the GLSL shader backend.
      wined3d: Recognize the SM4 ne opcode.
      wined3d: Recognize the SM4 or opcode.
      wined3d: Fix the .spec.
      d3d10: D3D10CreateStateBlock() is implemented.
      dxgi: Implement dxgi_device_SetPrivateData().
      dxgi: Implement dxgi_device_SetPrivateDataInterface().
      dxgi: Implement dxgi_device_GetPrivateData().
      wined3d: Add support for appending vertex declaration elements.
      dxgi: Implement dxgi_adapter_SetPrivateData().
      dxgi: Implement dxgi_adapter_SetPrivateDataInterface().
      dxgi: Implement dxgi_adapter_GetPrivateData().
      dxgi: Implement dxgi_factory_SetPrivateData().
      dxgi: Implement dxgi_factory_SetPrivateDataInterface().
      dxgi: Implement dxgi_factory_GetPrivateData().
      dxgi: Implement dxgi_output_SetPrivateData().
      dxgi: Implement dxgi_output_SetPrivateDataInterface().
      dxgi: Implement dxgi_output_GetPrivateData().
      dxgi: Implement dxgi_surface_SetPrivateData().
      dxgi: Implement dxgi_surface_SetPrivateDataInterface().
      dxgi: Implement dxgi_surface_GetPrivateData().
      dxgi: Implement dxgi_swapchain_SetPrivateData().
      dxgi: Implement dxgi_swapchain_SetPrivateDataInterface().
      dxgi: Implement dxgi_swapchain_GetPrivateData().
      d2d1: Implement d2d_factory_CreateDrawingStateBlock().
      d3d10core: Get rid of the "partial stub" FIXME in d3d10_device_CreateBuffer().
      d3d10core: Get rid of the "partial stub" FIXME in d3d10_device_CreateTexture2D().
      wined3d: Apply modifiers after floatBitsToInt()/floatBitsToUint() in shader_glsl_add_src_param().

Jacek Caban (21):
      d3dcompiler.h: Added a few missing D3DCOMPILE_* flags.
      wscript/tests: Fixed buffer handling and leaks.
      vbscript: Added InStrRev implementation.
      ieframe: Keep reference to This in all IDocObjectService callback calls.
      mshtml: Call FireBeforeNavigate2 for navigation in frames and iframes.
      wininet: Use proper argument type for ioctlsocket argument.
      wininet: Use WSAGetLastError in sock_get_error in Windows builds.
      wininet: Use sock_get_error in a few more places.
      wininet: Properly check for ioctlsocket failure in NETCON_is_alive.
      wininet: Properly handle EWOULDBLOCK return from connect().
      wininet: Initialize winsock before creating socket in Windows builds.
      wininet: Removed direct errno usage in ftp.c.
      wininet: Moved INTERNET_GetNextLine to ftp.c.
      wininet: Use set_socket_blocking helper in a few more places.
      wininet: Always use winsock sockets.
      mshtml: Added execCommand("fontsize") support.
      wininet: Don't strip port part from server name in GetAddress.
      wininet: Use GetAddrInfoW in GetAddress.
      wininet: Moved inet_ntop call to GetAddress.
      wininet: Don't include ws2tcpip.h after zlib.h.
      mshtml: Use constant instead of define for REDIRECT_* flags.

Ken Thomases (1):
      gdi32: Change an ERR to a WARN for fonts with too-long names.

Marcus Meissner (3):
      mshtml: Initialize use_new_window (Coverity).
      msi: Fix memory leak (Coverity).
      winex11.drv: Free uriList (Coverity).

Mark Harmstone (11):
      comctl32: Fix clipping error with themed groupboxes.
      comctl32: Always redraw background on checkbox repaint.
      comctl32: Draw the focus rect on themed checkboxes.
      comctl32: Draw focus rect on themed pushbuttons.
      comctl32: Add themed scrollbar stub.
      comctl32: Use theming when drawing IP address control.
      comctl32: Redraw themed editboxes on focus change.
      comctl32: Fix graphical error on themed progress bars.
      comctl32: Do not call HEADER_FillItemFrame twice in a row.
      comctl32: Themed buttons should not draw in System if font unset.
      winecfg: Draw colour button using theme.

Matteo Bruni (18):
      wined3d: Directly use the core version of glTex[Sub]Image3D.
      wined3d: Only copy POSITION0 output semantics into gl_Position.
      wined3d: Only consider POSITION0 PS inputs as vpos.
      wined3d: Refuse pixel shaders declaring POSITION0 inputs.
      d3d9/tests: Add a test for POSITIONi shader input/outputs.
      wined3d: Call glReadBuffer() through the appropriate function pointer.
      wined3d: Use GL_CLAMP_TO_EDGE instead of GL_CLAMP.
      wined3d: Use unsigned short for the bitfields in struct color_fixup_desc.
      wined3d: Use the proper pitch in read_from_framebuffer().
      opengl32: Introduce wrappers for glGetIntegerv and glGetStringi. (v3).
      d3d9/tests: Allow more alternative results in the ATI1N test.
      d3d8/tests: Allow more alternative results in the ATI1N test.
      wined3d: Set the surface pitch for user-memory surfaces.
      wined3d: Reject unsupported pitches in wined3d_surface_update_desc().
      wined3d: Make sure the correct texture is bound in device_update_volume.
      wined3d: Set GL_UNPACK_ALIGNMENT to 1.
      d3d9/tests: Test upload of user memory textures.
      d3d9/tests: Move a Present out of the loops in fog_with_shader_test().

Michael Stefaniuc (5):
      msvcrt: Avoid identical if and else bodies (PVS-Studio).
      riched20: IDC_IBEAM is already an int resource (PVS-Studio).
      user32: IDI_WINLOGO is already an int resource (PVS-Studio).
      ole32: Remove an always true conditional subexpression (PVS-Studio).
      quartz: Remove an always true conditional subexpression (PVS-Studio).

Nikolay Sivov (9):
      wshom.ocx: Properly handle optional argument in Run().
      vbscript: Fix potential crash if script site creation failed.
      wshom.ocx: Implement RegRead().
      wshom.ocx: Implement RegWrite().
      dwrite: Use vertical variants in GetGlyphs() when appropriate.
      dwrite: Fix error code returned by GetFontFromFontFace().
      dwrite: Set facename field of a LOGFONT in ConvertFontFaceToLOGFONT().
      wshom.ocx: Fix WshShell instance QI behaviour.
      wshom.ocx: Silence class factory QI fixme.

Pierre Schweitzer (1):
      setupapi: Fix string conversion in SetupGetInfInformationA().

Piotr Caban (7):
      server: Filter WM_QUIT message in PeekMessage call if PM_QS_POSTMESSAGE was not specified.
      msvcp: Fix basic_ostream<short>::operator<<(const short*) function export.
      msvcp70: Export basic_ostream::operator<< functions family.
      msvcp70: Add basic_{fstream, ifstream, ofstream, filebuf}::open exports.
      msvcp70: Add basic_istream::operator>> exports.
      user32/tests: Add tests for window clipping with CS_PARENTDC flag.
      user32/tests: Test that CS_PARENTDC enables child window to draw over whole parent window.

Stefan Dösinger (13):
      d3d9/tests: Test rhw table fog z vs rhw.
      d3d8/tests: Test rhw table fog z vs rhw.
      ddraw/tests: Test rhw table fog z vs rhw.
      d3d9/tests: Test rhw depth clip with z enabled but no depth buffer set.
      d3d8/tests: Test rhw depth clip with z enabled but no depth buffer set.
      wined3d: Set z = 0.0 via the projection matrix instead of depth clamping.
      d3d/tests: Geforce8+ GPUs abs() table fog.
      ddraw/tests: Port D3D1_TextureMapBlendTest to ddraw1.c.
      ddraw/tests: Port test_texturemapblend to ddraw2.c.
      ddraw/tests: Port D3D1_ViewportClearTest to ddraw1.c (v2).
      ddraw/tests: Create a device in test_surface_discard.
      wined3d: Manage color key changes in the texture.
      wined3d: Read WINED3D_TEXTURE_COLOR_KEY and gl_color_key to find format conversions.

Thomas Faber (4):
      wininet: Avoid empty initializer braces.
      quartz: Avoid empty initializer braces.
      winegstreamer: Avoid empty initializer braces.
      gdi32/tests: Avoid variable length arrays (MSVC).

Uwe Bonnes (1):
      ntdll: Add more serial speed settings.

Yifu Wang (1):
      msvcr120: Fixed bugs in Concurrency::critical_section.

--
Alexandre Julliard
julliard@winehq.org
