This is release 0.9.58 of Wine, a free implementation of Windows on Unix.

What's new in this release (see below for details):
  - The default version is now Windows XP.
  - Many Richedit improvements.
  - Beginning of jscript dll support.
  - Shell folders now respect XDG directory configuration.
  - Many translation updates.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.58.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.58.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

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

Bugs fixed since 0.9.57:

   1798  Keyboard focus to terminal, not the program
   2880  Recursive exception in cygwin1.dll
   3261  Aire Freshener Behavior
   3856  Picasa doesn't recognize USB key on import
   4130  Windows straddle both monitors in a dual monitor system when they shouldn't
   4228  oleaut32 -native ODBC crash for VFP app
   4627  Microsoft Visual Foxpro 7 SP 1 - Docked components in top of main window -> Incorect coordinates for edited form.
   4907  Juiced Demo dont start
   5272  Söeldner demo crashes
   5435  not possible no use more than 1.2GB of memory
   6120  Clicking Metascore in Steam browser causes steam to crash with an error
   6745  Deus Ex: error screen displayed when exiting
   6970  CSpy/List View: LVM_DELETEITEM causes incorrect redraw
   7138  OS-Memory-map crash not found in wine 0.9.28
   7380  Crash in FoxIT 2.0, Adobe Flash CS3, WinMerge, diff in Dreamweaver 8
   7430  Wall Street Advisor 1.27 won't start / Windows Script Control install problem?
   7678  WinRar's "Select toolbar buttons" listview dialog malfunctioning
   7799  ddraw surface shift in Stalingrad42
   7908  House of the dead 2 doesn't start
   7919  3d structure drawn opaque and white in Warhammer Dawn of War
   7932  click (x) to close textpad five crashes
   7952  World of Warcraft 2.0.12 crash
   8152  CPF Editor crashes
   8197  Soulseek p2p program (slsk.exe version 157 test8) has crashing after load files and trying connect to slsk server
   8204  Soldat 1.4 fonts messed up
   8427  CPUZ fails to load
   8429  Civilization 4: Map display issues  (no terrain textures)
   8776  kernel32.ReadFileScatter unimplemented
   8976  PNG images not displayed in IE6
   8988  Sacred: choppy video and sound; sprites cannot be seen.
   9096  Blitzkrieg crashes at start
   9193  Neverwinter Nights 2: Map corrupted
   9463  Alien Shooter 2: Vengeance surface allocation
   9564  SpellForce: The Order Of Dawn - Cannot start game
   9598  Halo: Combat Evolved crashes on startup
   9668  Grim Fandango random crashes during gameplay
   9679  BMW M3 Challenge doesn't run
   9715  winecfg should allow display resolution beyond 120dpi
   9831  Input Method window hides on Home Page Builder V9
   9933  Listview not refreshing when checkboxes switched on/off
   9934  Space bar does not tick checkboxes in Listview
   9947  FRITZ 10 crashes
  10102  Program Diet Power 4 doesn't install/run properly without tweaking
  10272  Can not start wine twice (X Error)
  10330  Citrix icaweb32.msi crashes wine
  10363  wineprefixcreate: user's profile shell folders should symlink to $XDG_XXX_DIR
  10401  sscanf() incorrect results in MSVCRT
  10509  System Shock 2 doesn't run
  10588  Shotonline fails to start
  10689  "wine eject" makes installer crash
  10932  MozyHome: invisible text
  11161  PAF 5 help function fails to download or install wine_gecko
  11210  test_arb_vs_offset_limit() vertex program error
  11226  avi2dvd crashes: Access violation in quartz.dll
  11244  Steam's Community page shows error page
  11253  Adobe Photoshop CS2 main window very slow redraw
  11535  Gothic3 - graphic errors when resolution is higher than 1024x768
  11554  Pop up dialogs open behind the current window in Adobe Photoshop
  11563  WXTide32 fails to restore main window contents when restored
  11655  MirandaIM not coming back once sent closing to the taskbar
  11693  Picasa updater crashes in the background
  11696  Darkcrusade massive dll error
  11713  Display of Moon phases erratic in app o/p
  11733  App main window fails to remove task bar entry on minimizing
  11767  Civilization 4 crashes for unimplemented msvcr71.dll.__CppXcptFilter
  11790  Word 2003 crashes when trying to print
  11823  Visual Foxpro 7: Objects may and may not be visible in IDE
  11840  Cygwin apps can't start up, fail creating a mailslot
  11891  LANguard Network Installer fails with "Unable to install InstallShield Scripting Runtime"
  11917  Parallel port printing problem (missing flow control?)
  12078  Spellborn: Crashes on launch with "Init: CheckDepthStencilMatch failed. (D3D_OK)"

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

Changes since 0.9.57:

Alexander Dorofeyev (3):
      wined3d: Get rid of spurious err when locking with WINED3DLOCK_DISCARD.
      d3d8/tests: Cover one more case in p8_texture_test.
      wined3d: Use primary_render_target_is_p8 in read_from_framebuffer.

Alexandre Julliard (36):
      msvcrt/tests: The new string functions don't have to exist.
      gdi32: Properly handle SetDIBits failure in StretchDIBits.
      winex11: Added an exception handler to catch bad pointers in X11DRV_SetImageBits.
      winex11: Add support for merging redundant events, and use it for ConfigureNotify and MotionNotify.
      uuid: Avoid some guids that shouldn't be defined in libuuid.
      msvcrt: Implemented __CppXcptFilter.
      advapi32: Implemented RegOverridePredefKey.
      winex11: Discard ConfigureNotify events even if the intervening events are for other windows.
      user32: Add a helper function to set the capture window.
      user32: Add a SetCapture function to the driver interface.
      winex11: Moved support for window moving/resizing back to user32.
      winex11: Check if _NET_WM_MOVERESIZE is supported before using it.
      comctl32/tests: Avoid size_t printf format warnings.
      makefiles: Consider all .res files as object files.
      winex11: Store a pointer to the X11 event currently being handled instead of a simple count.
      ntdll: Implemented NtReadFileScatter.
      ntdll: Implemented NtWriteFileGather.
      kernel32: Propagate the FILE_FLAG_NO_BUFFERING CreateFile flag to ntdll.
      kernel32: Implemented ReadFileScatter and WriteFileGather.
      shell32/tests: Remove spurious linefeeds in error messages.
      winex11: Fix bug report address.
      winex11: Fix typo that was causing superfluous updates of the visible rect.
      winex11: Avoid useless updates of the desktop window Z-order.
      winex11: Fix mouse coordinates mapping on desktop window.
      server: Fix desktop window coordinates mapping in expose_window.
      winex11: Clip out children window when repainting the desktop.
      user32: Implemented EnumDesktopWindows.
      winex11: Remove leftover debugging output.
      ntdll: Clear the direction flag before calling exception handlers.
      ntdll: Add test cases for the direction flag.
      configure: Add a --enable-maintainer-mode option.
      makefile: Add rules for automatically rebuilding configure in maintainer mode.
      configure: Add rules for rebuilding icons in maintainer mode.
      msvcrt: Add support for field width in scanf %c format.
      ntdll: Refuse to create the .wine directory if the parent belongs to a different user.
      user32/tests: Flush events during the mouse button tests.

Alistair Leslie-Hughes (12):
      msxml3: Implement IXMLDOMComment_substringData.
      msxml3: Implement IXMLDOMCDATASection_substringData.
      msxml3: Implement IXMLDOMCDATASection_appendData.
      msxml3: Support IXMLDOMCharacterData lookup in IXMLDOMText QueryInterface.
      msxml3: Implemented IXMLDOMText_insertData.
      msxml3: Corrected double free in test.
      msxml3: Register msxml3 typelib.
      msxml3: Allow IXMLDOMDocument to save as another IXMLDOMDocument.
      msxml3: Cannot use put_nodeValue on a IXMLDOMProcessingInstruction node whose target is xml.
      msxml3: Implement IXMLDOMComment_appendData.
      msxml3: Implemented IXMLDOMCDATASection_insertData.
      mscoree: Added stub CorBindToRuntimeEx.

Anatoly Lyutin (1):
      wine.inf: Add "MenuShowDelay" value.

Andrew Riedi (2):
      user32: Move the bitmap header check as far up as possible.
      reg: Add stub 'reg' program.

Andrew Talbot (22):
      netapi32: Assign to struct instead of using memcpy.
      qmgr: Assign to structs instead of using memcpy.
      ntdll: Assign to structs instead of using memcpy.
      ole32: Assign to structs instead of using memcpy.
      ole32: Assign to structs instead of using memcpy.
      oleaut32: Assign to structs instead of using memcpy.
      qcap: Assign to structs instead of using memcpy.
      quartz: Assign to structs instead of using memcpy.
      ole32: Assign to structs instead of using memcpy.
      rpcrt4: Assign to structs instead of using memcpy.
      riched20: Assign to structs instead of using memcpy (with typo fixes).
      oledlg: Assign to structs instead of using memcpy.
      rsaenh: Assign to structs instead of using memcpy.
      setupapi: Assign to structs instead of using memcpy.
      secur32: Assign to structs instead of using memcpy.
      shdocvw: Assign to structs instead of using memcpy.
      shell32: Assign to structs instead of using memcpy.
      twain_32: Assign to structs instead of using memcpy.
      urlmon: Assign to structs instead of using memcpy.
      user32: Assign to structs instead of using memcpy.
      uxtheme: Assign to structs instead of using memcpy.
      wined3d: Assign to structs instead of using memcpy.

Aric Stewart (9):
      wineboot: Add Japanese resources.
      gdi32: Skip leading @ from FontFace when looking for font to load.
      gdi32: Add loading and processing of GSUB table vert/vrt2 functions for proper tategaki (vertical writing).
      dsound: Set the status from STATE_STARTING to STATE_PLAYING before mixing our next buffer so that we do not potentially skip early event when starting.
      regedit: Check for unicode file without using fseek.
      rebar: In AutoSize get the window rc after REBAR_Layout if needed to respect the sizing changes made by REBAR_Layout.
      freetype: Fix a typo that prevented checking more than the first range in Range Format 2.
      imm32: Add IME dll prototypes to the ddk/imm.h header.
      imm32: IMEs do not expect the hMsgBuf to be NULL, so initialize it.

Artur Szymiec (1):
      wined3d: Add a device uuid.

Austin English (1):
      kernel32: Spelling fixes.

Chris Robinson (1):
      quartz: Don't print errors for handled return values.

Christopher Berner (1):
      user32: Make LoadStringW pass tests.

Cihan Altinay (1):
      ddraw: Fix refcounting of palettes.

Clinton Stimpson (1):
      user32: Test processing of expose events.

Dan Hipschman (14):
      qmgr: Add critical sections for jobs and files.
      qmgr: Add infrastructure for background file transferring.
      qmgr: Implement local file background "downloads."
      kernel32: Add the MOVEFILE_WRITE_THROUGH flag for MoveFileEx (stub).
      qmgr: Implement BackgroundCopyJob_Complete.
      qmgr: Transfer files given by URL (including HTTP, etc).
      qmgr: Transfer files given by URL (including HTTP, etc).
      qmgr: Implement progress updates for downloads given by URL.
      qmgr: Implement IBackgroundCopyJob_AddFileSet.
      widl: Ignore libraries in imported IDL files.
      rpcrt4: Use correct count in rpcrt4_conn_np_write.
      qmgr: Add a stub implementation of IBackgroundCopyJob2.
      rpcrt4: Handle FC_ENUM16.
      widl: Make structures with FC_ENUM16 fields complex.

Dan Kegel (2):
      wintab: Expand whitelist of tablets.
      shell32: Only print "HCR_GetFolderAttributes should be called for simple PIDL's" once.

Denver Gingerich (1):
      ddraw: Implement ForceRefreshRate registry entry for overriding DirectX refresh rate.

Detlef Riekenberg (3):
      winspool: Export ConvertAnsiDevModeToUnicodeDevMode and ConvertUnicodeDevModeToAnsiDevMode.
      winspool: Implement SpoolerInit.
      winspool: Cleanup for DEVMODEdupWtoA.

Dmitry Timoshkov (5):
      fonts: Add some missing Ukrainian and Belarusian cyrillic glyphs.
      wine.inf: Update time zone information for America/Los_Angeles and America/Tijuana.
      mlang: Implement Rfc1766ToLcidA.
      winex11.drv: Add a some heuristics when to add a maximize or fullscreen hint.
      user32: Increase an initial buffer size from 32 to 128 hwnds for enumerated children.

Eric Pouech (18):
      richedit: Prevent division by zero when 0-width border is used.
      richedit: Properly set the border width while parsing RTF stream.
      richedit: Added support for reading DI bitmaps in RTF streams.
      richedit: Fix reading paragraph left & first indentation attributes.
      richedit: When handling \pard in RTF stream, really resets all paragraph styles.
      richedit: Fixed typo in bitmap scaling (for OLE objects).
      richedit: Added support for end of line inside paragraphs.
      richedit: Store shift-enter (keyboard) and \line (rtf) as end of row (and emit \line while saving in RTF).
      richedit: Assign equivalent structures instead of copying them.
      richedit: Pass left margin around when computing the size of a run, so that a tab will get a correct size.
      richedit: Correctly set the pitch and family for a font when reading an RTF stream.
      richedit: In RTF reader, set both bold and weight attributes, so that we don't care about priority between the two.
      richedit: Use the FW_ constants instead of the raw values.
      include: Added msftedit support in richedit.h.
      richedit: Added support for EM_SETTARGETDEVICE with a NULL DC.
      richedit: Fixed object leaks generated by context creation & destruction.
      richedit: Don't force cursor change when it's not needed.
      richedit: Allow reading an enhanced metafile from an RTF stream.

Ethan Chen (1):
      include: Add GdipBitmapUnlockBits to include/gdiplusflat.h.

Francois Gouget (4):
      d3d9/tests: Fix compilation on systems that don't support nameless unions.
      gdi32: Remove a trailing space in a Wine trace.
      msi/tests: Skip the tests if we are unable to identify the user SID. This fixes crashes on Win9x.
      Assorted spelling fixes.

Frans Kool (3):
      comdlg32: Corrected Dutch translations.
      reg: Corrected #include statement for translations to work.
      reg: Added Dutch resources.

H. Verbeet (1):
      server: Don't drop the SE_GROUP_LOGON_ID attribute.

Herve Chanal (4):
      msiexec: A nicer icon.
      msiexec: Add SVG source for the icon.
      cmd: Add a nicer icon.
      notepad: Add a nicer icon.

Huw Davies (8):
      gdi32: Update both winnt and win9x font keys and factor out the cleanup code.
      gdi32: Store the Windows path (if it's available) in the font registry entries.
      comctl32: Get the background brush in ACM_OPEN where native does.
      comctl32: Animation notifications should be posted not sent.
      comctl32: Revert to waiting on just the thread object, since the thread no longer sends messages.
      comctl32: Always send WM_CTLCOLORSTATIC during WM_ERASEBKGND.
      gdi32: Factor out FreeType initialization into a separate function.
      gdi32: Ignore fonts with names that begin with a '.'.

Jacek Caban (34):
      mshtml: Added IHTMLDocument2::write implementation.
      mshtml: Added IHTMLScriptElement:get_type implementation.
      mshtml: Use load group to find NSContainer in AsyncOpen if URI has no associated container.
      urlmon: Fixed MapUrlToZone test on IE7.
      jscript: Added stub DLL.
      activscp.idl: Added CATID_* declarations.
      include: Added activaut.idl.
      mshtml: Improve header parsing.
      wininet: Move INTERNET_OPTION_HANDLE_TYPE to vtbl.
      wininet: Move InternetQueryOption(INTERNET_OPTION_URL) to vtbl.
      wininet: Move InternetQueryOption(INTERNET_OPTION_DATAFILE_NAME).
      wininet: Move InternetQueryOption(INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT) to vtbl.
      secur32: Fixed dynamic loading in schannel test.
      secur32: Improve SECPKG_ATTR_CIPHER_STRENGTHS stub.
      jscript: Added Dll[Un]RegisterServer implementation.
      urlmon: Move InternetParseUrl(PARSE_SECURITY_URL) call to map_url_to_zone and fix buffer size.
      mshtml: Return full patch in res protocol's secure URL.
      urlmon: Remove tests that fail on IE7 and make Wine behave like IE7.
      urlmon: Fixed URLZONEREG_DEFAULT handling in GetZoneActionPolicy.
      urlmon: Added URLACTION_* and URLPOLICY_* declarations.
      urlmon: Added ProcessUrlAction implementation.
      urlmon: Added more policy tests.
      urlmon: Added special URLACTION_SCRIPT_OVERRIDE_SAFETY handling.
      wininet: Don't use query and hash part of URL to generate cache file name.
      jscript: Added JScript class factory.
      jscript: Added JScript stub implementation.
      mshtml: Break Wine Gecko 0.0.1 support.
      activscp.idl: Added IActiveScriptProperty declaration.
      jscript: Added IActiveScriptParse stub implementation.
      jscript: Added IActiveScriptProperty stub implementation.
      wine.inf: Register jscript.dll.
      jscript: Added IActiveScriptParseProcedure2 declaration.
      jscript: Added IActiveScriptParseProcedure2 stub implementation.
      jscript: Added IObjectSafety stub implementation.

James Hawkins (20):
      msi: Optimize MsiSourceListAddSourceEx for adding to the end of the list.
      msi: Fix an off-by-one error when applying embedded transforms.
      msi: Ignore the custom action type 51 if the source field is empty.
      msi: Deformat the service name and display name when installing the service.
      msi: Test and fix MsiSourceListAddSource.
      msi: Don't publish the product for the custom action test.
      msi: Skip the endlines test if the table fails on import.
      msi: Fix a few tests of display IDs that don't exist on win9x.
      msi: Skip the Installer object tests on win9x.
      msi: Fix a few test failures on win9x.
      msi: Fix a few test failures on win9x.
      msi: Fix a few test failures on win9x.
      msi: Fix the type of the ID parameter of MsiSourceListEnumMediaDisks.
      msi: win95 returns ERROR_BAD_PATHNAME.
      msi: Clean up the db when skipping the tests.
      msi: Fix a few failing tests on win9x.
      msi: Fix the registry root indices for Installer::RegistryValue.
      msi: Don't trace the tables names on import.
      msi: Remove the dependence on compressed cabinets in the install tests.
      fusion: Add a stub implementation of fusion.dll.

Jared Lapsley (1):
      shdocvw: WebBrowser_get_Busy implementation.

Jason Edmeades (1):
      user32: Fix MessageBox button contents and ordering.

Jason Green (1):
      d3d9: Add a visual test case for the D3DSAMP_SRGBTEXTURE sampler state.

Jeremy White (1):
      gdi32: Revise CreateScalableFontResourceA to pass through CreateScalableFontResourceW.

Joris Huizer (2):
      wininet: Fixed typos in two out-of-memory checks.
      qmgr/tests: Test the correct handle.

Ken Thomases (4):
      avifil32: Fix copy/paste error.
      dsound: Adjust for partial block before prepare-header and add-buffer steps.
      coreaudio: Standardize on DRV_SUCCESS/FAILURE status codes for setup functions.
      coreaudio: Signal driver load failure if any component fails to initialize.

Kusanagi Kouichi (1):
      winex11.drv: Fix crash by long preedit text.

L. Rahyen (1):
      winecfg: Make DPI interval to be the same as in Windows.

Lei Zhang (10):
      comctl32: Add tests for TB_GETSTRING, fix NULL pointer access.
      comctl32: Fix TB_GETSTRING return values.
      shell32: Add xdg-user-dirs lookup code.
      shell32: Use xdg well known directories for my_xxx folder symbolic links.
      shell32: Use xdg well known directories for desktop folder symbolic link.
      comctl32: Add listview checkbox toggle test.
      comctl32: Implement listview checkbox toggle.
      comctl32: Redraw listview after changing extended styles.
      comctl32: Correct listview hittest check to include the state rect.
      comctl32: Fix listview redraw when deleting items.

Louis Lenders (1):
      oleacc: Add GetOleaccVersionInfo.

Luis Javier Merino (1):
      wined3d: BltFast dealing correctly with overlapping src and dest.

Maarten Lankhorst (34):
      include: Add flag for BSM_ALLDESKTOPS.
      qcap: Add better findpin stub for CaptureGraphBuilder.
      qcap: Implement a stubby CaptureGraphBuilder2::RenderStream.
      quartz: Don't add MERIT_DO_NOT_USE filters automatically to create a connection.
      quartz: Implement a dummy null renderer for directshow.
      quartz: Detect and skip id3v2 header in mpeg splitter.
      quartz: Fix typo.
      quartz: Uncomment a trace.
      quartz: Implement detection on file extension in filesource.
      quartz: Add directsound renderer to filter list.
      quartz: Destroy the filtergraph better in releasing.
      quartz: Fix IFilterGraph RemoveFilter to stop the filter before removing it.
      quartz: Set a default sync source on the filtergraph.
      quartz: Silence the directsound buffer on starting.
      quartz: Make MediaSeeking stubs fixmes.
      quartz: Add initial support for time formats in IMediaSeeking.
      quartz: Change some more stubs from traces to fixmes.
      quartz: Implement a few MediaSeeking functions.
      user32: Fix enumeration for EnumWindowStations and EnumDesktops.
      dsound: Add an option to mix sound buffers in the mixer again.
      winmm: Fix midi deadlock by not holding lock on release.
      wine.inf: Change default windows version to XP.
      winemp3: Skip idv3 header too.
      quartz: Fix the magic bytes for mp3's with id3 tags.
      quartz: Call send flush/endofstream and segment messages downstream.
      quartz: Move IMediaSeeking from the parser pin to the parser filter.
      quartz: Fix bug in transmitting messages further.
      quartz: Transmit pullpin messages further.
      quartz: Don't pass reference time when running.
      quartz: Pass the reference time + small delay on on begin of playback.
      quartz: Fix checking for duration.
      quartz: Add mediaseeking stub to audio renderer.
      quartz: Add critical sections to IMediaSeeking.
      quartz: Implement forwarding mediaseeking messages.

Marcus Meissner (3):
      msi: Initialize variables.
      wininet: Split out NULL ptr and function ptr check.
      mshtml: Fix potential 1 byte 0 overwrite.

Michael Karcher (1):
      winex11: Fix alpha for client-side-rendered text.

Michael Moss (2):
      kernel32/tests: Fix false positive file notification tests.
      kernel32/tests: Test notifications for overlapping directory watches.

Michael Stefaniuc (18):
      widl: Remove local variable shadowing in add_func_desc().
      gdiplus/tests: Remove redundant NULL check before GdipFree().
      comctl32/tests: Fix a variable type in monthcal.c. Removes 19 -Wsign-compare warnings.
      iccvid: Add the Romanian translation.
      msvidc32: Add the Romanian translation.
      crypt32: Update the German translation.
      regedit: Fix and update the German translation.
      msrle32: Add the Romanian translation.
      write: Add the Romanian translation.
      write: Add the German translation.
      localspl: Add the Romanian translation.
      wineboot: Add the German translation.
      wineboot: Add the Romanian translation.
      quartz: Replace second EnterCriticalSection with LeaveCriticalSection (Smatch).
      comdlg32: Update the German translation.
      devenum: Add the Romanian translation.
      oleaut32: Add the Romanian translation.
      winecfg: Remove the unused IDS_WINE_VERSION resource.

Mikołaj Zalewski (4):
      shell32: Remove DISCARDABLE from STRINGTABLE resources.
      comdlg32: Move font style names to resources.
      regedit: Remove windows class names (they shouldn't be localized) and unused IDC_REGEDIT menu from resources.
      mshtml: Add Polish translation.

Nathan Beckmann (10):
      gdiplus: Tests for GdipLockBitmapBits/GdipUnlockBitmapBits.
      gdiplus: Fix memory leak in GdipLockBitmapBits.
      gdiplus: Update bitmap state in GdipUnlockBitmapBits.
      gdiplus: Return an error for consecutive GdipLockBitmapBit calls.
      gdiplus: Remove unnecessary IStream_AddRef from GdipLoadImageFromFile.
      gdiplus: Implement GdipSaveImageToFile via GdipSaveImageToStream.
      gdiplus: Implement GdipSaveImageToStream using encoders.
      gdiplus: Implement BMP encoding.
      gdiplus: Add more sophisticated tests for GdipSaveImageToFile.
      gdiplus: Fix test crash in GdipSaveImageToStream.

Paul Vriens (15):
      shell32/tests: Make tests run again on win95 and NT.
      dinput/tests: Don't treat old dinput versions as an error.
      users32/tests: Win9x doesn't like FILE_ALL_ACCESS.
      user32/tests: Use A-call.
      ntdll/tests: ProcessImageFileName is not supported before XP.
      advpack/tests: Free the library after use.
      comctl32/tests: Don't use FreeLibrary with GetModuleHandle.
      comctl32/tests: Free the library after use.
      kernel32: Fix/change tests for systems with no ServicePack.
      winecfg: Fix setting version to Vista.
      kernel32/tests: Skip some tests on win95.
      kernel32/tests: DATE_YEARMONTH is only present on W2K and later.
      kernel32/tests: Add a few skips instead of just returning.
      advapi/service: Give service its own debug channel.
      setupapi/tests: Add a test for installing a driver service via an INF file.

Philip Nilsson (2):
      d3dx9: Implement the D3DXVec*Array functions.
      d3dx9/tests: Test the D3DXVec*Array functions.

Reece Dunn (1):
      user32: Improve the HiliteMenuItem tests so they reflect actual behaviour on Windows.

Reece H. Dunn (1):
      user32: HiliteMenuItem fails if an invalid window handle is passed to it.

Rob Shearman (34):
      wininet: Make the reference count of WININETHANDLEHEADER thread-safe by using InterlockedIncrement/InterlockedDecrement.
      wininet: Don't call DeleteSecurityContext and FreeCredentialsHandle on invalid handles.
      wininet: Allow HTTP_DoAuthorization to accept a NULL username/domain in the non-Basic case.
      wininet: Retrieve the maximum token length from the SSP and use a buffer of that length in calls to InitializeSecurityContextW.
      secur32: Fix ntlm_GetCachedCredential to not call strlenW on a NULL pointer.
      makefiles: Simplify the use of the MODULE variable in static import libraries.
      rpcrt4: Check that the input to RPCRT4_strndupW was not NULL before assuming that the string couldn't be allocated due to lack of memory.
      rpcrt4: Fix -Oi interpreter for base types.
      rpcrt4: Fix the pointer level being passed into call_unmarshaller in client_do_args_old_format for base return parameters.
      urlmon: Initialise the cache_file field of DownloadBSC on creation.
      wininet: Fix proxy authentication by using the data in lpwhr->pProxyAuthInfo in HTTP_InsertAuthorization instead of lpwhr->pAuthInfo when inserting the Proxy-Authentication header.
      wininet: Only clear authentication header if the connection has authentication information.
      wininet: Add tests for some URL cache functions.
      wininet: Implement FindFirstUrlCacheEntry{A, W}, FindNextUrlCacheEntryA and FindCloseUrlCache.
      wininet: Move URL cache hash entry validation to a separate function.
      wininet: Add tests for Find{First,Next}UrlCacheEntryA functions.
      wininet: Use LIST_FOR_EACH_ENTRY in URLCacheContainers_FindContainerW instead of LIST_FOR_EACH and LIST_ENTRY.
      wininet: Make some pointers const in URL cache functions.
      wininet: Fix URLCache_LocalFileNameToPathA to return a full path, rather than just the container path.
      wininet: The URL in CommitUrlCacheEntryInternal shouldn't be restricted to MAX_PATH chars in length.
      wininet: Support the lpszFileExtension "reserved" parameter being passed into CommitUrlCacheEntryA.
      oleaut32: Split the methods for opening different sources of typelibs out of TLB_ReadTypeLib.
      msi: Fix typos which caused joins of three or more tables to not work properly.
      msi: Passing NULL for szBuffer and NULL for pcchValueBuf into MsiGetProductInfo{A, W} shouldn't crash.
      wininet: Fix local variable shadowing in URLCacheContainer_OpenIndex.
      wine.inf: Update timezone information.
      oleaut32: Fix the return type of TLB_ReadTypeLib.
      ole32: CreatePointerMoniker is implemented.
      wininet: Assume that if we're connected to an HTTP/1.1 server then connections can be kept alive by default.
      wininet: If we receive an error from InitializeSecurityContext in HTTP_DoAuthorization then set pAuthInfo->finished so that we don't carry on using the security context.
      dxerr{8,9}: Include wine/port.h for snprintf.
      rpcrt4: Add a stub for RpcCancelThreadEx.
      wininet: The lpszLocalFileName parameter to CommitUrlCacheEntryA is optional, so check before converting it from Unicode to ANSI.
      user32: Handle the undocumented behaviour in DefWindowProc for WM_NCACTIVATE that causes the nonclient area not to be redrawn.

Roderick Colenbrander (13):
      wined3d: Move depth/stencil verification to CheckDepthStencilCapability.
      wined3d: Check the texture capabilities we offer for the different texture types (cube, plain, volume).
      wined3d: Check the render target capabilities of a resource type.
      wined3d: Add a function which checks the legacy bump mapping capabilities.
      wined3d: Put the SRG read capability check in its own function.
      wined3d: Put vertex texture capability checking in its own function.
      wined3d: Add a function which checks the filtering capabilities for a format.
      wined3d: Add correct autogenmipmap support.
      wined3d: There is no need for the !Usage checks at the start of the resource type checks.
      wined3d: Add dynamic locking support to CheckDeviceFormat.
      wined3d: Report software processing in CheckDeviceFormat.
      wined3d: Check pixel formats of the same pixel type.
      ddraw: Use a correct resource type and a valid format.

Samuel Lidén Borell (2):
      shdoclc: Update Swedish translation.
      mshtml: Update Swedish translation.

Stefan Dösinger (3):
      wined3d: Only adjust windows in fullscreen mode to the screen.
      wined3d: Only restore the style and exStyle when it is untouched.
      wined3d: Set the fullscreen flag before the display Mode.

Stefan Leichter (1):
      shell32: Fix SHGetFolderPathAndSubDir tests.

Tony Wasserka (2):
      d3dx9: Add the _D3DXERR enumeration.
      d3dx9: Add stubs for the ID3DXFont functions.

--
Alexandre Julliard
julliard@winehq.org
