The Wine development release 1.3.20 is now available.

What's new in this release (see below for details):
  - Option to clip the mouse inside fullscreen windows.
  - Support for persistent HTTP connections.
  - Initial implementation of the XML writer.
  - Support for drawing rectangles in the DIB engine.
  - Volume control in MMDevAPI.
  - More MSVC runtime functions.
  - Various bug fixes.

The source is available from the following locations:

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

   4571  Ripp-It_AM app crashes after clicking "Re-encoder un film" button (protect user32.SetSysColors against bad behaving apps)
   8505  antenna crashes
  10220  Windows Media Player 7.1 crashes
  10633  Per Pixel Lightning is drawn wrong
  10635  Tivo Desktop 2.5.1 installer crashes (unimplemented wtsapi32.WTSQueryUserToken)
  11709  Titan Quest game crashes
  12724  3DS MAX 7.0: Cannot render viewport windows and geometry properly in Directx 9 mode
  12926  Installation of Microsoft Zune Software fails (Unimplemented function ADVAPI32.dll.QueryTraceW called)
  13978  Shogun: Total War crashes at startup
  16135  msvcrt.dll._wtmpnam not implemented
  16915  Sven Coop 4 beta install fails due to: Unhandled page fault on write access
  17525  make test fails on wininet:http
  18644  Microsoft reader crashes due to unimplemented msvcirt.dll.??0ostrstream@@QAE@XZ
  18899  Notepad++ right click menu doesn't work
  20275  Quicken 2008 Deluxe help won't display help topics
  20276  Quicken 2008 help crash (uncaught exception)
  20398  Eclipse (Europa) splash screen doesn't look as it should
  20639  Rail Simulator and  Rail Works games crash
  20831  Psychonauts: Flickering textures
  20832  Psychonauts: Crackling sound
  20854  wine lacks ping.exe replacement
  20946  Chromium base_unittests call unimplemented function ADVAPI32.dll.OpenTraceW
  21111  Creative Centrale fails to install
  21523  iexplore doesn't follow redirects
  22501  Bioshock won't run without native msvcp80.dll
  22597  Game crashes at startup when resolution is set higher than 640x480
  22857  Starcraft 2 Editor crashes when the "Data Editor" gets opened.
  23167  Hitman: Blood Money crashes when performing resolution setting change in options
  23246  mono randomly aborts with "GetThreadContext failed" dialog
  23257  TAGAP: mouse input doesn't work
  23492  Windows Driver Kit (WDK) 7.1.0 install fails (check for superclassed case in AtlModuleRegisterWndClassInfoA/W before returning new wndproc)
  23643  America's Army 3.0 goes black after about ten minutes of play
  24138  OpenGL Layered Windows Demo crashes on unimplemented function msvcr100.dll._swprintf
  24452  FurMark doesn't exit
  24567  Multiple apps need msvcp71.dll (purist) (3dmark06, Titan Quest)
  24585  Senstools, fails to install with an error about tempfiles on startup
  24650  Mass Effect 2 (demo/full version): hangs if you alt+tab away and back
  24792  nmake output text no longer visible (dogfood)
  24854  visual c++ 2010's nmake.exe needs native msvcr100.dll
  24898  Kong does not run requires unimplemented function msvcp90.dll.?infinity@?$numeric_limits@M@std@@SAMXZ
  25051  pcsx2-0.9.7-r3878 crashes with unimplemented msvcp90.dll.?max@?$numeric_limits@I@std@@SAIXZ
  25157  Black Prophecy crashes on unimplemented function msvcr100.dll._wcsupr_s_l
  25361  Shatter crashes while loading a level
  25365  Sacred 2 Fallen Angel requires msvcr80.dll
  25525  Unimplented function: msvcp80.dll.??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z
  25530  Harry Potter and the Half Blood Prince Demo fails without native msvcp80
  25541  Family Historian displays the message a serious error has occurred (due to missing msvcrt.dll._strnicoll)
  25640  Rush hangs after starting
  25652  ratGPU standalone renderer hits unimplemented function msvcp90.dll.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z on x86_64
  25908  Crash in winmerge when unfocusing edit field
  25935  Maple Story and Padora Saga installers crash with builtin msvcp90
  26526  R.U.S.E. (steam) demo won't run with builtin msvcp90
  26615  Need for Speed Shift 2 installer assertion failure in cacheckdiskspace.cpp
  26633  Nimbus: invisible text in the menus
  26671  Sims Medieval wants msvcp100:?max@?$numeric_limits@I@std@@SAIXZ
  26789  AutoCAD 2008: Crash at starting installation
  26825  Anomaly: Warzone Earth Demo wants msvcr90.dll._strupr_s (purist)
  26876  special file CON not handled correctly
  26903  Atlantis III crashes before reaching the menu
  26904  Atlantis III: mouse pointer doesn't show up in the menus
  26919  ZipGenius: Crash at start-up
  26935  .NET Framework 1.0 SP3 installation leads to msiexec.exe crash
  26937  Boinc 6.10.60 installer fails
  26975  configure can't find OSSv4 (both Wine and OSSv4 is current from git and mercurial respectively)
  26980  FFXI: Depth Sorting Broken
  26987  Civilization crashes on exit
  26992  Windows Live FolderShare 14.x needs advapi32.RegisterTraceGuidsW() impl (or at least semi-stub)
  26999  Two Worlds: mouse stopped working in the menus
  27006  closing iexplore after opening an invalid url causes a crash
  27038  Cannot install Shark Tale the game.
  27043  Warcraft III - Reign of Chaos - Cannot type text in full screen mode
  27047  need for speed world launcher complains of corrupt executable
  27058  Protection ID: Text from 3rd column in protection report not displayed
  27075  Battlefield Heroes: Punkbuster doesn't work as it should (ntoskrnl.exe.PsLookupProcessByProcessId stub needed)
  27111  Age of Empires III demo install fails
  27130  CR LF characters in RTF files are turned into ^Q ^Y characters
  27132  Crash in MSI_RecordSetStringW when embedding RTF with NUL character into an MSI with Wix
  27137  Mass Effect 2 demo: can no longer enter game (menu items are unclickable)

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

Changes since 1.3.19:

Adam Martinson (3):
      wined3d: Fix an oops/crash in context_destroy_gl_resources().
      d3d9: Use D3DQUERYTYPE instead of HRESULT in IDirect3DQuery9Impl_GetType().
      msxml3: Don't add a <?xml...?> decl in domdoc_get_xml().

Akihiro Sagawa (4):
      appwiz.cpl: Update Japanese translation.
      po: Update Japanese translation.
      gdi32/tests: Add more tests for GetGlyphOutlineA.
      gdi32: Pass a proper code point from GetGlyphOutlineA to W version.

Alexandre Julliard (51):
      msvcrt: Export _aexit_rtn.
      msvcrt: Implemented a few trivial math functions.
      msvcrt: Add stubs for the 64-bit msvcirt entry points.
      configure: Improve the detection of OSS v4.
      wineoss: Get rid of %ll printf formats.
      msvcrt: Add a stub for msvcp70.dll.
      msvcrt: Add a stub for msvcp71.dll.
      tools: Add a script to help synchronize spec files that share an implementation.
      msvcrt: Update spec files using the make_specfiles script.
      winebuild: Allow specifying arguments to stub functions for documentation purposes.
      winebuild: Output relay thunks for stub functions when the arguments are known.
      msvcrt: Specify arguments for the stub functions.
      msvcrt: Allow forwarding to stub functions when the arguments are known.
      d3dx9_36: Specify arguments for stub entry points.
      d3dx9: Synchronize entry point declarations across spec files.
      d3dx10: Specify arguments for stub entry points.
      d3dcompiler: Specify arguments for stub entry points that are used in forwards.
      tools: Add more spec files to synchronize automatically.
      msvcrt: Don't define stubs for data exports.
      msvcp: Don't define stubs for data exports.
      atl: Only return a window procedure in AtlModuleRegisterWndClassInfoA/W when subclassing.
      make_specfiles: Properly replace commented out exports.
      msvcp: Export a couple of variables and their access function.
      msvcp: Implement the numeric limit constants.
      msvcp: Implement the numeric limit functions.
      msvcp: Implement the Ctraits math functions.
      mshtml: Remove an extra quote in the pngfile registration.
      msvcp: Export the various floating point constants.
      winex11: Fix check for desktop process in non-desktop mode.
      user32: Catch bad pointer passed to SetSysColors.
      makefiles: Add support for .x template files.
      dinput: Reset the clipped flag when the cursor is released.
      server: Add separate requests for getting/setting the thread context during suspend.
      server: Add support for suspending the thread directly in the get/set_thread_context requests.
      ntdll: Ask the server to suspend the thread in the get/set_thread_context requests.
      server: Check for the need to suspend a thread again once it leaves an exception or suspend block.
      server: Fix the status code for get/set_thread_context on a terminated thread.
      kernel32/tests: Fix a race that could corrupt the thread register state.
      configure: Make the tools directory a symlink in the wow64 build tree.
      configure: Create a wine64 symlink in 64-bit build trees.
      winex11: Reset the clipping when the desktop window loses focus.
      winex11: Export a couple of helper functions for window rectangles.
      winex11: Automatically clip the pointer when the foreground window is full-screen.
      winex11: Add an option to automatically clip the pointer in desktop and multi-monitor modes.
      winecfg: Replace the old DXGrab option by the new fullscreen grab option.
      winex11: Only update the fullscreen pointer grab when something has changed.
      winex11: Set the desktop window gravity to NorthWest to avoid spurious position changes.
      makefiles: Tools must be built before includes now.
      winex11: Don't use raw events for button events so that we get the right coordinates.
      winex11: Allow MotionNotify events through occasionally while XInput is active.
      winex11: Try a little harder to clip the cursor to avoid some race conditions.

Anders Jonsson (1):
      winecfg: Update Swedish translation.

Andrej Znidarsic (1):
      po: Update Slovenian translation.

Andrew Eikum (14):
      mmdevapi: Initialize global driver data at DLL load time.
      winealsa.drv: Implement IAudioSessionControl::GetState.
      wineoss.drv: Implement IAudioSessionControl::GetState.
      winecoreaudio.drv: Implement IAudioSessionControl::GetState.
      mmdevapi/tests: Add tests for IAudioSessionControl::GetState.
      winealsa.drv: Move IAudioClock closer to its related interfaces.
      winealsa.drv: Implement volume control interfaces.
      wineoss.drv: Move IAudioClock closer to its related interfaces.
      wineoss.drv: Implement volume control interfaces.
      winecoreaudio.drv: Move IAudioClock closer to its related interfaces.
      winecoreaudio.drv: Store the PropertyScope in ACImpl.
      winecoreaudio.drv: Implement volume control interfaces.
      mmdevapi/tests: Make capture.c more easily extendible.
      mmdevapi/tests: Add tests for volume control interfaces.

André Hentschel (10):
      winedbg: Fix a typo.
      winedbg: Implement printing the Program Status Register.
      po: Add German translations.
      winedbg: Update a comment.
      shell32/tests: Also test without flags.
      kernel32: Forward registry functions to advapi32.
      include: Fall back to little endian when it's not specified on ARM.
      winemaker: Let winegcc generate the app loader script.
      include: Update a comment.
      winecfg: Update German translation.

Aric Stewart (5):
      wine.inf: Register wineqtdecoder.dll.
      usp10: Implement ScriptItemizeOpenType.
      usp10/tests: Test ScriptItemizeOpenType.
      usp10: Implementation of ScriptShapeOpenType.
      usp10: Implementation of ScriptPlaceOpenType.

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

Austin English (4):
      kernel32/tests: Fix typo in test failure message.
      ntoskrnl.exe: Add a stub for PsLookupProcessByProcessId.
      dsound: Return success in IDirectSoundBufferImpl_AcquireResources.
      advapi32: Return success in RegisterTraceGuids.

Damjan Jovanovic (5):
      mmsystem: Use SEGPTR for 16 bit string pointers in MCI_XXX_WINDOW_PARMS16.
      mmsystem.dll16: Fix mapping of MCI_WINDOW structures between 16 and 32 bit.
      mmsystem.dll16: Fix MCI_STATUS mapping for digitalvideo.
      mmsystem.dll16: Fix the pointer arithmetic and memory leak issues when unmapping.
      mmsystem.dll16: Use flags instead of device type as the MCI_STATUS heuristic.

David Hedberg (1):
      winspool.drv: Add stubs for IsValidDevmodeW and IsValidDevmodeA.

Detlef Riekenberg (2):
      urlmon: Implement IInternetZoneManager_SetZoneAttributes.
      urlmon/tests: Add tests for IInternetZoneManager_SetZoneAttributes.

Dylan Smith (7):
      tools: Add a tool to build .x template files.
      include: Generate rmxftmpl.h from rmxftmpl.x using new build tool.
      d3dx9: Implement ID3DXMesh::CloneMesh without vertex buffer conversion.
      d3dx9: Implement D3DXMESHOPT_COMPACT for ID3DXMesh::OptimizeInplace.
      d3dx9: Create compact_mesh helper function for OptimizeInplace.
      d3dx9: Implement D3DXMESHOPT_ATTRSORT|D3DXMESHOPT_IGNOREVERTS.
      include: Replace a THIS, with THIS_ for a method with parameters.

Eric Pouech (7):
      winedump: Correctly get to the optional header for 64 bit images.
      winedump: Simplify code a bit by using get_dir_and_size().
      winedump: Simplify code a bit by using IMAGE_FIRST_SECTION() macro.
      dbghelp: Don't try to load fieldlist for a forward declaration.
      dbghelp: Enhance a couple of register mapping functions for i386.
      kernel32: Added some tests about CON special file treatment in CreateFile.
      kernel32: In CreateFile, when trying to open the CON special DOS file, force OPEN_EXISTING as creation flag.

Francois Gouget (16):
      infosoft: Export DllUnregisterServer().
      msvcrt: Make printf_arg arg_clbk_positional() and MSVCRT_wcsrtombs_s_l() static.
      msxml3: Make a bunch of XSLPattern_*() functions static.
      wined3d: Make wined3d_event_query_test() and resource_get_type() static.
      winefile: Fix the View and Options menu handles.
      user32: SCROLL_SetNCSbState() is not used anymore so remove it.
      d3dcompiler_43: Make write_dword_unknown() static.
      regedit: Fix ellipsis usage in the menu labels.
      view: Fix ellipsis usage in the menus.
      winhlp32: Fix the ellipsis usage in the menu and button labels.
      winefile: Fix ellipsis usage in the menu and button labels.
      winecfg: Fix ellipsis usage in the menu and button labels.
      msi: get_msi_typelib() is not used anymore so remove it.
      ddraw/tests: Add a '\n' to an ok() call.
      d3d9/tests: Add a '\n' to a skip() call.
      Assorted spelling and case fixes.

Frédéric Delanoy (5):
      po: Update French translation.
      taskmgr: Fix a French dialog.
      audio: Remove extraneous parentheses around equality comparisons.
      winecfg: Update French translation.
      kernel32/tests: Fix typo.

Gerald Pfeifer (3):
      wineoss.drv: Use AFMT_S24_LE instead of AFMT_S24_PACKED.
      wineoss.drv: Support platforms that do not feature AFMT_FLOAT.
      configure: Use the -Wempty-body compiler option if present.

Grazvydas Ignotas (3):
      gdi32/tests: Test for font selection by full name.
      gdi32: Refactor get_facename to retrieve other names too.
      gdi32: Implement font selection by its full name.

Hans Leidekker (21):
      ws2_32: Add a test to show that WSAIoctl is synchronous.
      msi: Fix handling of components without a key path in MsiEnumComponentCostsW.
      msi: Support remote calls to MsiEnumComponentCosts.
      msi: Avoid casts in IWineMsiRemotePackage methods.
      msi: Skip disabled components in the InstallService action.
      msi: Use a separate function to retrieve the target folder path.
      msi: Rewrite the folder resolution code to keep track of the parent-child relationship.
      msi: Define common strings just once.
      msi: Handle NULL component correctly in MsiEnumComponentCostsW.
      msi: Get rid of helpers.c.
      msi: Avoid loading cabinet streams more than once.
      msi: Destroy assembly caches right after use.
      msi: Add support for version 1.0 of the .NET runtime.
      msi: Keep track of a stream's storage.
      msi: Clone an open stream if possible in cabinet_open_stream.
      msi/tests: Show that MsiSetTargetPath updates folder properties.
      msi: Don't resolve child folders if the parent path is unmodified.
      msi: Remove redundant tracing.
      msi: Improve the stub for MisGetMode(MSIRUNMODE_ADMIN).
      msi: Handle embedded nulls in text archives.
      msi: Unescape ^Q^Y sequences in text archives.

Henri Verbeet (25):
      wined3d: Cleanup surfaces only once.
      d3d9/tests: Destroy the window after we're done with it in test_reset().
      ddraw/tests: Make sure the window is properly released by ddraw in test_wndproc().
      ddraw/tests: Add a test for SetCooperativeLevel() window styles.
      d3d8/tests: Add a test for window styles on device creation.
      d3d9/tests: Add a test for window styles on device creation.
      d3d9/tests: Avoid leaking a device in the Reset test.
      d3d8/tests: Fix some failure messages in test_depth_stencil_size().
      d3d8/tests: Add a Reset test.
      d3d8: Check for D3DPOOL_DEFAULT resources before doing a Reset().
      opengl32/tests: Add a test for GL on window DCs.
      d3d9: Simplify reset_enum_callback().
      d3d9/tests: Add a volume texture test to test_reset().
      d3d8/tests: Add a volume texture test to test_reset().
      wined3d: Rename "shader_backend_t" to "wined3d_shader_backend_ops".
      d3d9/tests: Check if formats are supported for render targets in pixelshader_blending_test().
      wined3d: Add some initial access checking for resources.
      wined3d: Introduce a helper function for translating blend factors.
      wined3d: Get rid of the wined3d_settings_t typedef.
      wined3d: Get rid of the WineD3D_PixelFormat typedef.
      wined3d: Set SFLAG_DYNLOCK for lockable render targets.
      ddraw/tests: Add a small test for redundant mode setting calls.
      ddraw: Skip redundant mode setting calls.
      wined3d: Remove object creation methods from the IWineD3DDevice interface.
      wined3d: Get rid of the SHADER_LIMITS typedef.

Huw Davies (23):
      shell32: Always clone the return pidl to avoid a double free if the selection is changed during teardown.
      gdi32/tests: Allow broken behaviour for nt4 sp1 and sp2.
      oleaut32/tests: Skip the named time tests for locales that use the 24 hour clock.
      advapi32: Fix incorrect pointer increment.
      gdi32: Keep track of the background colour.
      gdi32: Add support for patterned pens.
      gdi32: Add support for drawing horizontal patterned lines.
      gdi32: Add support for drawing vertical patterned lines.
      gdi32: Add support for drawing diagonal patterned lines.
      gameux: Zero initialize the fixed length arrays.
      gdi32: Initialise the bit fields even in the BI_RGB case in order to make format comparisons easier.
      gdi32: Add a missing const.
      shdocvw: Cope with being called without an active document.
      gdi32: Keep track of changes to the brush rop, so that we can perform lazy realisation of the brush.
      gdi32: Add helpers to clear and free dib_info structures.
      gdi32: Implement SelectBrush for DIB pattern brushes.
      gdi32: Add support for DIB pattern brush fills.
      gdi32/tests: Add tests for 32 bpp DIB pattern brush fills.
      gdi32: Initialise the pen pattern to an empty pattern for unpatterned pens.
      gdi32: Add support for the null brush.
      gdi32: Add support for the null pen.
      gdi32: Implement Rectangle().
      gdi32/tests: Tests for Rectangle().

Hwang YunSong (3):
      po: Update Korean translation.
      winecfg: Update Korean resource.
      winecfg: Update Korean resource.

Jacek Caban (26):
      wininet: Get rid of useless read_ret in netconn_read.
      wininet: Allocate buffer for host name in HTTP_HttpOpenRequestW only if needed.
      wininet: Use test.winehq.org for post tests.
      kernel32: Moved EnumProcesses implementation to kernel32.
      urlmon: Moved test_internet_feature_defaults invokation to skip tests on too old IEs.
      mshtml: Don't use Gecko nsIURI::GetHostPort implementation.
      wininet: Moved connected check out of NETCON_set_timeout.
      kernel32: Moved EnumProcessModules implementation to kernel32.
      wininet: Added support for persistent HTTP connections.
      wininet: Set TCP_NODELAY on socket.
      urlmon: Code clean up and make tests a bit stricker.
      kernel32: Moved QueryWorkingSet and QueryWorkingSetEx implementation to kernel32.
      mshtml: Ignore more dispID values in OnChanged notifications to fix tests on some IE installations.
      mshtml: Added IOmNavigator::get_cpuClass implementation.
      kernel32: Moved GetProcessMemoryInfo implementation to kernel32.
      kernel32: Moved K32EnumProcessModules to module.c.
      kernel32: Moved GetModuleBaseName[AW] implementation to kernel32.
      kernel32: Moved GetModuleFileNameEx[AW] to kernel32.
      kernel32: Moved GetModuleInformation implementation to kernel32.
      urlmon: Make sure to include query part of relative URI containing path in combine_uri.
      kernel32: Moved GetMappedFileName[AW] stubs to kernel32.
      wininet: Don't depend on is_end_of_read_data in HTTPREQ_Read.
      wininet: Fixed handling of 204 No Content response.
      wininet: Clean up closing connection notifications tests.
      wininet: Better closing async handles in tests.
      wininet: Added 204 No Content response tests.

Jerome Leclanche (1):
      wine.desktop: Remove the nonexistent application/x-win-lnk MIME type.

John Edmonds (3):
      wined3d: If Wine fails to acquire the focus window, allow the wndproc function to continue receiving messages.
      d3d9/tests: Added a test for resetting an invisible, inactive window to fullscreen mode.
      wined3d: Turn off message filtering temporarily in the Reset() method to allow certain messages (e.g. WM_ACTIVATEAPP) through.

Juan Lang (1):
      wininet: Handle invalid HTTP time of "0".

Jörg Höhle (2):
      winmm: Fix 8KB leak when mmioOpen fails (Valgrind).
      include: Define DRV_MCI_FIRST.

Karsten Elfenbein (2):
      wininet: Follow 307 temporary redirect.
      winhttp: Follow 307 temporary redirect.

Konstantin L. Metlov (2):
      gdi32: Handle pre-Unicode "broken" symbol TTFs with symbols at U+00XX.
      gdi32: Handle pre-Unicode symbol TTFs with symbols at U+00XX.

Lucas Fialho Zawacki (1):
      dinput8/tests: Tests for creation and initialization of DInput8 interface and simple cases of EnumDevicesBySemantics.

Marcus Meissner (20):
      ddraw: Added missing break (Coverity).
      mscms: Mark internal symbols as hidden.
      winex11.drv: Assertion was 1 off (Coverity).
      mshtml: Mark internal symbols as hidden.
      advpack: Mark internal symbols as hidden.
      browseui: Mark internal symbols as hidden.
      amstream: Mark internal symbols as hidden.
      quartz: Handle NULL return from strchr() (Coverity).
      winedump: flags is a DWORD not a WORD (Coverity).
      wined3d: Fixed a operator precedence issue (Coverity).
      user32: Use left shift instead of right shift (Coverity).
      user32: DrawText gets a 32bit flag, not a 16bit flag.
      riched20: Adjusted shift by 8 bits to 16 bits (Coverity).
      riched20: Use correct flag name (Coverity).
      riched20: Fixed some lParams with keycodes (Coverity).
      oleaut32: Fixed offset calculation (Coverity).
      shdocvw: Check safearray dimension too (Coverity).
      krnl386.exe16: Fixed get selector bit logic (Coverity).
      krnl386.exe16: Fixed if that always succeeds (Coverity).
      winedump: Fixed minidump processor revision decoding (Coverity).

Matteo Bruni (3):
      d3dcompiler: Improve some parameter names and fix code style.
      d3dcompiler: Fix error messages generation.
      wined3d: Fix pow handling with special values in ARB backend.

Michael Stefaniuc (1):
      mlang: COM cleanup.

Nicolas Le Cam (5):
      comctl32/tests: Remove a set but unused variable.
      msvcrt/tests: Avoid size_t in traces.
      ole32/tests: Fix large integer overflow warnings.
      gdi32: Remove a set but unused variable.
      wintrust/tests: BaseOfData isn't part of IMAGE_OPTIONAL_HEADER64 structure.

Nikolay Sivov (28):
      msxml3: A stub for MXXMLWriter class.
      msxml3: Add ISAXContentHandler stub for MXXMLWriter.
      msxml3: Add support for standalone property.
      msxml3: Store stream reference as destination.
      msxml3: Basic support for encoding property.
      msxml3: Basic support for startDocument().
      comctl32: Adjust field names and some defines to match current documentation.
      comctl32/tests: Add more MRU tests.
      comctl32: Ignore size field when creating with -W calls.
      msxml3: Store boolean properties in a single array.
      msxml3: Add support for omitXMLDeclaration() property.
      msxml3: Basic tests for startElement().
      comctl32/tests: Test message result for equality.
      comctl32/listview: Don't refuse to set subitem data when some extra flag is specified.
      comctl32/listview: Make edit box handle available from LVN_ENDLABELEDIT notification.
      msxml3: Basic support for startElement()/endElement().
      msxml3: Support attributes list for elements.
      msxml3: Support indent() property.
      msxml3: Store raw text data passed through characters().
      msxml3: Support byteOrderMark() property.
      msxml3: Support get/set for disableOutputEscaping() property.
      comctl32/listview: Don't forward HDN_ITEMCHANGING/HDN_ITEMCHANGED to listview parent.
      comctl32/tests: Make functions from test macros.
      winecfg: Update Russian dialog strings.
      comctl32/tab: Send NM_RCLICK on WM_RBUTTONUP.
      comctl32/listview: Fix parameter validation for LVM_SETITEMTEXT.
      comctl32/tests: Test return values in uniform way.
      comctl32/tests: Initialize subitem index.

Paul Chitescu (1):
      qcap: Initialize to NULL the content of ppPin, not the pointer itself.

Peter Urbanec (1):
      msxml3: Reorder headers to allow use of libxml2 with +icu useflag.

Piotr Caban (22):
      msvcrt: Added _wtmpnam implementation.
      msvcrt: Added _swprintf and vsnprintf functions.
      imagehlp: Set Index in ImageAddCertificate function.
      wintrust: Added CryptSIPPutSignedDataMsg implementation (for PE files).
      wintrust: Fix CryptSIPGetSignedMsg (from PE file).
      wintrust: Added CryptSIP{Get,Put}SignedDataMsg tests.
      crypt32: Fix content type in CRYPT_QueryEmbeddedMessageObject function.
      wine.inf: Add quotes to webbrowser command keys.
      msvcrt: Don't pass NULL as __ms_va_list in printf implementation.
      msvcrt: Added _towupper_l and _towlower_l implementation.
      msvcrt: Added _isctype_l implementation.
      msvcrt: Added _is*_l functions implementation.
      msvcrt: Added _toupper_l implementation.
      msvcrt: Added _tolower_l implementation.
      msvcrt: Added _strlwr_s_l implementation.
      msvcrt: Added _strupr_s_l implementation.
      kernel32/tests: Add locale specific CompareString test.
      msvcrt: Added _strcoll_l implementation.
      msvcrt: Added _stricoll_l implementation.
      msvcrt: Added _strncoll_l implementation.
      msvcrt: Added _strnicoll_l implementation.
      msvcr: Update spec files.

Rico Schüller (17):
      d3dx9: Implement ID3DXBaseEffect::GetValue().
      d3dx9: Implement ID3DXBaseEffect::GetString().
      d3dx9: Implement ID3DXBaseEffect::GetPixelShader().
      d3dx9: Implement ID3DXBaseEffect::GetVertexShader().
      d3dx9: Implement ID3DXBaseEffect::GetParameterBySemantic().
      d3dx9: Implement ID3DXBaseEffect::GetAnnotation().
      d3dx9: Implement ID3DXBaseEffect::GetAnnotationByName().
      d3dx9: Implement ID3DXBaseEffect::GetDesc() partially.
      d3dx9: Implement ID3DXBaseEffect::GetBool().
      d3dx9: Implement ID3DXBaseEffect::GetInt().
      d3dx9: Implement ID3DXBaseEffect::GetFloat().
      d3dx9: Implement ID3DXEffect::SetStateManager().
      d3dx9: Implement ID3DXEffect::GetStateManager().
      d3dx9/tests: Add ID3DXEffect::Get/SetStateManager() test.
      d3dx9: Improve get_parameter_by_name().
      d3dx9: Parse effect textures.
      d3dx9: Implement ID3DXBaseEffect::GetTexture().

Ričardas Barkauskas (1):
      ddraw: Fix filtering of enumerated display modes.

Stefan Dösinger (7):
      d3d8: Map ZBIAS values to a smaller depth range.
      ddraw: Map ZBIAS values to a smaller depth range.
      wined3d: Make the glram parameter of WineD3DAdapterChangeGLRam signed.
      wined3d: Fix a unsigned unary minus warning in MSVC.
      wined3d: Fix a few MSVC data loss warnings.
      wined3d: Pass the render target height as UINT.
      wined3d: Separate two unrelated variables.

Thomas Mullaly (3):
      urlmon: Stop binding with E_ABORT if the client returns that from OnStartBinding.
      urlmon: Improve handling of error codes being returned from client OnStartBinding callback.
      urlmon: Honor E_ABORT for URLDownloadToFile status callbacks.

Vincent Povirk (1):
      mscoree: State the .NET and Mono versions when a runtime is missing.

Łukasz Wojniłowicz (1):
      po: Update Polish translation.

--
Alexandre Julliard
julliard@winehq.org
