The Wine development release 1.3.25 is now available.

What's new in this release (see below for details):
  - Rewrite of the audio support, using the Win7 architecture.
  - Old-style sound drivers for Jack, NAS and ESD are removed.
  - Graphics driver architecture changes for the DIB engine.
  - Improved handling of the shell recycle bin.
  - Better joystick support in DirectInput.
  - Initial stub for VBScript support.
  - Various bug fixes.

The source is available from the following locations:

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

   1841  wrong region drawn
   4931  Visual Basic 6 app wizard reports out-of-memory error due to oleaut32 ICreateTypeInfo2_fnSetHelpStringContext stub
   5991  MSDE install fails due to missing ntdsapi.dll.DsGetSpnA stub
   8543  archicad 10 demo installer severe Z order problems
   8548  Runtime error 5 and 440 in factusol 2007 (oleaut32.VariantCopyInd input pvargSrc check fails for VT_RECORD|VT_BYREF)
   8951  Textures are not displayed in Company of Heroes and everything is only black and white
   9228  PartyPoker does not start the second time
  10105  OLE Errors start upon launching and blank windows
  11285  Static characters on Nvidia 7xxx cards in Witcher
  11737  DVD Rebuilder fails to run
  14186  Morrowind stucks for 3-5seconds during background music change (in combat)
  14942  White trees in Drakensang
  15542  The Settlers V - The Heritage of the Kings / Siedler 5 - Das Erbe der Könige
  15586  Barkley, Shut up and Jam: Gaiden - Intro screen is drawn mostly off screen
  17398  Giants: Citizen Kabuto - shadows appear as flickering pixel patterns
  17815  Red Alert 3 won't start because of missing directx 9.0 (which works for others).
  17890  Unreal Tournament shows only a quarter of the screen in full screen mode
  18590  Silent Heroes: Out of adapter memory
  18672  WinBUGS crashes under Linux with any Wine version > 1.1.12.
  19030  Escape from Monkey Island - saving game freezes
  19684  Viewports aren't displayed correctly in irrEdit
  19939  Valve's Source Dedicated Server needs X for console mode
  21214  cmd: "if" blocks are echoed only once; body shouldn't be echoed again
  21338  cmd needs to set COMSPEC, PATHEXT, and PROMPT environment variables on startup
  22063  cmd tests need todo_wine
  22548  Mass Effect 2/Singularity: Banding in lighting effects
  22609  SystemShock2 crash when starting level
  22614  Unigine Heaven 2 d3d9 benchmark runs out of video memory
  22773  VLC Media Player 1.0.5 doesn't show fullscreen videos correctly
  23211  A-Ray Scanner v2.0.2.3 crashes with unhandled page fault
  23410  OnLive fails to connect to service
  23573  when Moving cursor, Xorg uses %100 CPU.
  23685  Prince of Persia 3D demo crashes, D3D-related?
  23881  CoreAudio driver stops playing sound when headphones are plugged in or removed
  24412  Internet Explorer 9 installer prerequisite check fails due to missing ktmw32.dll
  24509  Blur: crashes in intro videos in fullscreen mode
  24580  Multiple apps fail due to commctrl.TaskDialogIndirect stub (utorrent, IE9 installer)
  24590  [Settlers 7 Demo] Game waits for an event on the splash screen
  25032  Banana 6.0 (accounting software) crashes on license registration dialog
  25069  Dlink IP Surveillance 300 tool crashes on startup
  25123  Dragon NaturallySpeaking 11 does not run
  25233  SimCity 4 Deluxe Edition : graphical issues
  25269  SNS-HDR: Fails to run
  25567  Civilization V requires d3dx9_36
  25650  BearShare: Crash at the end of installation
  25667  foobar 2000: Balloon tooltip cropped
  25670  Republic: The Revolution: Cann't run installer.
  25717  Japanese fonts sometimes shifted to the left
  25778  'kIconServices16PixelDataARGB' undeclared (first use in this function)
  26353  Winhttprequest5.1 is unimplemented?
  26492  GridIron Flow Essentials: Fails to install with built-in msxml3
  26537  LabVIEW 2010: Installer detected non-existent previous installation
  26637  Tom Clancy's HAWX is not running
  26809  iexplore crashes when clicking on Home while it is already loading a https URL
  26835  Portal 2 exits at menu screen.
  26841  Reaper: File extensions not saved with project file
  26881  Portal 2 main menu fonts are too big, entries get truncated
  26906  HaoZip: No text in menu
  26908  HaoZip: Files view does not draw the window background
  26948  iTunes 10.2.2.12 reports "Apple Application Support was not found" on startup
  26981  Word 2003 - very sluggish
  27004  Warcraft III fails to select units by mouse drag
  27074  avicap32 won't build correctly on recent kernel headers
  27087  Space Empires: Star Fury hangs with sound enabled (Alsa full hw. acceleration)
  27263  Broken depth test for translucent surfaces in Arx Fatalis (d3d 7 game)
  27322  Flatout 1 does not run anymore
  27517  Lord of the Rings Online wants d3dx9_36.dll.D3DXGetShaderSamplers (purist)
  27522  Mouse motion blocked or laggy while clicking
  27555  Text is not displayed on Wine 1.3.22+git in Civilization IV
  27598  PLSQL Developer: can't not login to database
  27676  PowerPC build broken in dlls/d3dx9_36/tests/math.c
  27687  SSL cannot be connected with Solaris 11 Express
  27711  ListView_SetTextBkColor may lead to infinite loop
  27732  WinRAR became unusable since Wine 1.3.23, it constantly flashes and consumes 100% of CPU
  27772  Rollercoaster Tycoon fails to start (unless ddr=opengl)
  27776  Aquarium: Invalid floating point operation
  27778  TYPE outputs extraneous blank line after file contents
  27782  "echo off" does not work in cmd interactive mode
  27795  Half-Life 2 hangs with a black screen on launch
  27802  ollydbg2 crashes on unimpl dbghelp.dll.SymEnumSourceLinesW stub
  27804  Multiple MS installers expect a "Logs" folder under %SystemRoot%
  27822  Warcraft 3 Demo installer crashes during the installation
  27823  d3d breaks after upgrade from 1.3.15 to 1.3.24
  27828  MyVirtualHome doen't start (fixme:wininet:InternetSetOptionW Option 38 STUB)
  27832  Iexplore crash in nsio.c (regression)
  27840  winecfg crashes when using Royale (WindXP MCE) style
  27866  Second Disk problem

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

Changes since 1.3.24:

Adam Martinson (2):
      msxml3: Don't cause an assert failure if the datatypes schema doesn't load.
      msxml3: Don't include libxml/parser.h twice.

Akihiro Sagawa (7):
      po: Update Japanese translation.
      po: Add message contexts for 'Restore' and update Japanese translation.
      po: Add message contexts for 'Desktop' and update Japanese translation.
      dsound: Fix a typo.
      dsound/tests: Add tests to check notifications after duplicate.
      dsound: Don't copy the notify object on duplicate.
      dsound: Don't copy the position notify on duplicate.

Alexander Morozov (3):
      mshtml: Add stub implementation of IProvideClassInfo interface.
      mshtml: Added IProvideClassInfo::GetClassInfo implementation.
      cryptui/tests: Always use a function pointer for CryptUIWizImport.

Alexandre Julliard (59):
      makefiles: Allow install rules to run in parallel.
      makefiles: Install static libraries from the top-level makefile.
      makefiles: Install import libraries from the top-level makefile.
      makefiles: Make MODULE contain the full module name also for static libraries.
      gdi32: Export a function to compute the DC clip box.
      gdi32: Compute StretchBlt rectangles in gdi32.
      gdi32: Pass the source/dest visible rectangles to the StretchBlt driver entry point.
      gdi32: Pass the dest visible rectangle to the PatBlt driver entry point.
      gdi32: Pass the source/dest visible rectangles to the AlphaBlend driver entry point.
      gdi32: Make the DC function structure public.
      winex11: Add a DC function structure and export it.
      wineps: Add a DC function structure and export it.
      gdi32: Ask the graphics driver for the function table instead of loading functions one by one.
      gdi32: Sort the OpenGL driver functions alphabetically.
      gdi32: Graphics driver functions no longer need to be CDECL.
      gdi32: Add driver entry points for GetImage and PutImage.
      gdi32: Add a null driver StretchBlt fallback using GetImage/PutImage.
      winex11: Add an implementation for the GetImage entry point.
      winex11: Add support for byte swapping in GetImage.
      winex11: Add an implementation for the PutImage entry point.
      winex11: Move the execution of rop operations from X11DRV_StretchBlt to a separate function.
      winex11: Add support for rops in PutImage.
      winex11: Add support for bottom-up format in PutImage.
      gdi32/tests: Fix some test failures on Windows.
      netapi32/tests: Don't crash if the administrators group is missing.
      winex11: Set all the bitmap padding to 0 in GetImage.
      gdi32: Use the original StretchBlt rectangle if a DC doesn't have a visible region.
      winex11: Don't access the source rectangle in PutImage until needed.
      winex11: Simplify a couple of BitBlt operation codes.
      winex11: Avoid overflowing the source rectangle in StretchBlt.
      gdi32: Move a couple of rectangle helper functions to the header.
      gdi32: Remove the GetDIBits entry point from the graphics driver.
      winex11: Remove the GetDIBits implementation.
      winex11: Create a new message window every time we change clipping to avoid stale notifications.
      Revert "d3dx9_36: Improved constant table handle support."
      gdi32: Move GET_DC_PHYSDEV back to gdi_private.h, it can't be used from external drivers.
      gdi32: Add inline helpers to compute DIB stride and total size.
      gdi32: Add format conversion to the null driver StretchBlt implementation.
      wineps: Remove unneeded GetTransform prototype.
      winex11: Remap pixels to system palette in Get/PutImage for 4 and 8 bpp.
      winex11: Fill in the color table in Get/PutImage for 4 and 8 bpp.
      winex11: Verify that the color map matches in PutImage for 4 and 8 bpp.
      gdi32: Add a special case for converting dibs to 1-bpp using the background color.
      gdi32: Set the color maps to the destination DC colors for 1-bpp images.
      gdi32: Move the checks for empty visible rects in PatBlt/StretchBlt back to gdi32.
      comdlg32/tests: Print the id of the GetSaveFileName test on failure.
      gdi32: Pass the full bitblt_coords structure to the Get/PutImage entry points.
      gdi32: Allow the PutImage entry point to optionally support stretching.
      gdi32: Get rid of the offset in the gdi_image_bits structure now that we are passing the full rectangles.
      wineps: Add a couple of helper functions to simplify the StretchDIBits implementation.
      wineps: Implement the PutImage entry point.
      gdi32: Get rid of the StretchDIBits-based fallback for StretchBlt.
      gdi32: Add an optional clip region to the PutImage entry point.
      winex11: Add helper functions for changing and restoring the current clipping region.
      winex11: Implement the additional clipping in PutImage.
      wineps: Implement the additional clipping in PutImage.
      user32/tests: Mark some messages optional in the SetParent sequence.
      user32/tests: Fix some last error tests that fail on Windows.
      user32/tests: Fix test failures when the low-level hook cannot be set.

Alistair Leslie-Hughes (4):
      oleaut32: Correct ISupportErrorInfo clsid value.
      xmllite: Implement CreateXmlWriter.
      oleaut32: Dont filter out VT_RECORD|VT_REF type in VariantCopyInd.
      ntdsapi: Add stub for DsGetSpnA.

Andrew Eikum (17):
      winecoreaudio.drv: Make AudioSessionManager methods static.
      winmm: Remove driver implementation of waveOut*.
      winmm: Implement waveOut* on top of MMDevAPI.
      mmdevapi: Only enumerate devices that can be opened during initialization.
      dsound: Request that WinMM perform audio conversion if the hardware doesn't support the requested format.
      winmm: Support WAVE_MAPPED flag in waveOut*.
      winmm: Remove driver implementation of waveIn*.
      winmm: Implement waveIn* on top of MMDevAPI.
      winmm: Remove driver implementation of mixer*.
      winmm: Implement mixer* on top of MMDevAPI.
      winenas.drv: Remove unused WinMM driver.
      wineesd.drv: Remove unused WinMM driver.
      winejack.drv: Remove unused WinMM driver.
      mmdevapi: Use a sane default if no buffer size is requested.
      winmm: Close ACM stream when closing wave device.
      winmm: Perform Open and Close callbacks from client thread.
      winmm: Fix check for DCB_NULL callback type.

Andrew Nguyen (2):
      msxml3: Extend the lifetime of the SAX callback BSTRs beyond the callback invocation.
      msxml3/tests: Fix two minor leaks in test_mxwriter_properties().

André Hentschel (11):
      dbghelp: Remove dead code (clang).
      cmd/tests: Add test for parameter detection.
      user.exe: Remove dead assignment (clang).
      user32: Remove dead assignment (clang).
      oledlg: Remove dead assignment (clang).
      progman: Remove idempotent operation (clang).
      version: Don't initialize the variable twice (clang).
      usp10: Fix possible crashes (clang).
      user32/tests: Add test for nested default button in dialogs.
      winevdm: Use secure mode when running apps in DOSBox.
      user32/tests: Fix two typos.

Aric Stewart (1):
      usp10: Add missing Bengali entry.

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

Austin English (2):
      wine.inf: Create %systemroot%\logs directory by default.
      dbghelp: Add stubs for SymEnumSourceLines/SymEnumSourceLinesW.

Bellengé Maxime (1):
      comctl32: Don't reset trackbar thumb on a WM_SIZE message.

Bernhard Loos (3):
      rpcrt4: Create pipes with FLAG_OVERLAPPED.
      server: Check for STATUS_OBJECT_TYPE_MISMATCH before STATUS_ACCESS_DENIED in get_handle_obj.
      ntdll/tests: Add a test for STATUS_OBJECT_TYPE_MISMATCH.

Christian Inci (1):
      setupapi: Fix return behaviour when the device key doesn't exist.

Dan Kegel (1):
      riched20/tests: Add test for WB_ISDELIMITER.

Dmitry Timoshkov (1):
      kernel32: Add a test how PE section characteristics get mapped into memory page access, make it pass under Wine.

Francois Gouget (22):
      winealsa.drv: Make the AudioSessionManager methods static.
      wineoss.drv: Make the AudioSessionManager methods static.
      explorer: Fix compilation on systems that don't support nameless unions.
      d3dx9_36/tests: Fix compilation on systems that don't support nameless structs/unions.
      d3dx9_36: Use copysignf() instead of signbit().
      ole32: Fix a handle leak in local_server_thread().
      ole32: Modify local_server_thread() to recreate the pipe for each request.
      shell32: Add a trailing '\n' to Wine trace calls.
      wineps.drv: Make some DC functions static.
      winex11.drv: Make some DC functions static.
      shell32: Make erase_items() static.
      winmm: Make WINMM_DRVMessage() static.
      wineoss.drv: Add a trailing '\n' to a TRACE() call.
      winmm: Remove an unused variable in WINMM_GetComponentTypeLineInfo().
      winex11.drv: Make copy_image_bits() static.
      d3dx9_36: Add a trailing '\n' to an ERR() call.
      po: French translation tweaks and fixes.
      po: Remove English strings from the German translation.
      po: Remove English strings from the Polish translation.
      po: Remove English strings from the Bulgarian translation.
      po: Remove English strings from the Czech translation.
      po: A French translation fixe and a tweak.

Frédéric Delanoy (23):
      cmd/tests: Add support for todo_wine constructions.
      winhlp32: Remove dead assignment (Clang).
      ole32/tests: Remove dead assignment (Clang).
      mmdevapi/tests: Remove dead assignment (Clang).
      start: Add support for /? command line parameter.
      cmd/tests: Add basic "for" tests.
      cmd/tests: Add basic mkdir tests.
      cmd/tests: Add mkdir tests for trailing backslashes and invalid chars handling.
      cmd/tests: Add basic rmdir tests.
      po: Update French translation.
      po: Update French translation.
      cmd: Output a empty line before version in VER.
      cmd: Avoid printing an excess newline after version is displayed on startup.
      cmd: Do not show prompt when echo mode is off.
      cmd: Avoid excess newline after TYPE outputs file contents.
      cmd/tests: Convert line endings to DOS style at runtime before running batch test file.
      cmd/tests: Add SET tests.
      cmd/tests: Add tests for recursive rmdir.
      cmd/tests: Test that ErrorLevel is set to 9009 when unknown commands are encountered.
      cmd/tests: Add tests for NUL handling.
      kernel32: Fix function description of CompareStringA and lstrcmpA.
      cmd/tests: Add CALL tests.
      cmd: Fix comment for CMD_PIPE.

Grazvydas Ignotas (4):
      ntdll/tests: Add more debug register tests.
      server: Set RW and LEN bits of DR7 before setting DR0-DR3.
      server: Set debug enable bits briefly to commit the addresses to kernel.
      ntdll/tests: Test NtQueryDirectoryFile with RestartScan set to FALSE.

Hans Leidekker (11):
      server: Include groups in file mode calculation if the security descriptor matches the current user.
      winhttp: Implement IDispatch for WinHttpRequest.
      winhttp: Implement IWinHttpRequest::Open.
      winhttp: Implement IWinHttpRequest::Send.
      winhttp: Implement IWinHttpRequest::SetTimeouts.
      winhttp: Implement IWinHttpRequest::WaitForResponse.
      winhttp: Implement IWinHttpRequest::get_Status.
      winhttp: Implement IWinHttpRequest::get_StatusText.
      winhttp: Implement IWinHttpRequest::get_ResponseText.
      winhttp: Implement IWinHttpRequest::Abort.
      winhttp: Add tests for IWinHttpRequest.

Henri Verbeet (40):
      wined3d: Make the device parameter to primary_render_target_is_p8() const.
      wined3d: Make the surface parameter to d3dfmt_p8_init_palette() const.
      wined3d: Store VBO addresses in a struct wined3d_bo_address in device_stream_info_from_declaration().
      wined3d: Return data as struct wined3d_bo_address in buffer_get_memory().
      wined3d: Store a struct wined3d_bo_address in struct wined3d_stream_info_element.
      wined3d: Only use state contained in the ffp_frag_settings structure in gen_arbfp_ffp_shader().
      wined3d: Explicitly pass gl_info to gen_arbfp_ffp_shader().
      wined3d: Make the swapchain parameter to x11_copy_to_screen() const.
      wined3d: Make the shader parameter to vshader_get_input() const.
      wined3d: Make the shader parameter to shader_generate_main() const.
      wined3d: Make the volume parameter to volume_bind_and_dirtify() const.
      wined3d: Make the volume parameter to volume_load() const.
      wined3d: Pass a state pointer instead of a stateblock to loadNumberedArrays().
      wined3d: Pass a state pointer instead of a stateblock to loadTexCoords().
      wined3d: Pass a state pointer instead of a stateblock to loadVertexData().
      wined3d: Store a pointer to the framebuffer state in struct wined3d_state.
      wined3d: Remove the unused untransformed field from struct wined3d_device.
      wined3d: Get rid of the clip status code.
      wined3d: Make the context and device parameters to find_draw_buffers_mask() const.
      wined3d: Pass a wined3d_state pointer to state handlers.
      wined3d: Don't set GL_MAP_UNSYNCHRONIZED_BIT for WINED3D_BUFFER_DISCARD maps.
      wined3d: Add stream offsets in device_stream_info_from_declaration().
      wined3d: Get rid of the useext macro.
      wined3d: Make the texture parameter to texture_srgb_mode() const.
      wined3d: Make the swapchain parameter to swapchain_blit() const.
      wined3d: Make the surface parameter to surface_get_rect() const.
      wined3d: Make the surface parameter to surface_is_full_rect() const.
      wined3d: Make the surface parameter to surface_convert_depth_to_float() const.
      wined3d: Make the surface parameter to surface_convert_color_to_float() const.
      wined3d: Make the surface parameter to surface_depth_blt() const.
      ddraw: Just use SetWindowPos() in ddraw_set_display_mode().
      wined3d: Make the surface parameter to ffp_blit_p8_upload_palette() const.
      wined3d: Make the priv parameter to map_register() const.
      wined3d: Make the query parameter to wined3d_event_query_test() const.
      wined3d: Make the query parameter to wined3d_event_query_finish() const.
      ddraw: Resize the window after setting the new display mode.
      ddraw/tests: Add tests to show that resizing the window on mode changes is a property of DDSCL_EXCLUSIVE.
      wined3d: Make the tex_unit_map parameter to shader_glsl_load_psamplers() const.
      wined3d: Make the tex_unit_map parameter to shader_glsl_load_vsamplers() const.
      wined3d: Make the heap parameter to update_heap_entry() const.

Huw Davies (17):
      gdi32: Don't use a dib-section's bitfields unless its depth matches the requested depth.
      gdi32: Use a local copy of the bitmap info structure to further simplify GetDIBits.
      gdi32: Simplify the optional free'ing of bits pointer.
      gdi32: Allow dib_info structures to share colour tables.
      gdi32: Implement the conversion between two identical bitfield dibs.
      gdi32: Add conversion routines for source dibs with an arbitrary order of 8-bit channels.
      gdi32: Add conversion routines for source dibs with an arbitrary order of red and blue 5-bit and green 5 or 6-bit channels.
      winex11: Sync a dib-section before accessing the image bits.
      gdi32: Zero-pad the end of the scanlines.
      gdi32: Move the query info code to a separate function.
      gdi32: Export a bitmap conversion function.
      gdi32: Implement GetDIBits using the GetImage driver function.
      winex11: Sync the dib-section bits before writing to the image.
      winex11: Use the appropriate color_shifts when the target is a bitmap.
      gdi32: Add a helper to sanitize a BITMAPINFO structure.
      gdi32: Add a helper to fill out the colour table from the current palette.
      gdi32: Fix the lines parameter of SetDIBits to be positive.

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

Jacek Caban (21):
      d3d10.idl: Added CD3D10_TEXTURE1D_DESC declaration.
      d3d10effect.h: Added missing D3D10_EFFECT_* flags.
      include: Added macros for __uuidof emulation based on C++ templates.
      widl: Produce __uuidof-compatible headers.
      dxgi.idl: Added IDXGIResource, IDXGIAdapter1 and IDXGIFactory1 declarations.
      mshtml: Factor out getting style value string from Gecko value.
      mshtml: Pass flags to get_nsstyle_attr.
      mshtml: Added IHTMLStyle::clip property implementation.
      mshtml: Added IHTMLStyle::clip tests.
      mshtml: Added IHTMLStyle::pageBreakAfter property implementation.
      vbscript: Added stub VBScript object implementation.
      vbscript: Added IActiveScriptParse stub implementation.
      jscript: Properly handle aggregation attempt.
      vbscript: Added creation tests.
      mshtml: Implement nsIURI::SetUserPass on top of IUri.
      mshtml: Moved style tests to separated file.
      mshtml: Added IHTMLStyle::pageBreakBefore implementation.
      mshtml: Added IHTMLStyle2::direction property implementation.
      urlmon: Added support for javascript URIs.
      mshtml: Make execScript tests more generic.
      mshtml: Return NS_BINDING_ABORTED for canceled binding in AsyncOpen.

Jay Yang (11):
      shell32/tests: Add tests for SHQueryRecycleBin.
      shell32: Implement SHQueryRecycleBin.
      shell32: Implement SHEmptyRecycleBin.
      shell32: Have RecycleBin implement ISFHelper.
      shell32: Implement a context menu for the recycle bin.
      shell32: Implement restoring items from the recycle bin.
      shell32: Make IExplorerBrowser respond to CWM_GETISHELLBROWSER.
      shell32: Have the default shell view call SHChangeNotifyRegister with unixfs pidls.
      shell32: Make ISFHelper_fnCopyItems actually copy the items.
      explorer: Fix various memory leaks.
      comclt32: Ensure that item data is actually sent out with notifications.

Jeff Latimer (1):
      comctl32: Improve the stub of TaskDialogIndirect to display a simple message box pending a full implementation.

Juan Lang (2):
      wininet: De-Hungarian proxyinfo_t.
      wininet: Implement setting proxy options globally for a process.

Kazuyuki Sato (1):
      crypt32: Add additional path for Solaris 11 Express.

Ken Thomases (2):
      winex11.drv: Fix X11DRV_KeymapNotify when multiple keycodes map to same vkey.
      winex11.drv: Map Meta keys to VK_{L, R}MENU, not just VK_MENU.

Louis Lenders (1):
      advapi32: SetLastError in ReadEventLog{A, W} stub to avoid applications from looping forever.

Lucas Fialho Zawacki (12):
      dinput8/tests: Tests for EnumDevicesBySemantics with different enumeration flags.
      dinput: Made EnumDevicesBySemantics more terse.
      dinput: Prevent EnumDevicesBySematics from enumerating keyboard and mouse as having force feedback.
      dinput: BuildActionMap and SetActionMap stubs for generic joystick.
      dinput: EnumDevicesBySemantics enumerating all kinds of joysticks.
      dinput: Corrected misuse of index in EnumDevicesBySemantics.
      dinput/tests: Tests for EnumObjects with different types of device objects.
      dinput: Using DIDFT_GETTYPE in EnumObjects instead of DIEFT_GETTYPE.
      dinput: EnumDevicesBySemantics enumerate joysticks with priority flags.
      dinput: BuildActionMap for all joysticks. For the moment only for buttons and axis.
      dinput: SetActionMap for joysticks.
      dinput: SetActionMap setting the axis range according to the action format.

Marcus Meissner (4):
      wingstreamer: Set target of parameter pointer, not parameter (Coverity).
      dinput: const REFIID is duplicate const (Coverity).
      shell32: Check error return in get_known_folder_path (Coverity).
      gdiplus: Check return values of GdipCreateMatrix(2) (Coverity).

Mariusz Pluciński (4):
      include: Add FOLDERTYPEID types and values definitions.
      shell32/tests: Add checking known folders' names.
      shell32: Add IKnownFolder::GetFolderDefinition() implementation.
      shell32: Fix FOLDERID_Document definition.

Matteo Bruni (1):
      d3dx9: Fix an error check in D3DXLoadMeshFromXResource.

Michael Mc Donnell (2):
      d3dx9/tests: Implemented ConvertAdjacencyToPointReps test.
      d3dx9: Implemented ConvertAdjacencyToPointReps mesh method.

Michael Stefaniuc (17):
      d3d10core: COM cleanup for the ID3D10Device iface.
      d3d10core: Use unsafe_impl_from_ID3D10VertexShader for an app provided iface.
      d3d10core: COM cleanup for the ID3D10VertexShader iface.
      d3d10core: Use unsafe_impl_from_ID3D10PixelShader for an app provided iface.
      d3d10core: COM cleanup for the ID3D10PixelShader iface.
      d3d10core: Use unsafe_impl_from_ID3D10RenderTargetView for app provided ifaces.
      d3d10core: COM cleanup for the ID3D10RenderTargetView iface.
      d3d10core: Use unsafe_impl_from_ID3D10InputLayout for an app provided iface.
      d3d10core: COM cleanup for the ID3D10InputLayout iface.
      ole32: COM cleanup for the IEnumCATEGORYINFO iface.
      shell32: Use FAILED instead of !SUCCEEDED.
      ddrawex/tests: Use FAILED instead of !SUCCEEDED.
      explorer: Use FAILED instead of !SUCCEEDED.
      comctl32/tests: Don't cast NULL to an int.
      vbscript: Don't bother with a FIXME in DllCanUnloadNow().
      qmgr: COM cleanup for the IClassFactory iface.
      gameux: COM cleanup for the IClassFactory iface.

Michał Ziętek (4):
      wscript: Implemented Host_get_FullName.
      wscript: Implemented Host_get_Path.
      wscript: Implemented Host_get_ScriptName.
      wscript: Implemented Host_get_ScriptFullName.

Misha Koshelev (1):
      d3dx9_36: Use cross-platform versions of infinity and NaN.

Natanael Copa (1):
      configure: Test for isinf and isnan needs link to -lm.

Nikolay Sivov (4):
      comctl32/tests: Test that edit box is not multiline.
      comctl32/listview: Don't invalidate list on LVM_SETTEXTBKCOLOR.
      comctl32/listview: Don't invalidate list on LVM_SETTEXTCOLOR.
      comctl32/listview: Don't invalidate list on LVM_SETBKCOLOR.

Owen Rudge (1):
      winemapi: Escape subject and body before building mailto URL.

Piotr Caban (1):
      comctl32: Don't invalidate item in LISTVIEW_SetItemT when its state has not changed.

Rafał Mużyło (1):
      avicap32: Drop v4l1 support.

Rico Schüller (10):
      d3dx9: Parse elements in d3dx9_parse_resource().
      d3dx9: Implement D3DXGetShaderSamplers().
      d3dx9: Implement ID3DXBaseEffect::SetTexture().
      d3dx9: Introduce get_valid_parameter().
      d3dx9: Implement ID3DXBaseEffect::GetMatrix().
      d3dx9: Implement ID3DXBaseEffect::GetVectorArray().
      d3dx9: Implement ID3DXBaseEffect::GetMatrixTranspose().
      d3dx9: Fix ID3DXBaseEffect::GetFloat().
      d3dx9: Implement ID3DXBaseEffect::GetMatrixArray().
      d3dx9: Implement ID3DXBaseEffect::GetMatrixTransposeArray().

Ričardas Barkauskas (1):
      wined3d: Introduce quirk for proper RGBA16 support.

Stefan Dösinger (1):
      wined3d: Don't apply and invalidate the framebuffer when clearing the device's fb.

Travis Athougies (2):
      d3dx9_36: Separate calculation of Bytes.
      d3dx9_36: Improved constant table handle support.

Vincent Povirk (3):
      gdiplus: Fix use of uninitialized memory.
      shell32: Include NULL terminators in the lengths used by SHELL_ArgifyW.
      shell32: Dynamically allocate argify buffer if the static one is too small.

William Pettersson (1):
      winex11: Add grab for XInput2 ButtonPress event.

--
Alexandre Julliard
julliard@winehq.org
