The Wine development release 1.3.26 is now available.

What's new in this release (see below for details):
  - Various improvements to the builtin Internet Explorer.
  - Support for Get/SetDIBits in the DIB engine.
  - Support for enhanced metafiles in the View tool.
  - Many improvements in WinHTTP.
  - A number of fixes to the COM stubless marshaller.
  - Improved mechanism for DLL registrations.
  - Various bug fixes.

The source is available from the following locations:

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

   3493  Commandos get's very slow (almost locked) while mouse is moving
   4173  Slowness and corruption in old DirectDraw game: Warlords 3
   8012  missing aliases for setlocale()
   8613  Game Conquest: Frontier Wars 1.07 does not start
   9156  images on buttons are drawn incorrectly (Network Assistant)
  10211  gmax 1.2 installer doesn't update dialog controls subscribed to SelectionPath event when the INSTALLDIR property has changed
  11358  Emulator3000 does not display menu and status bar
  12237  Temple Of Elemental Evil crashes after the loading screen
  13496  Director Player Error dialog: "The projector file is corrupt. Unable to continue."
  17075  PLSQLDeveloper: Trying to create some of bultin reports returns "OLE error 80070057"
  17215  Sid Meier's Alpha Centauri - excessive clipping of title screen
  17874  Runes of Magic - will not install.
  19428  Microsoft SQL Express 2005 fails to install - Error 1627 - ERROR_FUNCTION_FAILED
  19924  centry7 application (running within IE) doesn't handle font correctly
  20711  Flatout2 demo crashes on exit
  21202  HotWheels CRASH!: Window invisible
  22002  Runes of Magic: crash when clicking "Start game" in the launcher
  22090  Starcraft II installer window's border is not transparent, but black
  22223  CDBurnerXP's audio disc mode is inaccessible
  22466  Zombie Driver: graphical glitches when using hardware vertex shaders
  22948  Caesar3: there is only black screen and playing sounds.
  23384  Clicking on Audio Tab on Winecfg takes several seconds the first time
  23406  Chrome: multiplayer frequently freezes when loading a new map or disconnecting
  23621  DDraw surface reference counting doesn't match Windows (causes Recoil to fail)
  23703  Runes of Magic clientupdate.exe crashes
  23784  Ballistic (Paddle) game - mouse pointer leaves the game's Window when it shouldn't
  23939  WoW sound issues on win7
  23958  FlylinkDC++ crashes
  24706  No fonts displayed in Synthesia
  24857  Lotus Approach wont paint initial screen
  24894  Where’s Waldo installer refuses to run since it can't phone home via WinHttpRequest com object?
  25397  AutoCAD R14: Impossible to enter serial number at 96dpi
  25570  Crash when attempting to log in to Desura client
  25633  Chip's Challenge crashes Wine after about 10 minutes of gameplay.
  25887  winevdm tries to run dos apps via dosbox on Z: which is reserved in dosbox
  25905  DC Universe Online: installer window is missing most text
  25913  The program TypeFaster.exe has encountered a serious problem and needs to close.
  25977  IW2: Edge of Chaos crashes on exit
  26237  EVE-Online Crashes when applyling any setting in options menu
  26298  DC Universe Online: needs msvcp90.dll.wctype
  26309  Civilization V crashes after clicking play game and prior to the game starting
  26491  Guild Wars: No sound in Windows Vista and Windows 7 mode
  26556  StarCraft2 Editor: Icons in treeview are transparents
  26685  East India Company: multiple issues when using built-in msvcr90.dll
  27083  crash while installing Kingsoft PC manager
  27178  advapi32: CryptEnumProvidersW may not free resources
  27257  Unimplemented function xmllite.dll.CreateXmlWriter
  27383  cmd: mkdir should give an error for pre-existing directories
  27392  Lemmix game (lemmings clone) - mouse pointer no longer works properly
  27393  mmdevapi uninitialiased memory access and crash past rendering
  27562  Autocomplete is case sensitive
  27615  Regression from 1.3.22 -> 1.3.23. Overlord Steam version. Left mouse button no longer responds in menus.
  27630  Vampire The Masquerade: Bloodlines: Regression causes graphics corruption
  27740  Morrowind: click-and-drag doesn't work
  27811  CivCity Rome: Autorun.exe shows misplaced text
  27818  Eurobattle.net installer fails to run (invalid command line parameters passed to child due to user32.wsprintf not handling %I64u format specifier)
  27838  Can't change some graphics settings in GTAIV
  27843  Weather Watcher Live: Cannot start free trial
  27862  Watchtower Library 2010 - Italiano don't start
  27864  Implement winhttp SetCredentials
  27865  Winhttprequest doesn't work with https
  27874  Configure detects no Sound System
  27882  Eschalon Book I [Steam]: audio stopped working
  27883  Bink videos without sound (Mass Effect) [bisected, regression]
  27891  Winhttprequest POST doesn't work
  27898  Winhttprequest wrong credentials return empty response
  27904  wine iexplore parse http://127.0.0.1:8000 to http://127.0.0.1:8000:8000
  27908  Diablo 2 - sound doesn't work
  27913  Safari 5.1 wants  msvcr80.dll._vscwprintf_p_l
  27915  Lemmix game (lemmings clone) - crashes when entering 1st level
  27917  [regression] sound does not work, wine chooses wrong pcm
  27926  "#msgctxt#directory#Desktop" used as name for the desktop folder
  27927  Winhttprequest WaitForResponse should process messages
  27929  Bus error in create_alpha_bitmap on Mac OS X 10.7 Lion with Xcode 4.1
  27938  GdipDrawString Resource leak (GDI Font object).
  27957  psdk2003 installer crash every time
  27961  psdk2003 failed to install, ACTION_InstallFiles Failed to ready media for L"qithunk_s.6720DB2A_1A21_4E82_940E_95044B030B06"

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

Changes since 1.3.25:

Alexander Morozov (1):
      include: Synchronize CRYPTUI_SELECTCERTIFICATE_STRUCT definition with MSDN.

Alexandre Julliard (88):
      wrc: Run through the translation process even if libgettext-po is missing.
      widl: Check for mismatched types in ?: expressions.
      user32/tests: Make hook messages optional in the SetParent test.
      makefiles: Install dlls from the top-level makefile.
      makefiles: Install programs from the top-level makefile.
      user32: Add support for 64-bit formats in wsprintf.
      shlwapi: Add support for 64-bit formats in wsprintf.
      winex11: Return color information in GetImage when passed null bits.
      winex11: Get rid of the no longer used SetDIBits implementation.
      gdi32: Get rid of the SetDIBits driver entry point.
      gdi32: Implement GetImage in the null driver.
      gdi32: Implement GetImage in the DIB driver.
      gdi32: Add an inline helper to retrieve a DDB byte width.
      gdi32: Reimplement GetBitmapBits using the GetImage driver function.
      winex11: Get rid of the no longer used GetBitmapBits implementation.
      gdi32: Get rid of the GetBitmapBits driver entry point.
      makefiles: Still generate makefile rule for disabled dlls that have an import lib.
      rpcrt4/tests: Add a test about unmarshalling of an out-only structure.
      winex11: Force unprotecting the DIB section bits in PutImage.
      widl: Clear out more types of parameters in the proxy error handlers.
      widl: Don't set base types to 0 on proxy entry.
      rpcrt4/tests: Fix a test failure on 64-bit platforms.
      rpcrt4: Use a single structure for all parameter types in new format descriptors.
      rpcrt4: Fetch the arguments address from the StubMsg structure.
      rpcrt4: Simplify tracing of function parameters and flags.
      rpcrt4: Convert old-style argument formats to new style so that the client call implementation can be shared.
      rpcrt4: Convert old-style arguments for NdrMesProcEncodeDecode.
      rpcrt4: Convert old-style arguments for stub calls.
      rpcrt4: Pass the full argument format to the size/marshall/unmarshall wrappers to greatly simplify the argument processing.
      rpcrt4: Use the same phase values for clients and stubs.
      rpcrt4: Add a phase in proxies for clearing output parameters on error.
      rpcrt4: Add a phase in proxies for zeroing output parameters on startup.
      rpcrt4: Support sizing of a few more argument types.
      ntdll: Remove divl second argument for compatibility with clang.
      gdi32: Fix the blend function handling for the AlphaBlend enhanced metafile record.
      makefiles: Also install the program manpages from the top-level makefile.
      actxprxy: Specify the PSFactoryBuffer class in the idl files.
      dispex: Specify the PSFactoryBuffer class in the idl file.
      msdaps: Specify the PSFactoryBuffer class in the idl files.
      ole32: Specify the PSFactoryBuffer class in the idl files.
      oleaut32: Specify the PSFactoryBuffer class in the idl files.
      qmgrprxy: Specify the PSFactoryBuffer class in the idl file.
      quartz: Specify the PSFactoryBuffer class in the idl file.
      sti: Specify the PSFactoryBuffer class in the idl file.
      windowscodecs: Specify the PSFactoryBuffer class in the idl file.
      widl: Only register interfaces when the factory buffer is known.
      ole32: Fix a couple of race conditions with the local server pipe.
      configure: Don't reserve page zero on Mac OS, it won't run DOS apps anyway.
      widl: Add helper functions for outputting resource files.
      widl: Add support for generating typelibs directly in resource format.
      makefiles: Generate resource files for typelibs.
      setupapi: Allocate a virtual memory buffer to read fake dll files.
      setupapi: Run registration scripts of fake dlls as they are copied.
      widl: Generate a registration script along with the typelib when creating a resource file.
      makefiles: Remove some redundant registration scripts.
      oleaut32: Remove typelib registrations.
      mshtml: Remove typelib registrations.
      ieframe: Remove registrations that are duplicated in mshtml.
      winecrt0: No longer register typelibs, they use IRegistrar scripts now.
      winecrt0: Remove the clsid parameter in __wine_(un)register_resources.
      wiaservc: Register the service from wine.inf.
      wiaservc: Convert the remaining registrations to IRegistrar format.
      qmgr: Register the service from wine.inf.
      qmgr: Convert the remaining registrations to IRegistrar format.
      devenum: Don't register quartz from devenum.
      tools: Register the MSI service from wine.inf.
      oleaut32: Generate a few more coclass registrations from idl.
      atl: Use the standard registration mechanism now that the initial registration is handled differently.
      gdi32: Partial implementation of PutImage in the null driver for DDBs.
      gdi32: Reimplement SetBitmapBits using the PutImage driver entry point.
      gdi32: Set the initial bits of a bitmap from the gdi side.
      gdi32: Get rid of the SetBitmapBits driver entry point.
      gdi32: Use GetImage to retrieve the brush bits in metafiles.
      gdi32: Use GetImage to retrieve the brush bits in enhanced metafiles.
      gdi32: Use the visrect coordinates in dibdrv_PutImage.
      gdi32: Update the coordinates in convert_bitmapinfo to reflect the position in the destination bitmap.
      comdlg32/tests: Fix a couple of test failures on NT4.
      gdi32: Create a sanitized BITMAPINFO in CreateDIBSection and pass that to the driver.
      gdi32: Create a sanitized BITMAPINFO in StretchDIBits and pass that to the drivers.
      gdi32: Create a sanitized BITMAPINFO in SetDIBitsToDevice and pass that to the drivers.
      gdi32: Move initialization of a correct BITMAPINFOHEADER to a separate function.
      gdi32: Create a sanitized BITMAPINFOHEADER in GetDIBits.
      gdi32: Create a sanitized BITMAPINFOHEADER in CreateDIBitmap.
      gdi32: Get rid of the DIB_GetBitmapInfo function.
      gdi32: Add a missing release in the error path.
      gdi32: Validate the DIB parameters in functions that take a BITMAPINFO.
      gdi32: Always set compression to BI_BITFIELDS for 16-bpp DIB sections.
      gdi32: Always use BI_BITFIELDS for 16-bpp in GetImage.

Alistair Leslie-Hughes (1):
      advapi32: Add stub TraceMessage, TraceMessageVa.

Andrew Eikum (6):
      mmdevapi: Try loading multiple audio drivers from the registry.
      winealsa.drv: Fix AudioRenderClient write pointer calculation.
      wineoss.drv: Choose default device using a better method.
      winmm: Fix looping handling.
      winealsa.drv: Tell ALSA to play silence during underruns.
      winealsa.drv: Inject handle_underrun=1 setting for pulse-backed devices.

Andrew Talbot (2):
      mscms: Move a misplaced brace.
      riched20: Declare some variables unsigned.

André Hentschel (15):
      winevdm: Try using the new DOSBox command to remap Z to a free drive.
      view: Merge 3 C source files and a header file into one file.
      view: Add support for enhanced metafiles.
      view: Handle the commandline.
      view: Don't load icons, we don't have one yet.
      shlwapi/tests: Don't access memory when the allocation failed.
      comctl32: Remove dead increments (clang).
      user32: Fix for finding nested default buttons.
      rpcrt4/tests: Only free string when function succeeded.
      oleaut32/tests: Only use interface if we succeeded in recreating it.
      dbghelp: One line only for the copyright.
      c2man: We don't have multiple dlls in one directory anymore.
      oleaut32/tests: Skip tests if typelib can't be registered.
      fusion/tests: Skip tests when file creation fails.
      c2man: Mark the file used if a comment is found.

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

Austin English (16):
      configure: Fix audio detection on OSX.
      mmdevapi/tests: Remove a dead assignment (LLVM/Clang).
      ntdll/tests: Remove a dead assignment (LLVM/Clang).
      wininet: Make sure to use return values (LLVM/Clang).
      urlmon/tests: Make sure a return value is used (LLVM/Clang).
      ole32/tests: Make sure to use a return value (LLVM/Clang).
      kernel32/tests: Make sure return values are used (LLVM/Clang).
      msctf/tests: Make sure return values are used (LLVM/Clang).
      hlink: Remove win9x hacks.
      comctl32/tests: Remove win9x hacks.
      gdi32/tests: Remove win9x hacks.
      wininet/tests: Remove win9x hacks.
      user32/tests: Remove win9x hacks.
      makefiles: sysconfdir is unused.
      kernel32/tests: Remove win9x hacks.
      msvcrt/tests: Make sure to use return values.

Bernhard Loos (2):
      ntdll/tests: Add a number of named pipe tests using the nt api and ioctls.
      msi: MsiDatabaseCommit also succeeds for a a readonly database.

Camillo Lugaresi (1):
      configure: Fix problem with linking on OS X 10.7.

Dan Kegel (5):
      kernel32: Add initial test for DefineDosDevice.
      riched20/tests: Fix test_EM_FINDWORDBREAK comments.
      cmd: mkdir: Handle multiple arguments.
      cmd: mkdir: Set errorlevel on invalid argument.
      cmd: mkdir: Set errorlevel and output error message if final directory already exists.

Eric Pouech (1):
      winhlp32: Better protect macros against not finding a help file.

Florian Köberle (2):
      comctl32/tests: Test that headers do not free their image list.
      comctl32/header: Don't free the imagelist in HEADER_NCDestroy.

Francois Gouget (23):
      d3dx9_36: Fix compilation on systems that don't support nameless unions.
      winegstreamer: Make GSTTf_QueryInterface() static.
      po: Use non-breaking spaces where required by the French typography rules.
      ntdll/tests: Fix compilation on systems that don't support nameless unions.
      itss/tests: Fix spelling of a variable name.
      kernel32/tests: Remove a space before a '\n' in an ok() call.
      dinput: Remove IDirectInputDevice8AImpl_{Build,Set}ActionMap() as it is unused.
      kernel32/tests: Make test_define_dos_deviceA() static.
      netapi32: Add some lmuse.h constants.
      net: Make it possible to translate the connection status descriptions.
      Assorted spelling fixes.
      oleaut32: Fix the spelling of an internal structure field name.
      hlink: Fix the spelling of a parameter name.
      d3dxof: Fix the spelling of the children structure fields and constants.
      dinput: Make _dump_diactionformatA() static.
      ntdll: Fix the field names of KUSER_SHARED_DATA and update it.
      net: Remove a debug trace.
      kernel32: Fix writing to a pipe in WriteConsoleW().
      kernel32: Implement K32GetProcessImageFileNameA().
      shell32: Remove WINAPI on static functions where not needed.
      shell32: Make SHELL_CreateContextMenu() static.
      net: Convert to Unicode.
      net: Add a WriteConsole() fall back so things still works on Windows if the output is redirected.

Frédéric Delanoy (37):
      urlmon: Fix various typos/misspellings.
      cmd/tests: Add tests for & (un)conditional execution.
      cmd/tests: Add tests for && on success conditional execution.
      cmd/tests: Add tests for || on failure conditional execution.
      cmd/tests: Add ^ escape character tests.
      cmd/tests: Test multiple params mkdir.
      cmd/tests: Test multiple params rmdir.
      cmd: Add help for setlocal/endlocal commands.
      po: Update French translation.
      dxdiag: Remove dead increment (Clang).
      cmd/tests: Add tests for stdout redirection and appending operators.
      cmd: Fix some comments.
      programs: Assorted spelling fixes.
      include: Assorted spelling fixes.
      cmd/tests: Fix test runner so it catches cases where an output line contains the associated expected line as prefix.
      cmd/tests: Test special handling of ':' in echo.
      cmd: Partial fix for echo's special ':' handling.
      cmd/tests: Additional variable expansion FOR tests.
      tools: Assorted spelling fixes.
      cmd/tests: Add FOR /D tests.
      cmd/tests: Add FOR /L tests.
      cmd/tests: Additional CALL tests.
      cmd/tests: Add tests for variable delayed expansion.
      dlls: Assorted spelling fixes.
      cmd/tests: Additional tests for variable delayed expansion.
      dlls: Assorted spelling fixes.
      po: Update French translation.
      dlls: Assorted spelling fixes.
      cmd/tests: Fix "broken" handling when expected line is empty.
      cmd/tests: Ensure failures are caught in all cases when an expected line ends with a '@'.
      cmd/tests: Remove redundant ok check in compare_line function.
      cmd/tests: Refactor "broken" keyword handling so all cases are handled correctly.
      cmd/tests: Add setlocal/endlocal tests.
      tests: Assorted spelling fixes.
      cmd/tests: Add FOR /A tests.
      winedbg: Remove dead assignment (Clang).
      cmd: Fix handling of lines starting with echo. or echo:.

Gerald Pfeifer (1):
      mshtml: Handle the failure case in get_nsstyle_attr.

Hans Leidekker (36):
      msi: Fix the SelectionPath event handler.
      winhttp: Use an offset instead of a pointer for the write position.
      winhttp: Implement IWinHttpRequest::get_ResponseBody.
      winhttp: Implement IWinHttpRequest::SetCredentials.
      winhttp: Set last error if the server didn't return a valid response.
      winhttp: Propagate errors from asynchronous requests.
      msi: Don't duplicate column string data.
      msi: Allow read sharing if the package is openend in transacted mode.
      winhttp: Implement IWinHttpRequest::SetProxy.
      winhttp: Add accept types to the request headers.
      winhttp: Add a default user agent header.
      winhttp: Set WINHTTP_FLAG_SECURE if the scheme is https.
      winhttp: Implement IWinHttpRequest::GetAllResponseHeaders.
      winhttp: Add some parameter checks.
      winhttp: Implement IWinHttpRequest::GetResponseHeader.
      winhttp: Implement IWinHttpRequest::SetRequestHeader.
      winhttp: Add support for sending data with a request.
      winhttp: Include the extra info part of the URL in the request.
      winhttp: Don't send any data if the verb is GET.
      msi: Store table and column names in the string table.
      msi: Make the column and table name parameters of get_column_info const.
      msi: Clean up the database queries.
      msi: Always check the return value of MSI_IterateRecords.
      winhttp: Disable automatic authentication.
      winhttp: Fix some valgrind warnings.
      winhttp: Set an appropriate error when the request is cancelled.
      winhttp: Factor out request initialization.
      winhttp: Store a copy of the proxy server name and bypass list.
      kernel32: Add a trace to ReplaceFileW.
      winhttp: Protect access to the request object with a critical section.
      winhttp: Execute asynchronous requests in a separate thread.
      winhttp: Implement IWinHttpRequest::SetAutoLogonPolicy.
      winhttp: Verify parameter types in IWinHttpRequest::SetProxy.
      msi: Avoid a crash in ControlEvent_SetTargetPath.
      msi: Make sure the source directory has a trailing backslash.
      winhttp: Don't depend on shlwapi for decoding a URL.

Henri Verbeet (51):
      wined3d: Use gl_info from the context in context_apply_clear_state().
      wined3d: Use the "rts" variable in context_apply_clear_state().
      wined3d: Get rid of the vpos_uniform field from the wined3d_pixel_shader structure.
      wined3d: Make the shader and ctx_priv parameters to shader_generate_glsl_declarations() const.
      wined3d: Store a pointer to the state table in the context.
      wined3d: Pass "reset_enum_callback" directly to wined3d_device_reset().
      wined3d: Get rid of wined3d_device_enum_resources().
      wined3d: Unbind resources inside wined3d_device_reset().
      wined3d: Unbind all textures in wined3d_device_reset().
      wined3d: Release the onscreen depth / stencil reference on reset.
      wrc: Don't include gettext-po.h if we don't have the corresponding library.
      wined3d: Introduce a "state" variable in device_stream_info_from_declaration().
      wined3d: Get rid of the use_vshader parameter to device_stream_info_from_declaration().
      wined3d: Get rid of the redundant state_table parameter to context_invalidate_state().
      wined3d: Only invalidate state for the current context in swapchain_blit().
      wined3d: Only invalidate state for the current context in wined3d_surface_depth_blt_fbo().
      wined3d: Only invalidate state for the current context in surface_blt_fbo().
      wined3d: Only invalidate state for the current context in tesselate_rectpatch().
      wined3d: Only invalidate state for the current context in device_clear_render_targets().
      wined3d: Only invalidate state for the current context in wined3d_device_set_cursor_properties().
      wined3d: Only invalidate state for the current context in wined3d_buffer_map().
      wined3d: Only invalidate state for the current context in wined3d_buffer_unmap().
      wined3d: Recognize some more AMD cards.
      wined3d: Don't hide GL function pointer typedefs behind extension defines.
      wined3d: wined3d_device_evict_managed_resources() doesn't need a return value.
      wined3d: Complain about users disabling GLSL.
      wined3d: Apply draw state after depth / stencil setup in drawPrimitive().
      wined3d: Apply clear state after depth / stencil setup in device_clear_render_targets().
      wined3d: Just invalidate STATE_FRAMEBUFFER in surface_load_ds_location().
      wined3d: Get rid of dst_fbo.
      wined3d: Get rid of context_bind_fbo() calls outside context.c.
      wined3d: Resolve source and destination rectangles in wined3d_surface_blt().
      wined3d: IWineD3DSurfaceImpl_BltOverride() is always passed valid source and destination rectangles.
      wined3d: Check for locked surfaces in wined3d_surface_blt().
      wined3d: Go straight to the fallbacks for complex blits in surface_blt().
      wined3d: Go to the fallbacks if D3D is not initialized in surface_blt().
      wined3d: Set the read buffer to GL_NONE in surface_load_ds_location().
      wined3d: Fix switching color keying on / off.
      wined3d: Add WINED3DFMT_P8_UINT support to wined3d_format_convert_from_float().
      wined3d: Go to the fallbacks for cross-swapchain blits.
      wined3d: Merge wined3d_surface_blt(), surface_blt() and gdi_surface_blt().
      wined3d: Remove the unused blit_op parameter to arbfp_blit_surface().
      wined3d: Remove src_rect and dst_rect NULL checks from surface_cpu_blt().
      wined3d: Move rectangle validation from surface_cpu_blt() to wined3d_surface_blt().
      ddraw: Remove rectangle validation from ddraw_surface7_Blt().
      wined3d: Move some flags handling from surface_cpu_blt() to wined3d_surface_blt().
      wined3d: Implement wined3d_surface_bltfast() on top of wined3d_surface_blt().
      ddraw: Remove rectangle validation from ddraw_surface7_BltFast().
      wined3d: Always pass a non-NULL rectangle to surface_color_fill() in wined3d_device_color_fill().
      wined3d: Pass a non-NULL rectangle to surface_color_fill() in wined3d_device_clear_rendertarget_view().
      wined3d: Get rid of the fglrx point sprite hack.

Huw Davies (20):
      gdi32: Rewrite SetDIBits to use the PutImage gdi driver function.
      gdi32/tests: Add some SetDIBits tests.
      gdi32: Better handling of non-trivial source and destination areas.
      gdi32/tests: Add tests for GetDIBits using non-trivial source and destination areas.
      shell32: Initialise the error string pointer.
      gdi32: Add an inline helper to return the number of colour entries in a dib.
      gdi32: Use the helper to retrieve the number of colours.
      gdi32: Simplify the calculation of the rop masks.
      gdi32: Add a function to retrieve the rop codes.
      gdi32: Add a copy_rect primitive.
      gdi32: Move the colour setting to a separate function.
      gdi32: Add a PutImage implementation to the dib driver.
      gdi32: Actually use the dib driver's Get/PutImage if the bitmap is a dib.
      gdi32/tests: Simplify some of the tests.
      gdi32/tests: Add some GetDIBits tests with zero lines and bits parameters.
      gdi32: Simplify the code a little by using a separate variable for the return value.
      gdi32: If possible use the GetImage driver entry to fill the colour table for GetDIBits.
      gdi32: Don't load a font replacement if any face of the real family exists.
      gdi32: Fix dibdrv_PutImage for the selected bitmap case.
      gdi32: Simplify dibdrv_GetImage by merging the stand-alone and selected bitmap cases.

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

Jacek Caban (70):
      mshtml: Moved binding-related declarations to separate file.
      mshtml: Use CreateURLMonikerEx2 in SuperNavigate.
      mshtml: Moved OLECMDID_SETDOWNLOADSTATE call to separated function.
      mshtml: Moved script mode out of get_script_host to allow exec_script calls in Gecko script mode.
      mshtml: Downgrade GetAsciiHost FIXME to WARN.
      mshtml: Split set_moniker implementation.
      mshtml: Call set_moniker asynchronously in SuperNavigate.
      mshtml: Added support for javascript: URLs.
      mshtml: Added javascript: URLs test.
      ieframe: Added new DLL.
      ieframe: Moved InternetShortcut implementation to ieframe.dll.
      ieframe: Moved CUrlHistory implementation to ieframe.
      ieframe: Moved TaskbarList implementation to ieframe.
      ieframe: Added version information.
      mshtml: Fixed tests on some old IEs.
      urlmon: Store URI host len in parse_ipv4address before further parsing.
      ieframe: Moved dialog resources to ieframe.
      ieframe: Moved string and menu resources to ieframe.
      ieframe: Added typelib.
      ieframe: Moved image resources to ieframe.
      ieframe: Moved WebBrowser and InternetExplorer objects implementations to ieframe.
      mshtml: Added IHTMLEventObj::put_returnValue implementation.
      ieframe: Moved ie.c tests to ieframe.
      mshtml.idl: Added IHTMLStyle5 and IHTMLStyle6 declarations.
      mshtml: Added IHTMLStyle5 implementation.
      mshtml: Added IHTMLSyle6 stub implementation.
      mshtml.idl: Added missing DispHTMLStyle properties.
      mshtml: Added IDispatchEx support for IHTMLStyle5 and IHTMLStyle6 ifaces.
      wininet: Fixed realm allocation in cache_basic_authorization.
      urlmon: Fixed duplicated IUri creation in CoInternetGetSecurityUrlEx.
      iexplore: Moved iexplore registration extension to iexplore.exe.
      iexplore: Removed unneeded imports.
      ieframe: Removed remaining bits of shdocvw.
      mshtml: Fixed HTMLHeadElement_QI implementation.
      mshtml: Improved handling empty dispex_data_t in preprocess_dispex_data.
      winetest: Include language settings in OS info.
      shell32: Moved MruLongList registration to shell32, where it belongs.
      shdocvw: Get rid of MicrosoftBrowserArchitecture registration.
      ieframe: Moved classes registration to ieframe.
      shdocvw: Moved remaining code out of factory.c.
      iexplore: Use ieframe instead of shdocvw.
      winnt.h: Added LOCALE_CUSTOM_* declarations.
      mshtml: Added semi-stub implementation of IHTMLWindow2::status property.
      mshtml: Added IHTMLPluginsCollection::get_length implementation.
      mshtml: Added IOmNavigator::get_*Language implementations.
      mshtml: Added IOmNavigator::get_*Language tests.
      mshtml: Added IOmNavigator::get_appMinorVersion implementation.
      mshtml: Rename call_event to fire_event.
      mshtml: Added possibility for node implementations to add default event handlers.
      mshtml: Added default click handler for anchor element.
      mshtml: Moved nsevents.c declarations to htmlevent.h.
      mshtml: Always alloc event_vector for documents.
      mshtml: Always set onclick event handler during document initialization.
      ieframe: Moved WebBrowser object tests to ieframe.
      mshtml: Added IURi-based nsIURL::GetDirectory implementation.
      mshtml: Call default event handlers only for events that have them.
      mshtml: Allow async tasks to have custom destructors.
      mshtml: Use task destructor for navigate task.
      mshtml: Use task destructor for navigate_javascript task.
      mshtml: Use task destructor for start_request task.
      mshtml: Use task destructor for async_doc_binding task.
      mshtml: Use task destructor for start_binding task.
      mshtml: Use task destructor for set_downloading task.
      mshtml: Properly free tasks in remove_target_tasks.
      mshtml: Removed duplicated includes.
      ieframe: Moved intshcut.c tests to ieframe.
      wshom.ocx: Added new DLL.
      wshom.ocx: Added typelib.
      wshom.ocx: Added Dll[Un]RegisterServer implementation.
      mshtml: Fixed nsAString handling in navigate_anchor.

Jay Yang (4):
      shell32: Have the system context menus respect idCmdFirst.
      include: Add header entries required for SHCreateDefaultContextMenu and CDefFolderMenu_Create2.
      shell32/tests: Add tests for SHCreateDefaultContextMenu.
      shell32: Implement SHCreateDefaultContextMenu and CDefFolderMenu_Create2.

Jörg Höhle (7):
      winmm: Functions that take an open HWAVE don't need StartDevicesThread.
      winmm: Replace one HeapAlloc with stack allocation.
      winmm: Assign to structs instead of using memcpy.
      winmm: Fix memory leak in msacm error path.
      winmm: Fix logic conditions.
      winmm: Restore checking of callback flags.
      winmm: Remove redundant code.

Kusanagi Kouichi (1):
      winex11.drv: Fix a memory leak.

Maarten Lankhorst (1):
      ntdll: Use FUTEX_PRIVATE_FLAG for critical section futexes when available.

Marcus Meissner (1):
      dinput: const REFGUID is doubled const (Coverity).

Mariusz Pluciński (12):
      shell32/tests: Fix mistake in checking known folder to verify all known folders.
      shell32/tests: Add verification of known folders categories.
      shell32/tests: Add verification of known folders parents.
      shell32/tests: Add verification of known folders relative paths.
      shell32/tests: Add notification about unknown known folders.
      shell32/tests: Add notification when expected known folder does not exists.
      shell32/tests: Add checking some non-published known folders.
      shell32/tests: Add verification of known folders parsing names.
      shell32/tests: Add verification of known folders attributes.
      shell32/tests: Add verification of known folders definition attributes.
      shell32/tests: Add verification of FOLDERID_ProgramFilesX64 and FOLDERID_ProgramFilesCommonX64.
      shell32: Check if known folder's relative path was passed to function.

Matteo Bruni (9):
      d3d8/tests: Rename a variable.
      d3d8/tests: Fix some error messages.
      d3d8/tests: Add a couple of fog tests.
      ddraw/tests: Rename a variable.
      ddraw/tests: Fix some messages.
      d3d9/tests: Rename a variable.
      d3d9/tests: Fix some messages.
      ddraw/tests: Add a couple of fog tests.
      d3d9/tests: Add a couple of fog tests.

Michael Mc Donnell (3):
      d3dx/tests: Fixed double free (valgrind).
      d3dx9/tests: Implemented ConvertPointRepsToAdjacency test.
      d3dx9: Implemented ConvertPointRepsToAdjacency.

Michael Stefaniuc (22):
      dmstyle: Merge all the different IClassFactory implementations.
      dmstyle: Implement IClassFactory::QueryInterface.
      dmstyle: Remove an unused function declaration.
      dpnet: COM cleanup for the IDirectPlay8Address iface.
      dswave: COM cleanup for the IClassFactory iface.
      dswave: Implement IClassFactory::QueryInterface.
      dmusic: Merge the IClassFactory implementations.
      dmime: Merge the IClassFactory implementations.
      dmcompos: Merge the IClassFactory implementations.
      dmsynth: Merge the IClassFactory implementations.
      dmscript: Merge the IClassFactory implementations.
      dmband: Merge the IClassFactory implementations.
      devenum: COM cleanup for the IClassFactory iface.
      dxdiagn: COM cleanup for the IClassFactory iface.
      dxdiagn: Implement IClassFactory::QueryInterface.
      dmloader: Merge and simplify the IClassFactory implementations.
      dmloader: Simplify the module refcount handling.
      dpnet: COM cleanup for the IDirectPlay8Client iface.
      ole32/tests: COM cleanup in compobj.c.
      dpnet: COM cleanup for the IDirectPlay8Peer iface.
      dpnet: COM cleanup for the IDirectPlay8ThreadPool iface.
      dpnet: COM cleanup for the IDirectPlay8LobbiedApplication iface.

Michał Ziętek (1):
      wscript: Fix tests on wow64.

Nikolay Sivov (7):
      shell32/autocomplete: Autocompletion should be case insensitive for string comparison.
      shell32/autocomplete: Really append suggested part instead of replacing whole string.
      shell32/autocomplete: Remove redundant memory initialization.
      advapi32: Fix CheckTokenMemberShip for primary tokens.
      advapi32: Basic test for CreateRestrictedToken.
      include: Fix definition name.
      advapi32/crypt: Fixed some HKEY leaks.

Nowres Rafed (1):
      iphlpapi: Implemented IcmpSendEcho2Ex().

Octavian Voicu (2):
      shell32: Disable WOW64 redirection when converting pidls to UNIX paths.
      configure: Disable gstreamer support if headers are not compatible with build environment.

Piotr Caban (12):
      msvcrt: Fixed tmpnam and _wtmpname implementation.
      msvcrt: Fix %f format handling in printf so it works with big floats.
      msvcrt: Fix uninitialized memory access in wcsrtombs_l implementation (valgrind).
      msvcp90: Added _Locinfo class stub.
      msvcp: Sync spec files.
      msvcrt: Fixed vswprintf* exports.
      msvcp90: Added wctype implementation.
      msvcrt: Added vscwprintf_{l,p_l} functions implementation.
      ieframe: Added OleObject_Close implementation.
      shdocvw/tests: Added OleObject_Close tests.
      mshtml: Fix DOCUMENT_NODE handling in nsnode_to_nsstring_rec.
      mshtml: Added error handling to get_doc_string.

Richard Bradbrook (2):
      comctl32: Fix to ComboBoxEx processing of WM_ENABLE message.
      comctl32: Make ComboBoxEx draw its contents even when disabled.

Ričardas Barkauskas (6):
      ddraw: Do not increase wined3d texture refcount in IDirect3DDevice7_GetTexture.
      ddraw: Use unsafe_impl_from_IDirect3DTexture() for application provided interfaces.
      ddraw: COM cleanup for IDirect3DTexture interface.
      ddraw: Use unsafe_impl_from_IDirect3DTexture2 for application provided interfaces.
      ddraw: Rename surface_from_texture2 to impl_from_IDirect3DTexture2.
      ddraw: Change IDirect3DTexture2_vtbl to IDirect3DTexture2_iface.

Stefan Dösinger (1):
      wined3d: Restore the call to context_validate_onscreen_formats.

Vincent Povirk (9):
      gdiplus: Don't use a gdi32 brush for semi-transparent hatch brushes.
      windowscodecs: Implement GetContainerFormat for more components.
      windowscodecs: Implement GetDecoderInfo for all the decoders.
      windowscodecs: Implement FlipRotator_GetResolution.
      windowscodecs: Implement FlipRotator_CopyPalette.
      windowscodecs: Implement IcoFrameDecode_GetResolution.
      windowscodecs: Fix typo.
      gdiplus: Fix vertical string alignment.
      winex11.drv: Don't set gamma when UseXVidMode is turned off.

William Pettersson (1):
      wined3d: Add support for Nvidia GTX 550/560 Ti.

--
Alexandre Julliard
julliard@winehq.org
