The Wine development release 1.3.37 is now available.

What's new in this release (see below for details):
  - Completion of the DIB engine.
  - Improvements to the C++ runtime.
  - A number of fixes in the audio drivers.
  - Unnecessary Direct3D options removed from WineCfg.
  - Some fixes to the built-in Internet Explorer.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.37.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.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.3.37:

   6076  MSI Live Update 3 NTACCESS.SYS helper driver crashes due to unimplemented function hal.dll.HalTranslateBusAddress
   9001  Pro evolution soccer 6 crashes at startup
   9653  zMod does not work anymore
  11343  hMailServer 4.x service calls some unsupported WSAIoctl ioctl codes
  14575  Tarr Chronicles: fails to start
  15139  A private .NET program won't connect to mssql server (WSAIoctl missing support for SIO_KEEPALIVE_VALS)
  15427  RagTime 5.6.5 does not start
  15538  gdi32: path.ok test succeeds in todo block in PC-BSD/OS X
  15770  MySQL 5.1 service fails to start due to missing HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters registry subkey
  17372  Adobe Framemaker 9 installer crashes
  17510  EngIntsite CSS Editor crashes
  17946  In Firefox Tiny-MCE-Editor shows strange Signs
  18197  AutoCAD 2008: .chm files aren't rendered correctly
  18238  MAMEUIFX32 disappears Whenever you click audit roms or refresh/reload to update your roms list.
  18244  Yahoo messenger 9: Crashes after logging in
  19203  Paint Shop Pro 6.0 crashes on startup
  19323  Digidelivery Client can't attach files correctly
  21073  no sound in wow&warcraft 3 sound crackle
  22446  AutoCAD 2008: Quick Help Toolbar paints outside the window
  22866  Cannot input new warrior name  in the game Taikou Risshiden 5
  22902  QIP Infium (single) icon transparency problem
  23204  Editor refresh problems in EngIntsite CSS Editor
  23875  World of Warcraft Launcher crash.
  24217  Victoria 2 demo crashes during load without MaxShadowSize 0
  24346  No sound in Prince of Persia: The Forgotten Sands except for intro videos
  24563  Black Mirror 2: assertion failure on startup
  24885  Microsoft Urban Assault Trial (1998) (Direct3D game) doesn't run.
  25618  Super Meat Boy fails to output audible sound
  25628  Hitman Blood money - No Sound When Playing
  25921  SolidWorks 2008: Hangup at starting application
  26038  'wine iexplore gmail.com' fails with 'Gmail requires cookies to be enabled'
  26060  Oblivion: when exiting Oblivion.exe continues running
  26405  Builtin IE miss to display the origin page while open a pop-up page with window.open
  26411  Microsoft Flight Simulator X (both demo and full) hang on first screen
  26451  MyPhoneExplorer Version 1.8 Icons in toolbar are not clickable
  27018  iexplore.exe www.autodesk.com/products causes hang-up
  27166  L4D2:  Character voice audio missing during intro.
  27184  Unhandled Exception in CoreAudio (AudioRenderClient_ReleaseBuffer)
  27575  QQMusic installer needs msvcp60.dll.??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z
  27613  XMLHTTP method DELETE is unimplemented
  27701  Panta Rhei demoscene demo crashes on startup (custom loader can't cope with opengl32 -> gdi32 forwarded imports)
  27765  Injecting mouse events with autohotkey/steam now fails
  27987  Microsoft Visual Studio 2005 and .NET 2.0 Framework SDK installers fail on CA_RollbackHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8 (error 1603)
  28176  Lineage 2 High Five client fails, needs setupapi.dll.CM_Get_DevNode_Registry_Property_ExW
  28370  Multiple Apps (QQMusic installer, NightSky, etc ) need msvcp60.dll.?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z
  28384  Copy to clipboard not working in EMS SQL Manager
  28391  Thief Gold Edition, Portal: sound is broken when using coreaudio driver
  28604  2gis laggy map redraw
  28964  Capella 5.3.13: Missing method msvcp60.dll.?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z
  29028  Starcraft crashes on exit
  29224  WinMerge crashes on startup with builtin msvcp71 (purist)
  29243  Homefront: Choppy sound in menu and game play
  29316  QQ2011  installer needs gdiplus:GdipDrawImagePointsI to draw UI
  29328  Installation of Solidworks license manager fails with msi error 1603
  29342  Bloxx It shows only a blank screen
  29391  SetupNgen.exe crashes while installing Paint.NET 2.5 (needs wshom.ocx WshShell3_get_SpecialFolders implementation)
  29402  Broken mp3 playback in FeralHeart (irrklang?)
  29440  "Abashera revamped" fails to install
  29457  PbSetup60.exe crash at unimplemented function ntoskrnl.exe.Ke386IoSetAccessProcess
  29459  Afterburner 3D crashes immediately after starting
  29463  Any Video Converter Professional needs msvcp60.dll.?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z
  29469  Audio stops working; as a result, Rosetta Stone gets stuck
  29475  IECookiesView crashes on entering internet privacy options, needs inetcpl.cpl.LaunchPrivacyDialog
  29484  Microsoft Visual C++ 2010 Runtime installer crashes in "repair" and "uninstall" mode (empty VolumeLabel in Media table)
  29505  Mozart11 crashes on start up
  29524  Firefox 9.0.1 crashes immediately
  29542  ddraw clipper tests fail when run in virtual desktop
  29546  Black Mirror 2: in-game videos freezing
  29551  Panta Rhei demoscene demo crashes on startup due to missing opengl32.dll glDebugEntry export/stub
  29553  Sonic R demo installer hides typed text if started from a long path
  29555  Age of Empires II screen locks up after playing for around 15 minutes
  29562  Foxit PDF Reader v5.xx crashes after starting
  29578  Internet Explorer 9 installer for Vista needs photometadatahandler.dll and xpsprint.dll
  29587  Visual FoxPro application fatal error when loading JPEG
  29588  Nero BurnRights needs setupapi.dll.CM_Set_Class_Registry_PropertyA
  29589  Interface corruption in the Windows Live Essentials 2011 installer

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

Changes since 1.3.36:

Akihiro Sagawa (1):
      po: Update Japanese translation.

Alexandre Julliard (54):
      gdi32: Calculate the image size in GradientFill only once we have the correct bit count.
      gdi32: Add stubs for the OpenGL entry points in the DIB driver.
      d3d8/tests: Convert a file to utf-8.
      d3d9/tests: Convert a file to utf-8.
      Update copyright info for 2012.
      secur32/tests: Don't compare the encrypted results if the session key is different.
      gdi32: Fix skipping of zero-length dashes.
      gdi32: Only create the round cap region once per call.
      gdi32: Skip empty segments at the beginning and end of a line to make sure the caps are correct.
      gdi32: Add a helper function for drawing a wide line segment.
      gdi32: Add a helper function for drawing multiple line segments.
      gdi32: Implement dashed wide lines.
      gdi32: Get rid of the pen deferring support, all pen styles are implemented now.
      gdi32/tests: Add some tests for brushed and dashed wide pens.
      gdi32: Draw rectangles in the order specified by the current arc direction.
      gdi32: Use a better algorithm for CreateRoundRectRgn.
      gdi32: Implement Ellipse and RoundRect, using line segments for now.
      gdi32: Add a helper function for computing the device rect for PS_INSIDEFRAME.
      gdi32: Implement Arc, ArcTo, Chord, and Pie, using line segments for now.
      gdi32: Add a stub for the ExtFloodFill entry point.
      gdi32: Don't allow Get/SetDeviceGammaRamp on DIBs or memory DCs.
      gdi32: Add an empty ExtEscape DIB driver entry point.
      winex11: Remove DIB locking calls from all graphics functions.
      msvcrt: Don't name a local variable 'errno'.
      msvcrt: Use the correct type for findnext64.
      gdi32: Get rid of the SetDIBColorTable driver entry point.
      gdi32: Stop forwarding object selection calls to x11drv.
      user32: Return the cursor position in send_hardware_message and use it to update the driver's position.
      gdi32/tests: Remove device capabilities test that fails on XP.
      user32/tests: Fix some test failures on Windows.
      opengl32: Get rid of the DIB section sync support.
      winex11: Fix support for PALETTEINDEX mapping and get rid of DIBINDEX support.
      winex11: Remove the remainining DIB section locking calls.
      gdi32: Add a separate set of GDI object functions for DIBs.
      gdi32: Simplify CreateDIBSection and avoid using the reference DC if not needed.
      gdi32: Use the bpp info from the bitmap structure now that it's identical to the DIB one.
      gdi32: Get rid of the get_bitmap_funcs function.
      gdi32: Always store a DIBSECTION structure in the bitmap object.
      gdi32: Use the bitmap part of the DIBSECTION structure for the DDB object information.
      gdi32: Get rid of the CreateDIBSection driver entry point.
      winex11: Move the clipboard DIB creation functions to clipboard.c.
      winex11: Avoid using DIB functions to create the dithering image.
      winex11: Get rid of the DIB section support.
      winex11: Remove the global XRender installed flag.
      winex11: Create XRender colors from the original COLORREF and add support for PALETTEINDEX colors.
      winex11: Avoid some references to the X11 device from XRender.
      winex11: Store the XRender format in the bitmap structure.
      comctl32: Fix management of imagelist growth amount.
      wininet: Don't free name before the IPv6 lookup.
      winex11: Don't cache text and background pixel values to support PALETTEINDEX properly.
      user32: Don't access past the file size when loading a cursor/icon.
      comctl32/syslink: Fix painting of background color for transparent controls.
      gdi32: Simplify the CreateCompatibleBitmap implementation.
      gdi32: Store foreground/background color even when passed CLR_INVALID.

Alistair Leslie-Hughes (3):
      mscoree: Implement CLRRuntimeHost_ExecuteInDefaultAppDomain.
      mscoree: Don't pass the string as a reference type.
      include: Add missing DB_E_BAD defines.

Andrew Eikum (4):
      wineoss.drv: Fix IAudioRenderClient::{Get,Release}Buffer protocol.
      mshtml: Fix WARN typo.
      itss: Use case-insensitive strcmp.
      winealsa.drv: Remove "strange number of channels" FIXME.

André Hentschel (35):
      po: Update German translation.
      ntdll/tests: Add optional return value for some win7 machines.
      d3drm: Add IDirect3DRMFrame2 interface.
      usp10: Check for pointer before using it (Coverity).
      d3drm: Add IDirect3DRMFrame3 interface.
      Assorted header comment cleanup.
      po: Update German translation.
      mshtml: Remove unused definitions.
      po: Update German translation.
      po: Update German translation.
      setupapi: Add stub for CM_Get_DevNode_Registry_Property_ExW.
      dbghelp: No need for WINE_ prefixed ERR.
      kernel32: No need for WINE_ prefixed debug output macros.
      ntdll: No need for WINE_ prefixed debug output macro.
      ole32: No need for WINE_ prefixed debug output macro.
      user32: No need for WINE_ prefixed debug output macro.
      winex11.drv: No need for WINE_ prefixed debug output macros.
      xcopy: Fix a typo.
      po: Update German translation.
      setuapi: Add stub for CM_Set_Class_Registry_PropertyA.
      setuapi: Add stub for CM_Set_Class_Registry_PropertyW.
      setuapi: Add stub for CM_Get_DevNode_Registry_Property_ExA.
      setupapi: Add stub for CM_Get_Class_Registry_PropertyA.
      setupapi: Add stub for CM_Get_Class_Registry_PropertyW.
      po: Update German translation.
      d3drm: Fix QueryInterface forwarding.
      d3drm: Add more MeshBuilder tests.
      d3drm: Add more Frame tests.
      d3drm: Move Load implementation to IDirect3DRMMeshBuilder3.
      d3drm: Add IDirect3DRMDevice2 interface.
      d3drm: Add IDirect3DRMViewport interface.
      d3drm: Add more partial stubs for device creation.
      d3drm: Move GetTextureCoordinates from IDirect3DRMMeshBuilder2 to IDirect3DRMMeshBuilder3.
      d3drm/tests: Add refcount testing.
      d3drm: Implement GetVertices for IDirect3DRMMeshBuilder3.

Aric Stewart (13):
      usp10: Implement ScriptGetFontLanguageTags.
      usp10: Replace GSUB_get_lang_table with GSUB_GetFontLanguageTags.
      usp10: Convert tag in LoadedFeature to OPENTYPE_TAG.
      usp10: Implement ScriptGetFontFeatureTags.
      usp10: Replace GSUB_get_feature with GSUB_GetFontFeatureTags.
      usp10: Have load_GSUB_feature return LoadedFeature*.
      usp10: Cache feature lookups.
      usp10: Add more Microsoft Sans Serif fallbacks.
      usp10: Move CMAP functions to opentype.c.
      usp10: Move GDEF functions to opentype.c.
      usp10: Move GSUB functions to opentype.c.
      usp10: Better handle cases in single line edit controls where es->x_offset exceeds line length.
      wineqtdecoder: Lower the Merit of the filters.

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

Austin English (4):
      wine.inf: Add Tcpip/Winsock/Winsock2 service registry keys.
      comctl32: Fix a grammar error in comment.
      photometadatahandler: Add stub dll.
      xpsprint: Add stub dll.

Daniel Lehman (17):
      msvcp90: Use passed in beg to find the length in basic_string<>::replace.
      msvcp90: Make type_info::mangled larger.
      msvcp90: Add num_get<wchar_t> stubs.
      msvcp90: basic_string<>::rfind(ch) should call rfind.
      msvcrt: Make WEOF returned from swscanf signed.
      msvcp90: Fix return value for ctype<wchar_t> do_is(ch).
      msvcrt: Sync _wtempnam with _tempnam.
      msvcrt: Add struct and prototypes for existing _findfirst64 and _findnext64.
      libwine: Use larger buffer in vsnprintfW for large numbers.
      msvcrt: Add _snwprintf_l.
      dbghelp: Use CDECL calling convention for __unDName and callbacks.
      msvcp90: Add basic_ios<wchar_t> stubs.
      kernel32: If string arg to FormatMessage is NULL, use "(null)" instead of crashing.
      msvcp90: Add num_get<char> stubs.
      msvcp90: Forward uncaught_exception to msvcrt.
      msvcp90: Add num_get<short> stubs.
      msvcp90: Flip num_get<char/wchar_t> do_get_long and do_get_ulong in vtable.

Detlef Riekenberg (2):
      shell32: Remove outdated dll names from comments.
      shell32: Reorder functions to avoid forward declarations.

Diego Nieto Cid (1):
      wined3d: Convert rtInternal and glGammaInternal.

Dmitry Timoshkov (4):
      user32: Add some tests for SetFocus/SetActiveWindow called on invalid or belonging to another thread windows.
      user32: Add an invalid window check to SetFocus.
      user32: Add an invalid window check to SetActiveWindow.
      msvcrt: Add some tests for strftime/wcsftime.

Eric Pouech (4):
      winedbg: In x86_64 backend, now recognize 'rep ret' as a valid function return instruction.
      dbghelp: Correctly return flags in SYMBOL_INFO structure for local variables stored in a register.
      dbghelp: When StackWalk fails to get any frame information, create a default one.
      winedbg: Added support for qAttached query packet.

Francois Gouget (24):
      notepad: Remove unused resource strings.
      winmm: Don't include newlines in standard error messages.
      wineboot: Store the RunKey names in regular string variables.
      include: wincodec.idl should not import objidl.idl.
      include: ocmm.idl should import oleidl.idl.
      include: mshtml.idl should import dispex.idl.
      include: tom.idl should import ocidl.idl.
      include: winsxs.idl should not import oleidl.idl.
      comdlg32: Remove some unused string resources that are not present on Windows.
      wineconsole: Don't pad tab labels with spaces.
      msvcp60: Add a trailing '\n' to a couple of TRACE() messages.
      oleview: Mark a couple of button labels as not needing translation.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      wshom.ocx: Make debugstr_variant() static.
      jscript: Make some engine functions static.
      ddraw: Make ddraw_reset_enum_callback() and ddraw_surface_destroy() static.
      oleaut32/tests: Use win_skip() when detecting an API is missing.
      oleaut32/tests: Fix the olepicture START_TEST() indentation.
      oleaut32/tests: Skip some tests when OleLoadPictureEx() is not available.
      oleaut32/tests: Once we have a function pointer, use it consistently.
      oleaut32/tests: Skip the VarBstrCat() tests when that API is not available.
      oleaut32/tests: Dynamically load some functions that are missing on early NT4 releases.
      comdlg32: Specify a context for the luminance and saturation abbreviations.
      winhlp32: Standardize the 'Not yet implemented' messages.

Frédéric Delanoy (4):
      po: Update French translation.
      cmd: Avoid unreachable code (Coverity).
      po: Update French translation.
      po: Update French translation.

Gustavo Henrique Milaré (1):
      po: Update Brazilian Portuguese translation.

Hans Leidekker (8):
      msi: Accept a missing left backquote in SQL identifiers.
      msi: VolumeLabel and DiskPrompt are optional fields in the Media table.
      msi: Don't crash on secondary root folders in msi_resolve_target_folder.
      msi: Execute custom actions in the right script.
      fusion/tests: Add a test for IAssemblyCache::QueryAssemblyInfo.
      msi: Fix detection of installed global assemblies.
      msi: Downgrade an error.
      msi: Don't try to ready media for files from a previous installation or files that will be skipped.

Henri Verbeet (45):
      wined3d: Recognize i915g as Intel.
      wined3d: Recognize some more Intel GPUs.
      d3d10/tests: Add a state groups test.
      wined3d: Get rid of the WINED3DSHADEMODE typedef.
      wined3d: Get rid of the WINED3DFILLMODE typedef.
      d3d10: Add a D3D10CompileEffectFromMemory() stub.
      d3d10: Return D3D10_SVT_VOID instead of 0 from d3d10_variable_type().
      d3d10: Handle D3D10_SVT_BUFFER.
      wined3d: Get rid of the WINED3DCULL typedef.
      wined3d: Get rid of the WINED3DSTENCILOP typedef.
      ddraw/tests: Add some clipper tests.
      ddraw: Refuse to set a clip list if a clipper is already tracking a window.
      ddraw: Disallow clipped blits in ddraw_surface7_BltFast().
      wined3d: Get rid of the WINED3DMATERIALCOLORSOURCE typedef.
      wined3d: Get rid of the WINED3DPATCHEDGESTYLE typedef.
      ddraw: Use the window's client rect for clipping.
      ddraw: Implement IDirectDrawClipper::SetClipList().
      ddraw: Convert to integer before adjusting the clipped source rect.
      wined3d: Get rid of the WINED3DBACKBUFFER_TYPE typedef.
      wined3d: Get rid of the WINED3DSWAPEFFECT typedef.
      wined3d: Allow 10-bpc formats as render targets.
      ddraw: Don't leak the window region if we have an extra clip rect in ddraw_clipper_GetClipList().
      wined3d: Only flip SFLAG_DIBSECTION once in flip_surface().
      wined3d: Get rid of the WINED3DSAMPLERSTATETYPE typedef.
      wined3d: Get rid of the WINED3DMULTISAMPLE_TYPE typedef.
      ddraw/tests: Add tests for clippers with a destroyed window.
      ddraw: Properly clear the clip list if ddraw_clipper_SetClipList() is called with NULL region data.
      wined3d: Simplify transform flag handling in find_ps_compile_args().
      wined3d: Get rid of the WINED3DTEXTURESTAGESTATETYPE typedef.
      wined3d: Get rid of the WINED3DTEXTURETRANSFORMFLAGS typedef.
      wined3d: Set SFLAG_PIN_SYSMEM when the application tries to use surfaces that are currently mapped.
      d3d8: Don't expose wined3d internal flags to the application.
      d3d9: Don't expose wined3d internal flags to the application.
      wined3d: Get rid of the WINED3DTEXTUREOP typedef.
      wined3d: Get rid of the WINED3DTEXTUREADDRESS typedef.
      winecfg: Remove the Direct3D settings.
      wined3d: Hold the wined3d mutex in device_process_message().
      ddraw/tests: Fix some surface locking calls.
      wined3d: Get rid of the WINED3DTRANSFORMSTATETYPE typedef.
      wined3d: Get rid of the WINED3DBASISTYPE typedef.
      ddraw: Implement width and height changes in ddraw_surface7_SetSurfaceDesc().
      wined3d: Get rid of wined3d_surface_set_format().
      include: Add some missing DDLOCK constants.
      wined3d: Get rid of the WINED3DCUBEMAP_FACES typedef.
      wined3d: Get rid of the WINED3DTEXTUREFILTERTYPE typedef.

Huw Davies (1):
      gdi32: Don't create the outline region twice.

Hwang YunSong (2):
      po: Update Korean translation.
      po: Updated Korean translation.

Jacek Caban (40):
      vbscript: Added support for VARIANTREF arguments in multiple argument functions.
      vbscript: Added InStr implementation.
      vbscript: Added InStr tests.
      jscript: Always alloc the first chunk of code buffer.
      jscript: Make 0 an invalid code offset.
      jscript: Get rid of instr_off from expression_t.
      jscript: Use 0 as an invalid label value.
      ieframe: Added ITargetFramePriv2 interface to HlinkFrame object.
      ieframe: Improved test traces.
      mshtml: Use IUri for IHTMLLocation::get_search implementation.
      ieframe: Remove useless #undef.
      vbscript: Added for each loop parser implementation.
      mshtml: Use a helper function for QueryService calls in hlink_frame_navigate.
      mshtml: Use QueryService helper function in SetClientSite implementation.
      mshtml: Use do_query_service in QueryService implementation.
      ntdll: Make LdrLoadDll hotpatchable.
      jscript: Run script tests in version 2 by default.
      ieframe: Added IServiceProvider interface to InternetExplorer object.
      ieframe: Always create doc view window when creating InternetExplore object instance.
      ieframe: Added IHTMLWindow2 stub implementation.
      ieframe: Added IHTMLWindow2 service tests.
      ieframe: Added INewWindowManager stub implementation.
      urlmon.idl: Removed local attributes from IUri and IAuthenticate interfaces.
      ieframe: Added support for SID_SHTMLWindow in WebBrowser::QueryService.
      ieframe: Store embedder iface as IWebBrowser2 in DocHost.
      ieframe: Added semi-stub IHTMLWindow2::close implementation.
      ieframe: Added implementation of AggregatedNavigation2.
      mshtml: Added IHTMLWindow::open implementation.
      mshtml: Added more IHTMLWindow2::open tests.
      jscript: Fixed continue inside for..in statement.
      mshtml: Open document in a new window in IHlinkTarget::Navigate if the document is not embedded.
      mshtml: Reimplement nsIURL::GetDirectory using new helper functions.
      mshtml: Reimplement nsIURL::GetFileName on top of IUri.
      mshtml: Reimplement nsIURL::GetFileBaseName on top of IUri.
      mshtml: Get rid of wrapped nsurl.
      jscript: Don't use break in finally block on pre-IE8 jscript.
      jscript: Run sanity check with invoke_version 0.
      jscript: Fixed jscript tests on some broken versions.
      mshtml: Get rid of wrapped nsIURI in nsWineURI.
      mshtml: Moved NPAPI struct declarations to npplugin.c.

Jörg Höhle (23):
      dsound: Fix the computation of the mixer position in bytes.
      mciseq: Only send non-MCI commands to DefDriverProc.
      mciseq: Check Device ID prior to command invocation.
      mciseq: Refactor use of mciGetDriverData.
      mciseq: wNotifyDeviceID is redundant.
      winmm: Fix conversion to MMTIME, avoid floating point arithmetic.
      mmdevapi: Avoid HeapRealloc when no data need be copied.
      mmdevapi: GetDevicePeriod returns constants.
      winecoreaudio: Fix latency calculation.
      winealsa: Have GetStreamLatency reflect the ALSA period.
      wineoss: GetStreamLatency is constant, SNDCTL_DSP_GETODELAY is dynamic.
      winmm: Ignore broken nBlockAlign and AvgBytes within PCMWAVEFORMAT.
      winealsa: Unify the checks for wBitsPerSample.
      winealsa: Check ValidBitsPerSample and support SND_PCM_FORMAT_S20_3LE.
      mmdevapi: Round buffer size like native in shared mode.
      winealsa: Fix AudioRenderClient Get/ReleaseBuffer protocol.
      mmdevapi/tests: Fix some test failures on native.
      winmm: GetCurrentPadding is superfluous while recording.
      winealsa: Reset accounts for dropped frames in capture mode.
      winealsa: Stop may not use snd_pcm_drop or lose written frames.
      dsound: Vista/XP SP2 reworked the Speaker Configuration.
      wineoss: Reset accounts for dropped frames in capture mode.
      winecoreaudio: Fix AudioCaptureClient Get/ReleaseBuffer protocol.

Kusanagi Kouichi (3):
      gdi32: GetGlyphIndices doesn't substitute glyph.
      winex11.drv: Assign struct.
      winex11.drv: Fix IME status handling.

Luca Bennati (3):
      po: Update Italian translation.
      po: Update Italian translation.
      po: Update Italian translation.

Lucas Fialho Zawacki (1):
      dinput: Added DI_SETTINGSNOTSAVED flag.

Marcus Meissner (7):
      jscript: Mark some function DECLSPEC_HIDDEN.
      usp10: Mark two functions as hidden.
      mshtml: Mark function as hidden.
      wshom.ocx: Mark one function as static, one as hidden.
      msvcrt: Mark various internal functions as hidden.
      ws2_32: Removed dead code (Coverity).
      gdi32: Check return value of REGION_UnionRectWithRegion (Coverity).

Matteo Bruni (9):
      wined3d: Don't try to remove the location flag if it's not there in the first place.
      wined3d: Don't use separate location flags for depth buffers.
      d3d9/tests: Add more INTZ tests.
      d3d9/tests: Fix NP2 check.
      d3d9/tests: Multisampled depth buffer tests.
      d3d8/tests: Add more INTZ tests.
      wined3d: Set depth textures dirty after modifying the underlying surface.
      wined3d: Modify depth-stencil location flags only after allocating the new location.
      wined3d: Handle discarded depth-stencil surfaces with SFLAG_LOST.

Michael Stefaniuc (10):
      jscript: Remove break after return (Smatch).
      ddraw: Fix two memory leaks (Smatch).
      dsound: COM cleanup for the IDirectSoundCaptureBuffer8 iface.
      dsound: Drop "Capture" from the IDirectSoundNotify method names.
      dsound: Add an extra refcount for the capture buffer object.
      dsound: Merge IDirectSoundNotify into the capture buffer object.
      dsound: Make capture behave like native in regards to COM aggregation.
      dsound/tests: Remove some returns in the capture buffer tests.
      dsound/tests: Sanitize START_TEST() in capture.c.
      dsound/tests: Add some COM tests for capture.

Nikolay Sivov (34):
      wshom.ocx: Dump VARIANT parameters, fix instance leak.
      wshom.ocx: Implement IWshCollection::Item() for Desktop folder case.
      wshom.ocx: Implement IWshCollection::Item() for public desktop case.
      wshom.ocx: Implement IWshCollection::Item() for common programs folders.
      wshom.ocx: Added IWshShortcut stub.
      wshom.ocx: Implement IWshShortcut_put_Description().
      wshom.ocx: Implement IWshShortcut_put_WorkingDirectory().
      wshom.ocx: Implement IWshShortcut_put_TargetPath().
      wshom.ocx: Implement IWshShortcut::Save().
      po: Update Russian translations.
      comctl32: Fix TB_SETSTYLE behaviour and return value.
      comctl32: Store style bits provided with WM_CREATE.
      comctl32: Remove redundant parameter from a helper.
      msxml3: Add a stub for IAuthenticate.
      msxml3: Remove wrong ERR(), some renames.
      msxml3: Move put_dataType() test data to a table.
      msxml3: Some put_dataType() tests for nodes without typed data.
      shell32: Store common menu data in a separate structure.
      shell32: Remove redundant loop to count already known value.
      shell32: Use S_OK as successful return code name.
      msxml3: Debug output support for VT_ERROR.
      shell32: Remove menu insertion helper.
      shell32: Get rid of rename helper.
      shell32: Merge ShellView menu implementations into a single file.
      msxml3: Try mshtml container url as a base for relative request url.
      shell32: Merge menu implementations together.
      shell32: Get rid of menu enabling helper.
      shell32: Use shared IUnknown implementation for both vtables.
      shell32: Update to IContextMenu3.
      shell32: Avoid pointer casts when background menu is created.
      shell32: Avoid casts when creating item menu.
      shell32: Unix folder COM cleanup.
      msxml3: Leading space chars are allowed in SelectionNamespaces value string.
      shell32: Rearrange code to avoid forward declarations.

Pablo Saratxaga (1):
      kernel32: Corrections to Walloon locale.

Pierre Schweitzer (9):
      appwiz.cpl: Fix handle leak.
      wineqtdecoder: Fix handle leak.
      winex11.drv: Fix handle leak.
      winecoreaudio.drv: Fix handle leak.
      wininet: Fix handle leak.
      taskmgr: Fix handle leaks.
      winetest: Fix handle leak.
      kernel32: Fix handle leak.
      dplayx: Fix handle leak.

Piotr Caban (21):
      msvcp90: Update data pointer after resizing string.
      msvcp60: Added basic_string<char> support.
      msvcp60: Don't forward _Lockit calls to msvcp90.
      msvcp60: Added partial exceptions support.
      msvcp60: Added basic_string<unsigned short> implementation.
      msvcp60: Fix basic_string::rfind(char) implementation.
      msvcp60: Added full basic_string::_Grow implementation.
      msvcp90: Fix errors related to name demangling.
      msvcp: Sync spec files.
      msvcp60: Fix errors related to name demangling.
      msvcp90: Fix mistakes in spec file.
      urlmon: Fixed UriBuilderFactory IUnknown implementation.
      urlmon: Added Uri IPersistStream stub implementation.
      urlmon: Added Uri IPersistStream_Save implementation.
      urlmon/tests: Added Uri IPersistStream_Save tests.
      urlmon: Added CUri ClassFactory implementation.
      urlmon: Return error in IUri functions on uninitialized object.
      urlmon/tests: Test uninitialized IUri object.
      urlmon: Added Uri IPersistStream_GetClassID implementation.
      urlmon: Added Uri IPersistStream_Load implementation.
      urlmon/tests: Added Uri IPersistStream_Load tests.

Rico Schüller (5):
      d3dx9/tests: Add effect parameter value int test.
      d3dx9/tests: Add effect parameter value object test.
      d3dx9/tests: Add special handling test.
      d3dx9/tests: Add effect parameter value SetBool() test.
      d3dx9/tests: Reset effect parameter value data after each try.

Stefan Leichter (3):
      opengl32: Replace the remaining forwards of wgl functions to gdi32.dll in the spec file with wrapper function.
      hal: Add stub for HalTranslateBusAddress.
      opengl32: Added export glDebugEntry to spec file.

Vincent Povirk (7):
      gdiplus: Implement GdipDrawImagePoints.
      gdiplus: Test GdipCreateBitmapFromHBITMAP with 16-bit dib's.
      gdiplus: Implement GdipCreateBitmapFromHBITMAP for 16-bit dibs.
      include/wincodecsdk.idl: Fix typo.
      windowscodecs: Add a stub IWICMetadataReader/Writer implementation.
      windowscodecs: Implement IWICMetadataWriter::LoadEx.
      windowscodecs: Implement IWICMetadataWriter::GetEnumerator.

--
Alexandre Julliard
julliard@winehq.org
