The Wine development release 1.7.12 is now available.

What's new in this release (see below for details):
  - Initial support for Window Media Player interfaces.
  - Some more Task Scheduler support.
  - Various C++ runtime fixes.
  - More dlls with ugly names for Windows 8 API set support.
  - Various bug fixes.

The source is available from the following locations:

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

   3467  Capitalism II [ DirectDraw - Missing Surface_Lock ]
   8783  USB serial ports do not work
  11448  Ugly skins in FIFA08
  11603  Cannot install Football Manager 2008 (FM08)
  12592  Photoshop CS2: complains "Please log in using an account with administrator privileges and try again"
  13437  Eudora 7.1.0.9 can't open attachments
  13484  Last Half of darkness Shadows of The Servants runs slow
  13486  Having CPU switch frequency dynamically (powersave daemon), Prince of Persia (potentially more apps?) runs way too fast
  16571  Add support for more than one back buffer
  17138  FlightGear does not display 3d models
  18272  S103 main window does not redraw after activity is finished
  18579  Photoshop CS4 error in automate/merge HDR and photomerge
  20493  Sherlock Holmes vs Jack the Ripper DEMO (CZ): Crash when closing the game
  20716  Dragon Age: DLC tabs are all empty
  20838  Morrowind Graphics Extender's d3d8.dll replacement fails to load
  20847  Touhou Hisoutenskou crashes in deck construction/end of battle
  21177  EVE-Online Voice don´t work
  22577  PdfEdit995 doesn't work
  22747  µTorrent: The update message from 2.0.1 to 2.0.2 does not show properly some characters
  23346  Pioneer Avic Feeds v2.1.0 crashes after language selection
  23393  Text rendered with background colour same as foreground (so invisible) in Moon Tycoon
  24799  Easyworship 2009 crashes on exit
  26246  Impulse doesn't work with mono
  26370  Visual C++ 2005 Trial install shows spurious dialog box
  26765  x86_64 OS should not be selectable on a 32-bit system
  26944  taskkill needs to handle both / and - switches
  27242  Wiggles: Error at starting the game.
  27644  MAKING HISTORY II: The War of the World v1.23 demo hangs indefinitely after nation selection
  27683  4nec2x: error message and crash when opening 3d window for second time
  27725  Visio 2007 : Getting started is missing icons
  27777  Office 2003 apps fail to print graphics with builtin gdiplus
  27837  E-Bundle Transcript Viewer: crashes when opening a supported file
  27914  Simple Screenshot-Code doesn't work
  28007  Microsoft Visio 2003 fails to save files and gives a Disk Full Error
  28127  Ubisoft Game Laucher Installation fails within dlls/oleaut32/variant.c:659
  28154  AutoIt v3.x 'Inputbox' function fails to display dialog with edit field (MonitorFromRect called with rect {Left=0,Top=0,Right=-1,Bottom=-1})
  28869  Neverwinter Nights fails to load
  28939  Notepad2: page fault when saving or opening files
  29034  Blackberry Device Manager 6.1 fails to install
  29098  LabVIEW 2010 demo downloader: switching virtual desktop causes the window to disappear
  29195  Microsoft Word Viewer crashes on opening files in Word 201x formats which require download of format converters
  29230  Steam client crash on select "news" tab
  29311  FirstClassClient 12.005 settings problem
  29757  Burraconline Client 4.53 reports error "BurracoClient has encountered a user-defined breakpoint"
  29781  Password Gorilla 1.5.3.6 fails on startup with error: "couldn't find Itcl_Init"
  30114  native msvcp100 crashes during Eve Online Startup (Testserver - Build 348561)
  30306  Wing Commander Saga: The Darkest Dawn launcher is badly drawn
  30577  Spartan demo: badly displayed main menu screen, mostly black
  31068  Gómez Peer Vis C++ error
  31371  Counter Strike: Source won't run on wine 1.5.9
  31820  GomezPEER Bug 26944 causes a Wineserver crash
  32049  Pirate101 launcher fails while downloading game on initial run
  32099  Adventure Game Studio 3.2 Crashes on start with C++ Runtime Error
  32139  MetaTrader 5 unable to remember account details
  32140  MetaTrader 5 never receives chart data
  32167  RebelBetting remains in memory when closed
  32714  EVE Online client crashes / fails to load when play is selected from Launcher
  33163  Luncher.exe failure of MMORPG game EVE Online_466518
  33514  Dragon Naturally Speaking 11 wants setupapi.SetupDiDestroyDriverInfoList
  33637  Eve Online launcher hangs
  33892  IRecordInfo::RecordCopy() is broken
  34050  World of Warplanes moo::rc().drawindexedprimitive, failed
  34063  Adobe CS4 installer is painfully slow
  34193  Palm Desktop 4.1.4 and HotSync Manager installer crashes
  34335  MetaTester 5 agents do not always start
  34366  Photoshop CS2 fails at the "initializing tools" windows
  34407  Multi Theft Auto 1.3 loader fails to initialize core infrastructure in GTA:SA process (msvcrt string collation check fails)
  34409  WinZip 7: crashes when extracting a zip archive
  34474  Slow mouse cursor in Age of Empires 1 & 2 with winemac compared to X11
  34630  Some games don't detect the correct number of display drivers (graphic cards) and their names
  34878  Games requiring DirectDrawRenderer set to GDI (winetricks ddr=gdi) are black screen after 1.7.2
  35014  Microsoft Server Express 2005, installing gets 'err:ntdll:RtlpWaitForCriticalSection'
  35181  Path of Exile crashes at startup
  35202  A Strange Dream (Knytt Stories expansion) fails to install without native msvcp60
  35280  Dracula 4 (The Shadow of the Dragon) freezes when starting a new game (using built-in msvcr100)
  35284  Polar WebSync client 2.8.x fails to communicate with 'polard' service (WS2_AcceptEx with zero 'local_addr_len' parameter)
  35313  'NAN' undeclared  [dlls/d3dx9_36/tests]
  35347  VST plugins crash on LMMS
  35388  League of legends graphical issues
  35405  NoLimits Coaster 2, Direct3D not supported
  35408  demoscene fr-038: theta crashes (affect multiple games: Anarchy Online, Tomb Raider, GTA)
  35410  Gómez Peer: Java runtime crashes and loops in WinXP mode
  35414  EVE Online crashes on window resize
  35447  Divinity II - DKS demo: fails to start with an exception.
  35464  Prefix creation occasionally reports user32 driver loading failure
  35482  ProPresenter 4.x (.NET 3.5 WPF app) installer needs WshShortcut_put_Arguments
  35483  cannot install game imvu
  35494  Mała Księgowość crashes starting
  35520  UltraMon 3.2.2 installer fails due to unimplemented function ole32.dll.CoGetInstanceFromFile

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

Changes since 1.7.11:

Akihiro Sagawa (1):
      gdi32: Fix regression due to sub-pixel shift calculations fixes.

Alexandre Julliard (23):
      user32: Fail creation of the desktop window earlier on when it already exists.
      makedep: Add a helper function for computing base dir paths.
      configure: Build makedep at configure time.
      msxml3/tests: Run tests against the winehq server.
      urlmon/tests: Run tests against the winehq server.
      configure: Automatically expand _CFLAGS and _LIBS variables in all makefiles.
      configure: Add a pkg-config check for fontconfig.
      configure: Trace the results of pkg-config checks to the config.log file.
      configure: Merge the X_LIBS and XLIB variables.
      configure: Rename substituted variables to a standard _CFLAGS and _LIBS format.
      configure: Use AS_VAR_IF to test variables where appropriate.
      user32: Only wait for the desktop process when necessary.
      urlmon/tests: Fix handling of FINDINGRESOURCE now that all the tests are against the same server.
      makedep: Generate rules for bitmap fonts based on pragmas in the .sfd file.
      makedep: Generate install rules for TrueType fonts based on pragmas in the .sfd file.
      tools: Move sfnt2fnt to its own directory.
      tools: Remove no longer used fnt2fon tool.
      sfnt2fon: Use getopt_long to allow arbitrary option order.
      make_specfiles: Don't propagate -noname flag to non-ordinal functions.
      msvcp90: Export _Xmem.
      msvcp71: Fix argument types for some fstream constructors.
      msvcp71: Export some already implemented Getcat functions.
      msvcp70: Export some already implemented Getcat functions.

Alistair Leslie-Hughes (3):
      dpnet: Cleanup IDirectPlay8Client.
      dpnet: Store information when Initialize is called.
      dpnet: Implement IDirectPlay8Server Initialize.

Andrew Eikum (2):
      oleaut32: Improve ITypeLib::FindName.
      winmm: Clean up ACM stream after query.

Andrey Gusev (1):
      Assorted spelling and typos fixes.

André Hentschel (29):
      setupapi/tests: Remove dead code.
      comctl32/tests: Avoid preprocessor checks to ensure it compiles.
      d3d10/tests: Avoid preprocessor check to ensure it compiles.
      d3dxof/tests: Avoid preprocessor check to ensure it compiles.
      d3dx9_36/tests: Avoid preprocessor checks to ensure it compiles.
      shell32/tests: Avoid preprocessor check to ensure it compiles.
      shlwapi/tests: Avoid preprocessor check to ensure it compiles.
      user32/tests: Avoid preprocessor check to ensure it compiles.
      user32/tests: Remove #if 1.
      explorer: Check return of IShellFolder_GetDisplayNameOf (Coverity).
      ole32: Use boolean return value in boolean function.
      imm32: Use boolean return value in boolean function.
      winspool: Use boolean return values in boolean functions.
      version: Use boolean return value in boolean function.
      ver: Use boolean return values in boolean functions.
      ntdll: Use boolean return values in boolean functions.
      kernel32: Fix out of bounds access in DnsHostnameToComputerName[AW].
      gdi32: Use boolean return values in boolean functions.
      kernel32: Use boolean return values in boolean functions.
      msvcp90: Use boolean return values in boolean functions.
      winex11: Use boolean return values in boolean function.
      oleaut32/tests: Use boolean return values in boolean functions.
      taskmgr: Avoid return type when the return value is not used.
      advapi32: Use boolean return values in boolean functions.
      comctl32: Use boolean return values in boolean functions.
      wininet: Use boolean return value in boolean function.
      user32: Use boolean return values in boolean functions.
      gdi16: Use boolean return value in boolean function.
      msi: Use boolean return value in boolean function.

Aric Stewart (1):
      kernel32: Add system message for ERROR_NOT_CONNECTED.

Austin English (3):
      mscms: Make missing lcms2 an error, not a fixme.
      wtsapi32: Quiet a couple of noisy FIXME's.
      kernel32: Quiet a noisy FIXME.

Bruno Jesus (11):
      programs: Add support to arguments with dash in taskkill.
      user32: Cope with null LPMENUITEMINFO in SetMenuItemInfo.
      ws2_32: Return the correct address family in WSAStringToAddressA.
      ws2_32/tests: Add missing closesocket calls (Coverity).
      wininet: InternetGetConnectedStateExW must return TRUE for success.
      po: Update Brazilian Portuguese translation.
      wininet/tests: Add tests for InternetGetConnectedStateEx[A|W].
      ws2_32/tests: Fix AcceptEx tests related to address length.
      bcrypt: Add BCryptGenRandom stub.
      bcrypt/tests: Add tests for BCryptGenRandom.
      ws2_32: Fix some parameters checking in AcceptEx.

Dmitry Timoshkov (49):
      taskschd: Make GetFolder check whether task folder tree exists in the registry.
      taskschd: Implement ITaskFolder::DeleteFolder.
      taskschd: Implement ITaskFolder::get_Name.
      taskschd: Implement ITaskFolder::GetFolder.
      taskschd: Implement ITaskFolder::CreateFolder.
      kernel32/tests: Don't forget to delete temporary manifest files.
      kernel32/tests: Don't forget to delete a temporary file.
      taskschd: Add some invalid parameters checks to ITaskFolder::DeleteFolder.
      taskschd: Add ITaskFolderCollection stub implementation.
      taskschd/tests: Add some ITaskFolderCollection tests.
      taskschd: Add some useful inline helpers for memory management.
      taskschd: Implement enumeration of task folders in registry.
      taskschd: Implement ITaskFolderCollection::get_Item.
      taskschd: Implement ITaskFolderCollection::get__NewEnum.
      taskschd: Implement IEnumVARIANT::Clone for a folder collection.
      taskschd: Add some tests for ITaskFolderCollection::get__NewEnum.
      scrrun/tests: Add more tests for IFolderCollection using a dedicated temporary directory.
      scrrun: Make IFolderCollection::get_Count use is_dir_data() helper.
      scrrun: Make IEnumVARIANT::Skip work after IEnumVARIANT::Reset for a folder collection.
      scrrun: IEnumVARIANT::Skip shouldn't skip anything if asked number of folder elements is 0.
      scrrun: IEnumVARIANT::Next shouldn't fetch anything if asked number of folder elements is 0.
      scrrun: IEnumVARIANT::Next should handle FindNextFileW failure.
      scrrun: IEnumVARIANT::Next should always return number of fetched folder elements.
      scrrun: IEnumVARIANT::Next should stop once it has enumerated the asked number the folder elements.
      server: Fix generic access mapping for an event.
      server: Fix generic access mapping for a mutex.
      scrrun: Make file and folder collection constructors static.
      scrrun: Fix file object leak on destruction.
      server: Fix generic access mapping for a semaphore.
      taskschd: Add IRegisteredTask stub implementation.
      server: Fix generic access mapping for a thread.
      msxml3/tests: Add a test to show that IXMLElementCollection enumerator doesn't recognize IID_IXMLElementCollection.
      msxml3: Don't return implementation pointer as an interface.
      msxml3: Add separate QueryInterface implementation for IEnumVARIANT interface exported by IXMLElementCollection.
      msxml3: Use interface instead of implementation pointer to forward IEnumVARIANT::AddRef and IEnumVARIANT::Release for IXMLElementCollection.
      msxml3: IXMLElementCollection::QueryInterface should return NULL interface on error.
      taskschd: ITaskService::GetFolder should fail if not connected to the server.
      taskschd: Add a NULL check to ITaskFolder::GetFolders.
      taskschd: QueryInterface should return NULL interface on error.
      taskschd: Add IRegisteredTaskCollection stub implementation.
      taskschd: Add ITaskDefinition stub implementation.
      scrrun/tests: Add more tests for IFileCollection using a dedicated temporary directory.
      server: Fix generic access mapping for a process.
      server: Add PROCESS_QUERY_LIMITED_INFORMATION to GENERIC_EXECUTE access mapping and appropriately change PROCESS_ALL_ACCESS.
      server: Add THREAD_[SET|QUERY]_LIMITED_INFORMATION to generic access mappings and appropriately change THREAD_ALL_ACCESS.
      taskschd/tests: Add some tests for IRegisteredTask interface.
      kernel32/tests: Use PROCESS_ALL_ACCESS definition compatible with versions of Windows before Vista.
      kernel32/tests: Use THREAD_ALL_ACCESS definition compatible with versions of Windows before Vista.
      kernel32/tests: Use PROCESS_ALL_ACCESS definition compatible with versions of Windows before Vista.

Erich Hoover (2):
      oleaut32: Handle OLEFontImpl_SetRatio case where cyLogical and cyHimetric are both 1.
      oleaut32: Fix OLEFontImpl_SetRatio return when either cyLogical or cyHimetric are 0.

François Gouget (3):
      gdiplus: Make METAFILE_GetEmfType() static.
      Assorted spelling fixes.
      dpnet/tests: Add a trailing '\n' to an ok() call.

Frédéric Delanoy (32):
      include: Make wine_dbgstr_guid available in test.h for all tests.
      apphelp/tests: Use common wine_dbgstr_guid implementation from test.h.
      atl100/tests: Use common wine_dbgstr_guid implementation from test.h.
      comdlg32/tests: Use common wine_dbgstr_guid implementation from test.h.
      d3dx9_36/tests: Use common wine_dbgstr_guid implementation from test.h.
      d3dxof/tests: Use common wine_dbgstr_guid implementation from test.h.
      dmime/tests: Use common wine_dbgstr_guid implementation from test.h.
      dmusic/tests: Use common wine_dbgstr_guid implementation from test.h.
      dplayx/tests: Use common wine_dbgstr_guid implementation from test.h.
      hlink/tests: Use common wine_dbgstr_guid implementation from test.h.
      mmdevapi/tests: Use common wine_dbgstr_guid implementation from test.h.
      mscoree/tests: Use common wine_dbgstr_guid implementation from test.h.
      kernel32/tests: Use common wine_dbgstr_guid implementation from test.h.
      ole32/tests: Use common wine_dbgstr_guid implementation from test.h.
      oleaut32/tests: Use common wine_dbgstr_guid implementation from test.h.
      urlmon/tests: Use common wine_dbgstr_guid implementation from test.h.
      xmllite/tests: Use common wine_dbgstr_guid implementation from test.h.
      msxml3/tests: Use common wine_dbgstr_guid implementation from test.h.
      oledb32/tests: Use common wine_dbgstr_guid implementation from test.h.
      vbscript/tests: Use common wine_dbgstr_guid implementation from test.h.
      windowscodecs/tests: Use common wine_dbgstr_guid implementation from test.h.
      riched20/tests: Use common wine_dbgstr_guid implementation from test.h.
      jscript/tests: Use common wine_dbgstr_guid implementation from test.h.
      ieframe/tests: Use common wine_dbgstr_guid implementation from test.h.
      qcap/tests: Use common wine_dbgstr_guid implementation from test.h.
      rpcrt4/tests: Use common wine_dbgstr_guid implementation from test.h.
      mshtml/tests: Use common wine_dbgstr_guid implementation from test.h.
      shell32/tests: Use common wine_dbgstr_guid implementation from test.h.
      kernel32/tests: Remove unused variable.
      wrc: Remove unused variables.
      rundll32: Use BOOL type where appropriate.
      oleaut32: Use BOOL type where appropriate.

Hans Leidekker (11):
      advapi32/tests: Add a test to show that OpenSCManager clears last error on success.
      dwmapi: Silence a fixme.
      winhttp/tests: Fix a test that fails on Windows.
      wbemprox: Allow string values in boolean comparisons.
      wbemprox: Add a couple of network properties.
      advapi32: Use a generic Keychain item to store credentials on MacOS.
      winhttp/tests: Ignore some missing notifications.
      winhttp/tests: Only advance to the next notification test if the function is ok.
      advapi32/tests: Mark a test result on Windows 2000 as broken.
      winhttp/tests: Move the status notification tests to test.winehq.org.
      winhttp/tests: Move the remaining tests to test.winehq.org.

Henri Verbeet (15):
      ddraw/tests: Rewrite AttachmentTest() and AttachmentTest7().
      ddraw: Allow attaching surfaces other than depth buffers in ddraw_surface4_AddAttachedSurface().
      d3d10: Add D3D10_DRIVER_TYPE_WARP.
      d3d10core/tests: Use D3D10CreateDevice() to create a device.
      d3d10/tests: Also try a WARP device in create_device().
      d3d10/tests: Don't reuse the device.
      dxgi: Store IWineDXGIAdapter pointers in the factory.
      dxgi: Implement IDXGIAdapter1.
      dxgi: Implement IDXGIFactory1.
      wined3d: Don't allow format conversion on Present() for d3d8.
      d3d8/tests: Port test_display_formats() to d3d8.
      d3d9/tests: Cleanup test_display_formats() a bit.
      d3d8/tests: Direct3DCreate8() is always available if we have d3d8.
      d3d9/tests: Direct3DCreate9() is always available if we have d3d9.
      wined3d: Also destroy the logo and cursor textures in wined3d_device_reset() when resetting state.

Jacek Caban (23):
      atl90: Share atl_ax.c with atl100.
      mshtml: Release ActiveX object interfaces in detach_plugin_host.
      mshtml: Added more refcnt tests.
      d3d9.h: Added __uuidof() support to interfaces.
      include: Added wmp.idl.
      wmp: Added new DLL.
      wmp: Added typelib.
      wmp: Added WindowsMediaPlayer class factory.
      wmp: Added WindowsMediaPlayer object stub implementation.
      atl80: Share atl_ax.c with atl100.
      atl90: Share atl.c with atl100.
      atl90: Share registrar.c with atl100.
      wmp: Added IProvideClassInfo2 stub implementation.
      secur32: Ignore GNUTLS_A_UNRECOGNIZED_NAME warning alert.
      atl110: Share atl_ax.c with atl100.
      atl80: Share atl.c with atl100.
      atl80: Share registrar.c with atl100.
      wmp: Added IProvideClassInfo2::GetGUID implementation.
      wmp/tests: Added tests.
      wmp: Added IPersistStreamInit stub implementation.
      msctf.idl: Added ITfActiveLanguageProfileNotifySink declaration.
      urlmon/tests: Use test.winehq.org for https protocol tests.
      atl110: Share sources with atl100.

Jactry Zeng (2):
      riched20: Use codepage in ME_ToUnicode.
      riched20: Add UTF8 support for EM_SETTEXTEX.

Ken Thomases (8):
      d3d9: Make CheckDeviceType() fail for display formats other than D3DFMT_X8R8G8B8 and D3DFMT_R5G6B5 in full-screen.
      wined3d: Improve CheckDeviceType() support for windowed mode.
      d3d9/tests: Improve testing of display formats and IDirect3D9_CheckDeviceType().
      winemac: Ignore mouse capture during window drags for routing click and move events.
      winemac: Reset cursor clipping and capture when window dragging begins.
      winemac: Ignore window dragging if window is disabled, maximized, minimized, or hidden.
      wined3d: Don't clear the GL context such that it can't be restored.
      wined3d: Don't clear the GL context if it's not the one being destroyed by context_destroy_gl_resources().

Marcus Meissner (2):
      kernel32: Thread pool definitions and prototypes.
      kernel32/tests: Initial threadpool test.

Martin Storsjo (30):
      api-ms-win-core-synch-l1-2-0: Add stub dll.
      api-ms-win-ntuser-dc-access-l1-1-0: Add stub dll.
      ext-ms-win-gdi-devcaps-l1-1-0: Add stub dll.
      api-ms-win-core-com-l1-1-0: Add stub dll.
      api-ms-win-core-console-l1-1-0: Add stub dll.
      api-ms-win-core-file-l1-2-0: Add stub dll.
      api-ms-win-core-handle-l1-1-0: Add stub dll.
      api-ms-win-core-heap-l1-2-0: Add stub dll.
      api-ms-win-core-heap-obsolete-l1-1-0: Add stub dll.
      api-ms-win-core-io-l1-1-1: Add stub dll.
      api-ms-win-core-kernel32-legacy-l1-1-0: Add stub dll.
      api-ms-win-core-libraryloader-l1-1-1: Add stub dll.
      api-ms-win-core-localization-l1-2-0: Add stub dll.
      api-ms-win-core-localization-obsolete-l1-1-0: Add stub dll.
      api-ms-win-core-memory-l1-1-1: Add stub dll.
      api-ms-win-core-namedpipe-l1-2-0: Add stub dll.
      api-ms-win-core-processenvironment-l1-2-0: Add stub dll.
      api-ms-win-core-psapi-l1-1-0: Add stub dll.
      api-ms-win-core-registry-l1-1-0: Add stub dll.
      api-ms-win-core-rtlsupport-l1-2-0: Add stub dll.
      api-ms-win-core-shlwapi-legacy-l1-1-0: Add stub dll.
      api-ms-win-core-threadpool-legacy-l1-1-0: Add stub dll.
      api-ms-win-core-timezone-l1-1-0: Add stub dll.
      api-ms-win-core-url-l1-1-0: Add stub dll.
      api-ms-win-eventing-provider-l1-1-0: Add stub dll.
      api-ms-win-security-base-l1-2-0: Add stub dll.
      api-ms-win-security-sddl-l1-1-0: Add stub dll.
      api-ms-win-service-core-l1-1-1: Add stub dll.
      api-ms-win-service-management-l1-1-0: Add stub dll.
      api-ms-win-service-winsvc-l1-2-0: Add stub dll.

Michael Stefaniuc (19):
      dmusic: Use the defines for the FOURCC codes.
      dmstyle: Do not use method implementations directly.
      dmstyle: Remove the redundant "IDirectMusicStyle8" from method names.
      dmstyle: COM cleanup for IDirectMusicStyle8.
      dmstyle: Remove the extraneous IUnknown from DirectMusicStyle8.
      dmband: None of the COM classes support aggregation.
      dmband/tests: Move the dll availability check to a separate function.
      dmband/tests: Add COM tests for DirectMusicBand.
      dmband/tests: Use the standard COM tests for DirectMusicBandTrack.
      dmband: Remove the redundant "IDirectMusicBand" from method names.
      dmband: Store the iface instead of the COM object in _DMUS_PRIVATE_BAND.
      dmband: COM cleanup for IDirectMusicBand.
      dmband: Remove the extraneous IUnknown from DirectMusicBand.
      winmm/tests: Avoid spurious test failures on Windows.
      shlwapi/tests: COM cleanup for the dummy IStream iface.
      shlwapi/tests: Fix the type of the first param of some shlwapi functions.
      shlwapi/tests: Remove a typedef for a struct.
      qedit: Don't dereference NULL on alloc failure.
      qedit: Use offsetof for the size of a struct with a varlen array.

Nikolay Sivov (17):
      oleaut32: Use CoTaskMem* when dealing with CUSTDATA.
      widl: Fix pointer size for SYS_WIN64 typelibs.
      widl: Uuid attribute is allowed for 'struct'.
      dlls: Print HRESULT as 32bit value.
      oleaut32/tests: Use local IDispatch test impl instead of global variable.
      oleaut32: Fix parameter validation in CreateStdDispatch().
      oleaut32: Remove useless NULL checks.
      wshom: Implement Arguments() property for a shortcut.
      oleaut32: Fix RecordCopy()/RecordClear() behavior.
      vbscript: Support VT_BYREF|VT_DISPATCH as a DISPID_NEWENUM source.
      wshom: Implement get_WorkingDirectory(), handle allocation failures.
      msxml3/tests: Fix a couple of test failure when msxml4 is actually present.
      shell32/tests: Remove some assertions in test code.
      crypt32/tests: Accept another error code on Win8.
      ole32: Implement CoGetInstanceFromFile().
      ole32: Implement CoGetInstanceFromIStorage().
      inetmib1/tests: Cleanup tests a bit, fix a crash on Win8 64bit.

Piotr Caban (15):
      msvcp90: Fix basic_istream<wchar>::read implementation.
      msvcp90: Read last character of bool string in num_get_do_get_bool.
      msvcp90: Fix ios_base_setf implementation.
      msvcp60: Add std::_Fpz export.
      msvcp110: Fix sprintf argument size in num_put::do_put_double.
      msvcrt: Fix str*coll functions behavior in C locale.
      msvcrt: Fix wcs*coll functions behavior in C locale.
      msvcrt: Support _IOSTRG flag in _filbuf function.
      msvcrt: Flush standard streams in flushall function.
      msvcrt: Don't close handles returned by GetStdHandle function.
      msvcm90: Share the source code with msvcm80.
      msvcm90: Don't forward to msvcm80.
      msvcp70: Share the source code with msvcp90.
      msvcp70: Don't forward bad_alloc implementation to msvcrt.
      kernel32: Handle STD_*_HANDLE in GetFileType.

Sebastian Lackner (9):
      winex11: Catch invalid values from broken QX11EmbedContainer implementations.
      ntdll: Throw STATUS_RESOURCE_NOT_OWNED when it's impossible to acquire/release the SRWLock.
      ntdll: Implement RtlTryAcquireSRWLockShared/Exclusive commands.
      kernel32: Forward TryAcquireSRWLockShared/Exclusive to ntdll.
      kernel32/tests: Add tests for TryAcquireSRWLockExclusive/Shared.
      ntdll: Implement RtlSleepConditionVariableSRW.
      kernel32: Forward SleepConditionVariableSRW to ntdll.
      kernel32/tests: Add tests for SleepConditionVariableSRW.
      ntdll: Fix incorrect value passed to RtlDeleteTimerQueueEx.

Stefan Dösinger (2):
      wined3d: Set buffer->map_ptr to NULL on unmap.
      include: Fix IDirect3DSwapChain8_Present argument count.

Vincent Povirk (9):
      gdiplus: Add test for page transform in metafiles.
      gdiplus: Add option to save metafile tests to files.
      setupapi: Stub SetupDiDestroyDriverInfoList.
      winsta: Stub WinStationVirtualOpen.
      user32: Treat empty rects as 1x1 in MonitorFromRect.
      user32/tests: Add tests for MonitorFromRect.
      gdiplus: Move metafile functions to metafile.c.
      windowscodecs: Silence a fixme.
      mscoree/tests: Fix failures when .NET 4 but not 1 or 2 is installed.

--
Alexandre Julliard
julliard@winehq.org
