The Wine development release 1.7.11 is now available.

What's new in this release (see below for details):
  - Uniscribe support in the RichEdit control.
  - Support for condition variables and Slim Reader/Writer locks.
  - More D3D command stream preparation work.
  - Optional Start Menu in desktop mode.
  - Improved support for vertical fonts metrics.
  - Various bug fixes.

The source is available from the following locations:

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

  12118  F1 button in WinAMP Milkdrop visualization shows garbage instead of the help info
  13489  Frets on fire doesn't start(python issue) [dogfood]
  15270  Garmin MapSource doesn't run anymore after upgrading to the latest version (6.14.1)
  16034  Bombzone won't start
  22544  POI Loader 2.5.x and 2.7.x fail to run
  22636  Guitar Pro 5.2 demo file browser treeview has extraneous ":" item
  23005  WinWULFF (VB6 app) fails on startup, reporting "Run-time error '10': This array is fixed or temporarily locked"
  24798  OLE error 800200009 on EasyWorship 2009 eval version startup
  25505  MSN Messenger Live 2009 (14.0) installer crashes on startup
  26652  Graphical glitches in Big Fish Games client
  27476  Spotify Crashes On Log In
  27539  EasyHook 2.6 'ProcessMonitor.exe' example (.NET 2.0 app) crashes shortly after launch
  29140  ScriptTextOut passes wrong widths to ExtTextOutW
  29698  iexplore http://www.coupons.com/ shows blank page
  30164  Multiple applications need KERNEL32.dll.InitializeConditionVariable implementation (Adobe Lightroom 4.x and 5.x, Sibelius 7, 64-bit Dolphin Emulator)
  30173  Adobe Lightroom 4 fails to start: Unimplemented function KERNEL32.dll.SleepConditionVariableCS
  31888  June 2010 directx sdk installer: fails with builtin mono
  31989  Garmin ANT Agent 2.3.3 doesn't recognize 'ANT' USB stick, crashes on unimplemented function cfgmgr32.dll.CM_Get_Device_ID_ExA
  32182  GetResolvedNeutrals always returns input
  32396  iexplore http://imgur.com doesn't open
  33006  Installation of Garmin Training Center 3.6.5 fails
  33020  GetLongPathName does not properly resolve the relative string '.'
  33256  Garmin WebUpdater says "You must be a local administrator to run this application"
  33272  Pinging 0.0.0.0 returns success, when it should return failure.
  33519  POI Loader 2.5.x and 2.7.x refuse to install, claiming "No administrator privileges for install"
  34205  Regedit doesn't import .reg files formatted like the example in the FAQ
  34250  When leaving full screen mode IrfanView creates an on-top unusable excess screen-wide control
  34891  Application DesignSpark Crashes when adding components to schematic
  34925  SolForge needs msvcp110.dll.?_Init@locale@std@@CAPAV_Locimp@12@_N@Z
  35006  Foxit Reader 6.xx crashes on opening Help->About
  35055  Incorrect SourceDir used for product update.
  35124  Shattered Horizon needs msvcr90.dll.?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z
  35145  RSA SecurID token v411 crashes on startup
  35196  Depth Hunter crashes when changing video options
  35227  Secret Files 2: hardware mouse pointer corrupted
  35237  Ivona Voices needs MSVCP110.dll.?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z
  35247  Teleglitch: Die More Edition needs msvcr110.dll._libm_sse2_sqrt_precise
  35261  Ys 1 crashes on startup
  35303  Multiple Realarcade installers fail on startup, complaining with COM/LUA scripting errors (need support for IFolder::get_Files)
  35318  build fail on FreeBSD
  35328  Multiple Realarcade installers fail on startup, complaining with COM/LUA scripting errors (need support for file collection '_NewEnum' property)
  35346  sscanf clears first unmatched string arg
  35354  PSO2 Tweaker needs Win32_OperatingSystem WMI class 'Name' property
  35365  Multiple applications fail to install (IE7, MS .NET Framework 4.0)
  35366  Warhammer 40K Dawn of War and Winter Assault: not working on 1.7.10
  35377  League of Legends launcher crashes on start

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

Changes since 1.7.10:

Akihiro Sagawa (9):
      gdi32: Use defined names in GetFontLanguageInfo.
      gdi32: Fix DBCS mask value in GetFontLanguageInfo.
      gdi32: Relax vertical face requirements.
      gdi32: Use the vertAdvance value for cellIncX if vertical metrics are available.
      gdi32: Fix sub-pixel shift calculations for vertical writing.
      gdi32/tests: Add more GetCharABCWidths tests for rotated font.
      gdi32: Fix ABC metrics for rotated font.
      gdi32/tests: Add tests for vertical writing metrics.
      gdi32: Improve vertical writing metrics.

Alexandre Julliard (31):
      makedep: Grow the include file array dynamically.
      makedep: Don't expand variable references that use ${}.
      configure: Don't allow overriding INSTALL.
      makefiles: Expand define arguments directly into the generated rules.
      makefiles: Allow define arguments to be specific to a single file.
      makefiles: Always create dependencies from the top-level directory.
      mountmgr.sys: Use the correct variable for the include paths.
      makefiles: Automatically add the necessary msvcrt flags to the generated rules.
      makefiles: Generate explicit commands to create object subdirectories.
      ntdll/tests: Fix a test that fails on Win2k.
      gdi32/tests: Don't test unreliable palette entries.
      gdi32/tests: Run all DIB tests with a hardcoded palette.
      makedep: Add helper functions for computing source dir paths.
      makedep: Expand the script names into the generated rules.
      msvcrt: Return per-thread information also in lc_codepage_func and lc_handle_func.
      msvcp90: Call the appropriate secure function instead of duplicating the checks.
      msvcp90: Remove parameter checks from functions that are only used for old msvcp versions.
      msvcp90: Don't build the new-style string iterator functions for old msvcp versions.
      msvcp90: Avoid using get_current_locale that doesn't exist in old msvcrt versions.
      msvcp90: Add wrappers for functions that don't exist in old msvcrt versions.
      msvcp71: Import the correct msvcrt version.
      makedep: Expand the winegcc target arguments into the generated rules.
      makedep: Expand tool names into the generated rules.
      makedep: Expand compilation flags into the generated rules.
      makedep: Generate dependencies for mo files when supported.
      makefiles: Get rid of Make.rules.
      user32/tests: Protect the global message sequence with a critical section.
      gdi32/tests: Update a few more failing DIB cases.
      shell32: Avoid a duplicate const.
      makedep: Make the makefile mode the default behavior and remove obsolete options.
      makedep: Create target subdirectories at make depend time.

Alistair Leslie-Hughes (2):
      dpnet: Add stubbed interface IDirectPlay8Server.
      dpnet: Cleanup IDirectPlay8Peer COM interface.

Andrey Gusev (5):
      d3dcompiler: Correct filename string.
      d3dx9_xx: Correct filename string.
      xapofx1_1: Add version.rc file.
      Assorted typos fixes.
      po: Update Ukrainian translation.

André Hentschel (10):
      libwine: Added LDT support for GNU/Hurd.
      ntdll: Add signal definitions for GNU/Hurd.
      kernel32/tests: Allow more last errors from win8.
      ws2_32: Don't leak hostname (Coverity).
      msi: Check return value from MSIREG_OpenInstallProps (Coverity).
      Assorted spelling fixes.
      kernel32/tests: Add missing last errors for win8.
      kernel32/tests: Don't test last error on success.
      oleaut32/tests: Mark W2k results as broken.
      oleaut32/tests: Fix a test output.

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

Bruno Jesus (10):
      include: Add some LUP_* definitions to winsock2.h.
      include: Add NLA_BLOB structure and its dependencies in mswsock.h.
      ws2_32/tests: Add some WSALookupService[Begin|Next|End] tests.
      ws2_32: Fix FreeBSD compiling issue on ipx address structure.
      ws2_32/tests: Add some FIONREAD tests.
      ws2_32/tests: Show that the last WSACleanup must destroy sockets.
      iphlpapi/tests: Add IcmpSendEcho tests.
      iphlpapi/tests: Add more IcmpSendEcho tests related to the reply size.
      ws2_32/tests: Add broken for a WSALookupServiceBegin test in NT.
      iphlpapi: Return error for IP address with value zero in IcmpSendEcho.

Dmitry Timoshkov (31):
      qmgr: Remove unused IUnknown *outer parameter from object constructor.
      wiaservc: Remove unused IUnknown *outer parameter from object constructor.
      wuapi: Remove unused IUnknown *outer parameter from object constructors.
      winhttp: Remove unused IUnknown *outer parameter from object constructor.
      wbemdisp: Remove unused IUnknown *outer parameter from object constructor.
      wbemprox: Remove unused IUnknown *outer parameter from object constructors.
      wmiutils: Remove unused IUnknown *outer parameter from object constructors.
      ntdll: Remove shadow local variables.
      msxml3: Remove unused IUnknown *outer parameter from object constructors.
      cabarc: Fix printing of a not recognized compression type argument.
      advapi32/tests: Add tests for access 0 mapping.
      advapi32/tests: Add a test for opening a mutex with access 0.
      advapi32/tests: Add a test for opening an event with access 0.
      advapi32/tests: Add more file access tests, add access tests for a directory.
      advapi32/tests: Add access tests for a file mapping.
      advapi32/tests: Add access tests for a thread.
      advapi32/tests: Add access tests for a process.
      wuapi: Fix object constructors to match the changed prototype.
      taskschd/tests: Add some tests for ITaskService::Connect.
      secur32: Slightly simplify the GetUserNameExW implementation.
      taskschd: Implement ITaskService::get_Connected.
      taskschd: Implement ITaskService::Connect.
      taskschd: Implement ITaskService::get_TargetServer.
      taskschd/tests: Add some tests for invalid parameters.
      windowscodecs: Move the aggregation check from object constructors to class factory.
      taskschd/tests: Use IP 0.0.0.0 as a bad server name and test that unsuccessful connection attempt shouldn't trash an existing connection.
      taskschd/tests: Add some ITaskFolder tests.
      taskschd: Treat VT_BSTR/NULL or empty variant as NULL.
      taskschd/tests: Add more task folder tests.
      taskschd: Add ITaskFolder stub implementation.
      taskschd: Implement ITaskFolder::get_Path.

Erich Hoover (3):
      ddraw: Make DirectDrawEnumerateEx only enumerate secondary display devices when requested.
      ddraw: Make DirectDrawEnumerateEx report the driver description.
      ddraw/tests: Test DirectDrawEnumerateEx with DDENUM_ATTACHEDSECONDARYDEVICES.

François Gouget (3):
      d3dx9_36/tests: Fix compilation on systems that don't have NAN (Solaris).
      ws2_32/tests: Add a trailing '\n' to a win_skip() call.
      riched20: Make ME_GetDITypeName() static.

Frédéric Delanoy (24):
      gdi32: Use BOOL type where appropriate.
      msxml3/tests: Use BOOL type where appropriate.
      msi/tests: Use BOOL type where appropriate.
      setupapi/tests: Use BOOL type where appropriate.
      wbemprox/tests: Use BOOL type where appropriate.
      wmiutils/tests: Use BOOL type where appropriate.
      xmllite/tests: Use BOOL type where appropriate.
      crypt32: Use BOOL type where appropriate.
      mountmgr.sys: Use BOOL type where appropriate.
      Assorted spelling fixes.
      kernel32/tests: Unconstify a character string.
      dbghelp: Remove an "#if 1" preprocessor directive.
      dplayx: Remove "#if 1" preprocessor directives.
      winedump: Remove an "#if 1" preprocessor directive.
      oleaut32: Avoid TRUE:FALSE conditional expressions.
      dplayx: Avoid TRUE:FALSE conditional expressions.
      ntdll: Avoid TRUE:FALSE conditional expressions.
      winedump: Use BOOL type where appropriate.
      odbc32: Use BOOL type where appropriate.
      comctl32: Avoid TRUE:FALSE conditional expressions.
      po: Update French translation.
      wine/test.h: Fix a typo in comment.
      ntdll: Fix a typo in comment.
      mmdevapi/tests: Remove unused dbgstr_guid function.

Hans Leidekker (3):
      wbemprox: Implement Win32_OperatingSystem.Name.
      advapi32: PP_USE_HARDWARE_RNG is a parameter, not a flag.
      advapi32: Don't shadow keychain_item in mac_write_credential.

Henri Verbeet (15):
      wined3d: Get rid of the unused screen_palents field in struct wined3d_palette.
      wined3d: Fix up the backbuffer count on failure in swapchain_init().
      d3d9/tests: Make sure create_device() returns NULL on failure.
      wined3d: Reset the command stream state as well in wined3d_device_reset().
      wined3d: Introduce a common GLSL handler for scalar instructions.
      wined3d: Store color keys in textures instead of in surfaces.
      ddraw: Don't propagate color key changes to attached surfaces.
      ddraw: Return DDERR_NOTONMIPMAPSUBLEVEL for ddraw_surface7_SetColorKey() on mipmap sub levels.
      ddraw/tests: Add some color key tests for complex surfaces.
      wined3d: Place the cursor texture in the default pool.
      wined3d: Place the logo texture in the default pool.
      wined3d: Explicitly request alpha testing for blitting the cursor and logo textures to screen.
      wined3d: Make rebind_fbo in struct wined3d_context a bitfield.
      ddraw: Pass the monitor to the callback in ddraw_enumerate_secondary_devices().
      ddraw/tests: Verify dwBackBufferCount on back buffer surfaces in test_flip().

Huw D. M. Davies (8):
      riched20: Simplify the code by accessing paragraphs directly from runs.
      riched20: Don't split a run if the cursor is at the end of it.
      riched20: Correctly handle the cursor at the end of a run case.
      riched20: Correctly handle the cursor at the end of run case while splitting paragraphs.
      riched20: Ensure the cursors are equal after deleting the selection.
      mshtml: Finish with the correct string.
      mshtml: Release a leaked class factory.
      riched20: Add uniscribe support.

Jacek Caban (12):
      strmbase: Store BasePinFuncTable inside Base*PinFuncTable structs.
      devenum: Moved test for special category GUID to separated function.
      devenum: Enumerate both regular key and special key for special categories.
      devenum: Populate CLSID_VideoCompressorCategory category in key in DEVENUM_CreateSpecialCategories.
      dxdiagn: Don't fail the whole initialization for invalid filter data in build_directshowfilters_tree.
      devenum: Make CLSID_VideoCompressorCategory a special category.
      devenum: Added more strict CLSID_VideoCompressorCategory test.
      widl: Make identifiers file more compatible with midl.
      mshtml: Fixed double release in NPP_New.
      mshtml: Added more traces to nsDocumentObserver_BindToDocument.
      msctf.idl: Added some missing declarations.
      include: Fixed eConnTypeRJ11Modem declaration.

Jactry Zeng (1):
      riched20: Use CP_UNICODE instead of 1200.

Jonathan Liu (1):
      wined3d: Avoid wined3d_ftoa buffer overflow.

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

Ken Thomases (17):
      winemac: Don't record original display modes when not the active app.
      winemac: Don't assume the current display mode is the original if we don't have the displays captured.
      winemac: Restore display mode to original in more cases.
      winemac: Clear the latentDisplayModes instance variable before realizing the latent modes.
      winemac: Simplify display mode code.
      winemac: For ChangeDisplaySettingsEx(), if caller didn't specify, prefer non-interlaced and unstretched modes.
      winemac: When clearing the OpenGL context, disassociate it from its view.
      winemac: When setting a view for an OpenGL context and it is latent, clear any existing view.
      winemac: Consolidate code paths for clearing the OpenGL context.
      winemac: Don't remove an OpenGL context from its view if we're only going to re-add it.
      winemac: Make WineOpenGLContext hold a strong reference to its view.
      opengl32: Fix Perl compilation errors in make_opengl script.
      opengl32: Download OpenGL registry files even if server certificate can't be verified.
      winemac: Eliminate unused "hdc" field of OpenGL context structure.
      winecoreaudio: Remove some no-longer-used code.
      winemac: Ignore failure to send or 0 result from WM_QUERYENDSESSION if target window was destroyed.
      wineboot: Ignore 0 result from WM_QUERYENDSESSION if target window was destroyed.

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

Marcus Meissner (2):
      msvcp90: Return on error (Coverity).
      ws2_32: handle error return from get_sock_fd (Coverity).

Martin Storsjo (8):
      api-ms-win-core-processthreads-l1-1-1: Add stub dll.
      api-ms-win-core-debug-l1-1-1: Add stub dll.
      api-ms-win-core-errorhandling-l1-1-1: Add stub dll.
      api-ms-win-core-interlocked-l1-2-0: Add stub dll.
      api-ms-win-core-profile-l1-1-0: Add stub dll.
      api-ms-win-core-string-l1-1-0: Add stub dll.
      api-ms-win-core-sysinfo-l1-2-0: Add stub dll.
      api-ms-win-core-util-l1-1-0: Add stub dll.

Michael Stefaniuc (46):
      dmusic: Always AddRef the returned iface in QueryInterface.
      dmusic: Don't leak mem if DirectMusicCollection creation fails.
      dmusic: The object class is immutable in a DirectMusicObject.
      dmusic: Don't crash on NULL in IDirectMusicObject::GetDescriptor.
      dmusic/tests: Add some DirectMusicCollection tests.
      dmusic: Don't hardcode the guidClass in IDirectMusicObject::ParseDescriptor.
      dmime: Don't use an IDirectMusicSegment8 method implementation directly.
      dmime: Remove duplicated "IDirectMusicSegment8" from the method names.
      dmime: COM cleanup for IDirectMusicSegment8.
      dmime: Remove the extraneous IUnknown from DirectMusicSegment8.
      dmime: Fix copy and paste errors.
      dmime: Remove "#if 1" preprocessor directives.
      dmime: None of the COM classes support COM aggregation.
      dmime/tests: Move the unrelated COM test out of performance.c.
      dmime/tests: Add COM tests for DirectMusicSegmentState.
      dmime/tests: COM tests for the different DirectMusic*Tracks.
      dmime/tests: COM tests for DirectMusicGraph.
      dmime/tests: COM tests for DirectMusicAudioPath and DirectMusicAudioPathConfig.
      include: There is no need to duplicate CLSID_DirectMusicAudioPathConfig as CLSID_DirectMusicAudioPath.
      dmscript: Don't use the method implementations directly.
      dmscript: Remove duplicate "IDirectMusicScript" from method names.
      dmscript: COM cleanup for IDirectMusicScript.
      dmscript: Remove the extraneous IUnknown from DirectMusicScript.
      dmscript/tests: Add COM tests for DirectMusicScript.
      dmscript: Remove the superfluous "IDirectMusicScriptTrack" from method names.
      dmscript: COM cleanup for IDirectMusicTrack8 from DirectMusicScriptTrack.
      dmscript/tests: Add COM tests for DirectMusicScriptTrack.
      dmscript: COM cleanup for IPersistStream from DirectMusicScriptTrack.
      dmscript: Remove the extraneous IUnknown from DirectMusicScriptTrack.
      dmscript: Include the DMUS_OBJECTDESC directly into DirectMusicScriptTrack.
      dmime/tests: Fix a crash due to a missing audio driver.
      dmloader/tests: Fix a crash due to a missing audio driver.
      dmscript: Return CLASS_E_CLASSNOTAVAILABLE for classes not implemented.
      dmstyle: None of the COM classes support aggregation.
      dmstyle/tests: Add COM tests for IDirectMusicStyle8.
      dmstyle/tests: COM tests for the different DirectMusic*Tracks.
      dmstyle: Use a better error for an unimplemented COM class.
      dmstyle/tests: COM tests for DirectMusicSection.
      dmcompos: Use a better error for an unimplemented COM class.
      dmcompos: None of the COM classes support aggregation.
      dmcompos/tests: Add COM tests for IDirectMusicComposer.
      dmcompos/tests: Add COM tests for IDirectMusicChordMap.
      dmcompos/tests: COM tests for the different DirectMusic*Tracks.
      dmcompos/tests: Add COM tests for DirectMusicTemplate.
      dmstyle/tests: Fix a crash on old dmusic versions.
      dmcompos: COM cleanup for IDirectMusicComposer.

Nikolay Sivov (18):
      scrrun: Implement Next() for folder collection.
      scrrun: Implement Name() property for Folder.
      scrrun: Added IFileCollection stub.
      dwrite: Implement ConvertFontFaceToLOGFONT().
      scrrun: Added stub NewEnum support for IFileCollection.
      scrrun: Implement Next() for file collection.
      scrrun: Implement Reset() for file collection.
      scrrun: Implement Name() property for File.
      scrrun: Implement Skip() for file and folder collections.
      scrrun: Store collection pointer directly in IEnumVARIANT data.
      scrrun: Implement Clone() for folder collection.
      scrrun: Implement Clone() for file collection.
      scrrun: Fill find data on second Next() call before testing it.
      oleaut32: Mask out certain features on array copy.
      oleaut32: Add missing methods to test IRecordInfo implementation.
      oleaut32/tests: Make it clear which vartypes are tested, skip calls on undefined vartype values.
      oleaut32/tests: Test Invoke() arguments in *FromDisp() tests.
      po: Update Russian translation.

Piotr Caban (13):
      msvcr90: Add _is_exception_typeof implementation.
      msvcp110: Share the source code with msvcp90.
      msvcr110: Add __libm_sse2_sqrt_precise implementation.
      msvcr110: Add __crtTerminateProcess implementation.
      msvcrt: Handle null mbstr parameter in mbstowcs.
      msvcp110: Fix streamsize parameter size in spec file.
      msvcrt/tests: Fix crash in mbstowcs tests.
      msvcp110: Make locale::facet::Incref and Decref virtual.
      msvcp110: Add locale::_Init implementation.
      msvcp110: Add _New_Locimp implementation.
      msvcp110: Fix basic_streambuf structure layout.
      msvcp110: Fix _Ctypevec structure layout.
      msvcrt: Don't overwrite unmatched string in scanf.

Sebastian Lackner (5):
      ntdll: Implement condition variable functions using keyed events.
      kernel32: Forward condition variable functions to ntdll.
      kernel32/tests: Add basic tests for SRWLock commands.
      kernel32/tests: Add a SRWLock test to simulate a typical use case.
      ntdll: Implement SRWLock functions using keyed events.

Sergey Guralnik (1):
      winedump: Get rid of the MAKE_DLL_RULES in the Makefile.in template.

Stefan Dösinger (47):
      d3dx9_36: Cast D3DPARAMETER_TYPE * to DWORD *.
      d3dx9_36: Don't make the input parameter to remap_faces_for_attrsort const.
      d3dx9_36: Improve error handling in remap_faces_for_attrsort.
      d3dx9_36: Make the order parameter of weightedcapintegrale an UINT.
      d3dx9_36: Cast UINTs to FLOATs in d3dx9_line_Begin.
      wined3d: Support custom pitches in wined3d_surface_update_desc.
      ddraw: Always set surface width, height and format in ddraw_surface7_SetSurfaceDesc.
      wined3d: Simplify wined3d_surface_set_mem.
      wined3d: Merge wined3d_surface_set_mem into wined3d_surface_update_desc .
      ddraw/tests: Add a getdc test with a custom pitch.
      wined3d: Remove SFLAG_USERPTR.
      wined3d: Mark the system location up to date in the DIB recreation codepath.
      wined3d: GL_NV_vertex_program2_option supports relative offsets > 63.
      wined3d: Add a map_binding field to surfaces.
      wined3d: Use the map binding to reload surfaces on palette changes.
      wined3d: Use the map binding to reload surfaces on color key changes.
      wined3d: Use the map binding for RGB<->sRGB loads.
      wined3d: Mark the map binding up to date in texture2d_sub_resource_add_dirty_region.
      wined3d: Move location flag updating out of surface_init_sysmem.
      wined3d: Load surfaces into map binding memory on unload.
      wined3d: Give user memory its own location.
      wined3d: Use the map binding to optimize sysmem->sysmem blits.
      wined3d: Make the callers of load_location responsible for allocating sysmem.
      wined3d: Start to split up surface_prepare_system_memory.
      wined3d: Move map binding loading to wined3d_surface_map.
      d3dx9_36: Make emsquare an unsigned int in create_outline.
      wined3d: Don't lock directly into the DIB.
      wined3d: Do not use surface->resource.allocatedMemory.
      wined3d: Give the DIB section its own location.
      wined3d: Don't map the surface in getdc.
      wined3d: Re-enable mapping into the DIB.
      wined3d: Add INDIB and INUSERMEM to resource_access_from_location.
      wined3d: Load textures from dib without copying to sysmem first.
      wined3d: Remove SFLAG_PBO.
      wined3d: Decide about PBO use at surface creation time.
      wined3d: Give buffers their own location.
      wined3d: Sysmem can be freed when user memory is used.
      wined3d: Remove resource->allocatedMemory.
      wined3d: Remove surface_init_sysmem.
      wined3d: Prevent blits to surfaces that will be converted.
      d3dx9_36/tests: Use a window with a non-zero size.
      wined3d: Add a missing break.
      wined3d: Remove surface_ops->map.
      wined3d: Separate surface locations and flags.
      wined3d: Migrate surfaces to the new location flags.
      wined3d: Don't set SFLAG_DYNLOCK at surface creation.
      wined3d: Only set SFLAG_DYNLOCK when map_binding = sysmem.

Vincent Povirk (10):
      gdiplus: Mark the Graphics object as busy before freeing it.
      explorer: Add non-functional start button.
      explorer: Add a start menu.
      explorer: Add run dialog to start menu.
      explorer: Add a registry setting to always show the systray.
      explorer: Default to showing the systray if the desktop is named "shell".
      include: Fix off-by-one error in EmfPlusRecordType enumeration.
      gdiplus: Fix recording metafile bounds/dpi reporting.
      gdiplus: Implement writing SetPageTransform records.
      gdiplus: Implement SetPageTransform playback.

--
Alexandre Julliard
julliard@winehq.org
