The Wine development release 1.1.0 is now available.

What's new in this release (see below for details):
  - Many more gdiplus functions implemented.
  - Improved graphics tablet support.
  - Many Richedit fixes and improvements.
  - Support for HWND_MESSAGE windows.
  - A lot of new MSHTML functions.
  - Many fixes in MSI registry handling.
  - Initial implementation of the inetmib1 DLL.
  - Improvements to the quartz renderers.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.0.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
repository. Check http://www.winehq.org/site/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.1.0:

   2918  Electronics Workbench: instruments are not drawn
   3159  Incorrect defintions of CFSTR_*
   3795  c2man: extension is fixed to ".dll"
   4437  Weird Worlds demo won't start without native msvcrt
   4935  IHP Kitchen: Unhandled page fault on read access
   5915  Application gets crashed when I press enter in combobox (While Cursor is present in combo)
   5986  riched20 : Double Click messages not handled
   6247  Richedit: Selecting via mouse does not scroll
   6618  Warcraft III Crash on intro movie playback
   7069  starting win32-version of tomcat fails with a "jvm_bind" or "java.util.TimeZone.getTimeZone" error message
   8132  Hyperlink rendering not turned off if link is at end of line
   8556  Game complains that directx9.0c is not installed
   8657  Ikea Home Planner crashes when I add an element
   8901  Personal Stock Monitor 6 standard Active Securities listview columns blank
   9812  Bad some czech characters in older coursewares
   9824  GTA Vice City: strange textures when you attack cars with a chainsaw
   9860  MSN 8.1 doesn't start, gdiplus:GdipImageGetFrameDimensionsList not implemented
   9924  SysIPAddress32 dialog item glitch
   9982  Dragon NaturallySpeaking training module - text is too big.
  10132  bad cyrillic font rendering
  10550  turbocad install won't work
  10966  explorer.exe crash every time when removing folders
  11158  Wineboot and virtual desktop
  11245  Tomb Raider Anniversary crash during trying to enable an usb joypad.
  11476  UMDGen "Compression Level" Dialog box doesn't show
  11699  Acecad tablet not recognised as a tablet
  11721  GL Excess does not work
  11774  eMule crashes when right-clicking on file in Transfers window
  12005  Regression in pressure sensitivity with wizardpen tablet driver and Photoshop 7
  12167  MS Office 2000 install broken at 0.9.55 --> 0.9.56
  12305  Firefox 3 beta 4 font problem: colon displayed as 0038 unicode glyph-missing glyph [dogfood]
  12481  PSPad HTML preview is not working with Gecko
  12631  FIFA 2007 - black rectangles during gameplay in the recent version
  12740  Wine tries to execute non-executable data (regression against 0.9.59)
  13004  3Com Descovery Util do not see any network interfaces
  13036  Faktury 4.1 doesn't run because of Unimplemented GdipImageGetFrameDimensionsCount
  13122  Graphical regression in Team Fortress 2.
  13127  Star wars JK II Jedi outcast does not work
  13128  Medieval total war crashes
  13145  Graphic Corruption in Assassin's Creed
  13225  Sacrifice: texture transparency problems (alpha test)
  13227  100% CPU Usage with notepad - with dtrace output
  13341  Painkiller Demo Fails To Run
  13482  Latest msvcrt's won't load
  13513  Portal: game crashes
  13521  liveusb-creator-2.5 unable to load win32file.pyd [dogfood]
  13552  eDrawings CAD Viewer crashes into shell32 while opening a file
  13644  Ricochet Infinity cannot activate full version
  13713  Hema Album Software Advanced won't start, it crashes and has to be killed.
  13748  Last Chaos aborts after clicking 'start' in 0.9.57 and later
  13765  ZENcast 2.01.01 Installer Fails to Start
  13864  F.E.A.R: Can't accept EULA
  13882  psiops crashes while starting (XStreamlok)
  13892  mmioOpen MMIO_ALLOCBUF not ignored when passed a buffer
  13969  Photocameras Adjustment Software: crashes after pressing a button.
  14006  at least one locale missing: eo - (breaks .NET internationalization)
  14016  Eclipse 3.3.x (customized) needs WebBrowser_GetIDsOfNames fleshed out
  14024  Photoshop CS2 installer crashes immediately

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

Changes since 1.0:

Adam Petaccia (10):
      gdiplus: Implement GdipCreateFontFamilyFromName.
      gdiplus: Implement GdipDeleteFontFamily.
      gdiplus: Implement GdipGetFamilyName.
      gdiplus: Implement GdipGetGeneric*.
      gdiplus: Tests for FontFamily.
      gdiplus: Tests for GetGeneric*.
      gdiplus: Implement GdipCreateFont.
      gdiplus: Implement GdipGetFontUnit.
      gdiplus: Implement GdipGetFontSize.
      gdiplus: Tests for new font functions.

Albert Lee (1):
      ws2_32: WS_getaddrinfo TRACE message can crash Wine.

Alex Villacís Lasso (12):
      richedit: Fix misreporting of match offset for EM_FINDTEXT and EM_FINDTEXTEX.
      richedit: WM_SETTEXT must immediately autodetect URLs, without waiting for a WM_CHAR.
      richedit: Add more tests for URL autodetection on WM_CHAR, make them pass under Wine.
      richedit: Fix for the semantics of the flags for some effects reported by EM_GETCHARFORMAT.
      richedit: Add tests for URL autodetection for EM_SETTEXTEX, make them pass under Wine.
      richedit: Add tests for URL autodetection for EM_REPLACESEL, make them pass under Wine.
      richedit: Insertion style must NOT be cleared unless selection actually changed.
      richedit: Empty text should result in a scroll range of 0. Tests for this behavior.
      richedit: When returning position through wParam pointer, EM_POSFROMCHAR must return 0 as LRESULT.
      richedit: EM_POSFROMCHAR should take into account scrollbar position. With tests.
      richedit: Revert patch that introduced a test that fails on all platforms.
      richedit: Fix failing EM_GETCHARFORMAT test on all platforms.

Alexander Dorofeyev (5):
      ddraw: Implement FPU mode fixup in d3d7 device.
      quartz: Fix accessing variant string.
      quartz: Do not ignore current position in IEnumRegFiltersImpl_Next.
      devenum: Update type when reading binary data to VT_EMPTY variant.
      quartz: Prevent heap corruption if IPropertyBag_Read fails.

Alexandre Julliard (36):
      winex11: Check for matching pixel format in wglMakeCurrent.
      winex11: Avoid erasing the window when changing the pixel format.
      cabinet: Always use INT_PTR for handles.
      kernel32: The first argument of GetBinaryType is a string.
      server: Move the process pipe hangup handling into kill_process.
      winex11: Only register an XIM callback if we can't open the XIM right away.
      winspool: Don't print NULL pointers in traces.
      shell32/tests: Use the original path if GetLongPathNameA fails.
      winex11: Print more details on OpenGL load failure. Only print errors once.
      d3d8: Make Direct3DCreate8 fail if we can't initialize wined3d.
      d3d9: Make Direct3DCreate9 fail if we can't initialize wined3d.
      d3d9/tests: Test for Direct3DCreate9 failure.
      ole32: Don't consider RPC_S_UUID_LOCAL_ONLY an error in CoCreateGuid.
      oleaut32/tests: Allow UuidCreate to return RPC_S_UUID_LOCAL_ONLY.
      server: Use a unicode_str to represent atom names.
      server: Add support for a top-level message parent window in parallel to the desktop window.
      user32: Register the builtin 'Message' window class.
      user32: Add support for a top-level message parent window in parallel to the desktop window.
      server: Also return the top-level message window in the get_desktop_window request.
      explorer.exe: Create the top-level message window along with the desktop window.
      user32: Use the top-level message window as parent for HWND_MESSAGE windows.
      user32: Treat the top-level message window as a desktop window.
      user32/tests: Add some more tests for HWND_MESSAGE windows.
      user32: Add support for finding HWND_MESSAGE windows in FindWindowEx.
      user32: Make sure that IsWindowVisible returns FALSE for HWND_MESSAGE windows.
      ole32: Make the apartment window a HWND_MESSAGE window.
      wine.inf: Make the initial owner information empty.
      winex11: Explicitly request creation of the per-thread data where necessary.
      winex11: Pass the display as parameter to a few more functions instead of using thread_display().
      winex11: Get rid of the explicit colormap management.
      winex11: Explicitly request creation of the thread display where necessary.
      winex11: Don't create a win data structure for HWND_MESSAGE windows.
      server: Fix a potential desktop reference leak.
      widl: [default] is an allowed attribute for union fields.
      ntdll: Force execute permission again on the stack after clearing it.
      configure: Fix the netinet header checks for Mac OS and Solaris.

Alistair Leslie-Hughes (6):
      urlmon: Check pointer before use.
      msxml3: Improved checking of failed case.
      secur32: Fix crash under win98.
      shell32: Stop crash when an error occurs.
      mapi32: Skip tests on error.
      msxml3: Added support for creating DOMFreeThreadedDocument.

Anatoly Lyutin (3):
      user32: Return at the end of processing (cmd == SW_HIDE).
      user32/tests: Add two tests for ShowWindow(SW_RESTORE).
      user32/tests:c Add msg tests for SetActiveWindow().

Andrew Talbot (12):
      user32: Dangling pointer fix.
      advpack: Constify some variables.
      qmgr: Constify some variables.
      shell32: Constify a variable.
      setupapi: Constify a variable.
      riched20: Constify some variables.
      msxml3: Constify some variables.
      comctl32: Constify some variables.
      wineps.drv: Use const-correct GetPrinterDataEx() instead of GetPrinterData().
      dbghelp: Use dbgstr_a() in case pointer is NULL.
      mpr: Fix some memory leaks.
      gdi32: Pass correct pointer value to HeapFree().

Colin Finck (2):
      wininet: Always pass a variable as lpNumberOfBytesWritten on a WriteFile call if lpOverlapped is set to NULL.
      comctl32: Use a clip region when collapsing the treeview.

Dan Hipschman (7):
      gdi32: Add tests for GetTextFace.
      riched20/tests: Add tests for OLE interface.
      riched20/tests: Add a test for creating ITextDocument.
      kernel32/tests: Add tests for TLS functions.
      gdi32: Return the correct value from GetTextFace.
      riched20: Implement ITextDocument_fnGetSelection.
      user32: Redefine internal pop-up tracking flags to avoid conflicts.

Dan Kegel (8):
      advpack: Don't close a handle if it wasn't opened.
      dsound: Don't free buffer if it's owned by alsa.
      winmm/tests: Initialize MIXERLINECONTROLSA before calling mixerGetLineControlsA.
      gdi32: GdiConvertToDevmodeW should not refer to unintialized name bytes.
      kernel32/tests: Initialize a few variables.
      msxml3/tests: VT_EMPTY is not a string.
      user32: Fix buffer length thinko in dde_client.c.
      wininet: InternetCrackUrlW: For URLs that have no urlpath, native clears lpszUrlPath.

Detlef Riekenberg (2):
      avifil32: The array index is 0-based.
      rpcrt4: Add a stub for I_RpcBindingInqTransportType.

Dmitry Timoshkov (29):
      gdi32: Print the assigned world transform.
      gdi32: Use 0xffff as a default character as Vista does.
      user32: Add a test for MNS_NOTIFYBYPOS, make it pass under Wine.
      kernel32: Make GetModuleFileName set ERROR_INSUFFICIENT_BUFFER like win2k3 and vista do.
      winmm: Add the tests for mmioOpen and mmioSetBuffer, make them pass under Wine.
      winmm: Clear the fccType in mmioDescend for a not RIFF/LIST case.
      gdi32: Add a test for combined mapping mode/world transform changes.
      wine.inf: Add Baltic font substitutions.
      gdi32: Extend the font substitution test, make it pass under Wine.
      gdi32: Make GetOutlineTextMetrics set tmDigitizedAspectX/Y to real values as GetTextMetrics does.
      gdi32: Perform font height scaling with higher precision.
      gdi32: Initialize otmMacAscent, otmMacDescent, otmMacLineGap in outline text metrics.
      gdi32: Don't forget to update the glyph advance in the case of a custom transformation.
      gdi32: Font scaling transform is performed separately.
      gdi32: Perform the world transform separately from font scaling.
      gdi32: Apply the custom transform to a glyph only if it's not an identity one.
      gdi32: Don't cache glyph metrics if they have a custom transformation.
      gdi32: Don't return cached glyph metrics if a custom transformation was requested.
      gdi32: Scale outline font metrics.
      gdi32: Indent a block of code using 4 spaces instead of 5.
      gdi32: Add a test for outline text metrics.
      gdi32: Perform correct glyph scaling even if font metrics haven't been cached yet.
      user32: Make test_SetForegroundWindow() the last message test.
      include: Remove a semicolon from a DECL_WINELIB_TYPE_AW use.
      include: Undefine a custom DECL_WINELIB_DBT_TYPE_AW macro at the end of the file.
      winmm: Add another test confirming that mmioDescend does set fccType of non RIFF/LIST chunks to 0.
      mciavi32: Read the stream header in order to determine its type.
      user32: Add a test for focus behaviour on minimize/restore.
      wordpad: Pass correct parameters to WM_SIZE message handler.

Dylan Smith (35):
      wordpad: Added style to the richedit control to not hide selection.
      wordpad: Fixed the font size validation for the toolbar's combobox.
      wordpad: Apply changes on dropdown selection for comboboxes on toolbar.
      wordpad: Fixed calculations for the paragraph format dialog.
      wordpad: Fixed bugs that prevented setting alignment through dialog.
      wordpad: Fixed a bug in setting the recent file list in the registry.
      winemine: Beginner mode should have one more row and column.
      winemine: Adding flag before the game starts shouldn't start the timer.
      winemine: Set mines after first choice.
      winemine: Middle click drag should move the box highlighting.
      winemine: The number of mines should be visible before first choice.
      winemine: Increased buffer size for player names.
      richedit: Allow cursor to move over trailing spaces in wrapped lines.
      richedit: Trailing spaces should not affect alignment shift length.
      richedit: bCaretAtEnd should not be reset from rewrapping text.
      richedit: Tests for undo coalescing.
      richedit: Added missing defines and structures to richedit.h.
      richedit: Null pointer check missing on optional parameter.
      richedit: Show caret after pasting or streaming in text.
      richedit: Prevented NULL value from being used to avoid a page fault.
      richedit: Prevented an assertion error on startup when run on Windows.
      richedit: Fixed the forward word movement bug.
      richedit: Fixed a bug preventing NULL pointers from being in text.
      richedit: Added tests reveal a problem with EM_SETCHARFORMAT's affect on the undo stack.
      richedit: Moved function declarations in header to reflect locations of definitions.
      richedit: Corrected the conversion used for the initial font size.
      richedit: Fixed bug preventing bold from being set with EM_SETCHARFORMAT.
      richedit: Make cursor visible when selecting via mouse above/below editor.
      richedit: Implemented undo coalescing to group typing events.
      richedit: Removed redundant code for getting the insert style.
      richedit: Set error codes and stop parsing for some rtf syntax errors.
      richedit: Fixed mistake that didn't cause a bug.
      richedit: Caret size must match font size characters to be inserted.
      riched32: Added class style to process double click events.
      richedit: Ensure caret is seen if moved past end of view over trailing spaces.

Eric Durbin (10):
      iphlpapi: Implement getInterfaceStatsByName on FreeBSD.
      iphlpapi: Implement getNumUdpEntries on FreeBSD.
      iphlpapi: Implement getUDPStats on FreeBSD.
      iphlpapi: Implement getIPStats on FreeBSD.
      iphlpapi: Downgrade some ERR messages to WARN.
      iphlpapi: Implement getICMPStats on FreeBSD.
      iphlpapi: Fix a typo resulting in wrong variable assignment.
      iphlpapi: Implement getTCPStats on FreeBSD.
      iphlpapi: Implement getNumArpEntries on FreeBSD.
      iphlpapi: Implement getArpTable on FreeBSD.

Eric Pouech (3):
      winhelp: Properly quit winhelp when no file are given on command line.
      winhelp: Added the options menu.
      winhelp: Removed the main history button, and use the item in Options menu instead.

Filipe Ferreira (1):
      winecfg: Added Windows registration information setting.

Francois Gouget (5):
      A couple of spelling fixes.
      configure: Detect and use gld/gnm/gar as alternatives to ld/nm/ar, especially for winegcc.
      configure: Fix the isinf() detection. Fixes compilation on Solaris.
      shlwapi: Don't use Unix functions for case sensitive string comparisons.
      wined3d: Add a trailing '\n' to a couple of shader_addline() calls.

Gerald Pfeifer (2):
      comctl32: tooltips: Adjust the type of three loop variables from INT to UINT.
      winex11: Remove two unused parameters from BITBLT_GetSrcArea().

Guy Albertelli (3):
      comctl32: listview: Change header control create act like native for LVS_NOCOLUMNHEAD.
      comctl32: listview: Show the header when updating header size if not LVS_NOCOLUMNHEADER.
      comctl32: listview: Implement LVS_NOCOLUMNHEADER support for WM_STYLECHANGED message.

H. Verbeet (14):
      wined3d: Add support for ARB_color_buffer_float.
      wined3d: Use gl_Color and gl_SecondaryColor to support more varyings in SM3.0 shaders.
      wined3d: Handle depth formats like any other format in CheckDeviceFormat.
      wined3d: Report WINED3DFMT_FLAG_FILTERING on WINED3DFMT_D24X8.
      wined3d: Report post pixelshader blending on WINED3DFMT_A16B16G16R16F.
      wined3d: Half float formats need ARB_TEXTURE_FLOAT as well.
      d3d8: Use color_match() in alpha_test().
      d3d9: Use color_match() in alpha_test().
      wined3d: Explicitly enable depth buffer writing in depth_blt().
      d3d9: Use color_match() in fog_with_shader_test().
      d3d: Allow more imprecision in the texop test.
      d3d9: Unset the pixel shader at the end of cnd_test().
      wined3d: Report WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.
      wined3d: Delete depth_blt_texture on IWineD3DDeviceImpl_Uninit3D().

Hans Leidekker (6):
      wininet: Clear last error upon successful return from HttpSendRequest.
      wininet: Improve some traces.
      wininet: Send a 'Pragma: no-cache' header if asked for.
      wininet: Resolve hostname once per connection.
      wininet: Win64 compatibility fixes.
      wininet: Make a test pass on IE6.

Huw Davies (9):
      gdi32: Initialize the handle table.
      gdiplus: GdipCreatePen2 should make a copy of the brush.
      ntdll: Free the correct buffer in the test.
      netapi32: Free the correct pointers.
      kernel32: Fix typo.
      d3d8: Fix typo in test.
      inetcomm: Fully initialize start and length.
      winspool.drv: Make sure the printer driver registry entry exists.
      localspl: Ensure that we load winspool before spoolss to work around a circular dependence.

Hwang YunSong(황윤성) (2):
      winhlp32: Updated Korean resource.
      shell32: Updated Korean resource.

Jacek Caban (60):
      mshtml: Added IHTMLElement::get_id implementation.
      mshtml: Added IHTMLElement::put_id implementation.
      mshtml: Added IDispatchEx support to HTMLSelectElement.
      mshtml: Added fdexNameEnsure support to IDidpatchEx implementation.
      mshtml: Use heap_alloc_zero in HTMLElementCollection_Create.
      mshtml: Added missing tids to HTMLCommentElement.
      mshtml: Added more IDispatchEx tests.
      mshtml: Change backslashes to shashes in URLs passed to IHTMLStyle::put_backgroundImage.
      mshtml: Added IHTMLStyle::put_background implementation.
      mshtml: Added IHTMLStyle::put_color implementation.
      mshtml: Added IHTMLElement2::focus implementation.
      mshtml: Use heap_alloc_zero to allocate OmNavigator.
      mshtml: Added IHTMLDOMNode::get_nodeValue implementation.
      mshtml: Added IHTMLDOMNode::put_nodeValue implementation.
      mshtml: Added IHTMLElement2::put_accessKey implementation.
      mshtml: Better stub for IHTMLElement::setAttribute with NULL  nselem.
      mshtml: Added IHTMLElement2::get_clientWidth implementation.
      mshtml: Added IHTMLElement::get_clientHeight implementation.
      mshtml: Added IHTMLInputElement::put_value implementation.
      mshtml: Forward HTMLInputElement IDispatch calls to IDispatchEx implementation.
      urlmon: Make mk protocol behave like IE7.
      mshtml: Better timer handling.
      mshtml.idl: Added DispHTMLGenericElement declaration.
      mshtml.idl: Added IHTMLGenericElement declaration.
      mshtml: Initialize node object from child node's constructors.
      mshtml: Added IHTMLDocument2::createElement implementation.
      mshtml: Added IHTMLGenericElement implementation.
      mshtml: Added IDispatchEx support to HTMLGenericElement.
      mshtml: Added createElement test.
      shdocvw: Added WebBrowser's IDispatch methods implementation.
      mshtml: Added IHTMLDOMNode::appendChild implementation.
      mshtml: Added IHTMLDocument3::createTextNode implementation.
      mshtml: Return NULL instead of empty string in  IHTMLElement::get_className.
      mshtml: Added IHTMLElement::put_className implementation.
      mshtml: Added IHTMLImgElement::put_src implementation.
      mshtml: Added onclick attribute support.
      mshtml: Use heap_alloc_zero in NSContainer_Create.
      mshtml: Added generic HTML event listener and use it for click  event.
      mshtml: Added IHTMLElement::put_onclick implementation.
      mshtml: Added keyup event support.
      mshtml: Added IHTMLElement::put_onkeyup implementation.
      mshtml: Added IHTMLElement2::get_tabIndex implementation.
      mshtml: Added IHTMLElement2::put_tabIndex implementation.
      mshtml: Added support to accessing child nodes by index in IHTMLDOMChildrenCollection.
      mshtml: Fixed argument checking in IHTMLDOMChildrenCollection::item.
      mshtml: Added IHTMLDOMNode::removeChild implementation.
      mshtml: Added IHTMLDOMNode::hasChildNodes implementation.
      mshtml: Added IHTMLSelectElement::put_value implementation.
      mshtml: Return NULL instead of empty string in  IHTMLSelectElement::get_value.
      mshtml: Added IHTMLSelectElement::put_onchange implementation.
      mshtml: Added IHTMLElement::get_title implementation.
      mshtml: Added IHTMLElement::put_title implementation.
      mshtml: Added IHTMLInputElement::put_disabled implementation.
      mshtml: Added IHTMLSelectElement::get_type implementation.
      mshtml: Forward HTMLSelectElement's IDispatch functions to  IDispatchEx implementation.
      mshtml: Added IHTMLElement::get_offsetTop implementation.
      mshtml: Added useful TRACEs.
      mshtml: Added IHTMLDOMNode::get_parentNode implementation.
      mshtml: Added DOCUMENT_NODE type support.
      urlmon: Make file protocol invalid URL handling behave like IE7.

James Hawkins (38):
      ddraw: Reset the viewport data before each test.
      msi: Rewrite the ProcessComponents test to only check the registry changes.
      msi: Don't publish components to the Installer key.
      msi: Determine the installation context after reading properties from the command line.
      msi: Fix the ProcessComponents action to handle the package context.
      msi: Rewrite the RegisterUser test to only check the registry changes.
      msi: Fix the RegisterUser action to handle the package context.
      msi: Rewrite the PublishFeatures test to only check the registry changes.
      msi: Don't publish features to an invalid location.
      msi: Fix the PublishFeatures action to handle the package context.
      msi: Rewrite the RegisterProduct test to only check the registry changes.
      msi: Don't publish the upgrade key to an invalid location.
      msi: Factor out the publishing of installation properties.
      msi: Test the RegisterProduct action with the machine context.
      msi: Rewrite the PublishProduct test to only check the registry changes.
      msi: Factor out publishing icon files.
      msi: Factor out publishing the product source list.
      msi: Don't set an invalid install property in PublishProduct.
      msi: Don't publish the product to an invalid location.
      msi: Factor out publishing the product properties.
      msi: Squash the package code property.
      msi: Allow checking a REG_MULTI_SZ string.
      msi: Publish a few more product properties.
      msi: Publish media disks whether the drive type is removable or not.
      msi: Publish the UpgradeCode in PublishProduct.
      msi: Test the PublishProduct action with the machine context.
      msi: Open the local user data product key for the machine context.
      msi: Fix the published location of the upgrade code for the machine context.
      msi: Create the SourceList key in msi_publish_sourcelist.
      msi: Add more tests for MsiQueryFeatureState.
      msi: Handle the user managed context in MsiQueryFeatureState.
      msi: Handle the machine context in MsiQueryFeatureState.
      msi: Reimplement MsiGetUserInfo.
      msi: Add tests for MsiGetUserInfo.
      mscms: Only check the first three characters of the color space name.
      urlmon: Fix a few test failures in IE7.
      msi: Add another MsiGetFileVersionTest.
      msi: Don't overwrite a file that has a greater or equal version to the source file.

Jeff Zaroyko (1):
      ws2_32: Ignore lpFrom for connected sockets.

John Klehm (4):
      winex11: Add comments explaining wintab cursor slotting, type, and clarify x11 config.
      winex11: Always assign a tablet cursor type.
      winex11: Cursor iteration is now done by checking ACTIVE cursors.
      winex11: Place tablet cursors in slots based on type.

Jon Griffiths (10):
      tapi.h: Fix struct member names.
      include/msvcrt: Wrap remaining msvcrt headers for C++ compilation.
      include/rpcproxy.h: Fix incorrect include guard comment.
      winedbg: Add support for printing c++ bool values.
      include: Provide wide char definitions for CFSTR_*.
      oleaut32/tests: Fix invalid free (found by valgrind).
      oleidl.h: Fix spelling of OLECONTF_ONLYUSER (reported by Marcos Gutiérrez Batz).
      dbghelp: Implement SymEnumerateSymbols64.
      ntdll: Implement [Rtl]InitializeCriticalSectionEx.
      c2man: Correct extension for non-dlls (based on a patch by Vijay Kamuju).

Joris Huizer (3):
      user32/tests: Copy/paste fix.
      gdiplus: font: Ensure to release resources.
      gdiplus: Change tmw field of GpFontFamily into an embedded structure.

Juan Lang (26):
      inetmib1: Add stub dll.
      inetmib1: Add stub for SnmpExtensionInit.
      inetmib1: Add tests for SnmpExtensionInit.
      inetmib1: Add stub for SnmpExtensionQuery.
      inetmib1: Add tests for SnmpExtensionQuery.
      inetmib1: Improve SnmpExtensionInit stub.
      inetmib1: Improve SnmpExtensionQuery stub.
      inetmib1: Add a mechanism for initializing supported OIDs, and use it in SnmpExtensionInit.
      inetmib1: Add initialization function for getting the MIB2 number of interfaces.
      inetmib1: Implement SnmpExtensionQuery.
      inetmib1: Support querying the MIB2 number of interfaces.
      inetmib1: Support the MIB2 interface table.
      inetmib1: Support the MIB2 IP statistics.
      inetmib1: Support the MIB2 ICMP statistics.
      inetmib1: Support the MIB2 IP address table.
      inetmib1: Use a helper function to get the item and instance of the MIB2 interface table.
      inetmib1: Use a helper function to get the item from the Oid.
      inetmib1: Use a helper function to get the item and instance of the MIB2 IP address table.
      inetmib1: Support the MIB2 TCP statistics.
      inetmib1: Support the MIB2 IP route table.
      inetmib1: Support the MIB2 IP net (ARP) table.
      inetmib1: Use a helper function to set the Oid with an IP address-based instance.
      inetmib1: Use a helper function to set the Oid with an integer instance.
      inetmib1: Use a helper function to set the Oid with an item.
      inetmib1: Support the MIB2 UDP statistics.
      inetmib1: Sort the tables keyed by IP address, and use bsearch to find entries in them.

Kai Blin (6):
      rpcrt4: Fix some A/W use in error messages.
      rpcrt4: Ignore the AuthzSvr parameter for RPC_C_AUTHN_WINNT.
      advapi32: Fix lsa tests for domain members.
      netapi32: tests/access: Don't clutter up standalone Windows boxes.
      netapi32: Remove double free test from apibuf tests.
      netapi32: Don't test NetUserChangePassword for now.

Kirill K. Smirnov (1):
      kernel32: Add stubs for [G|S]etConsoleDisplayMode.

Lei Zhang (5):
      comctl32: Don't rearrange icons / update scroll bar when destroying a listview.
      comctl32: Support LVCF_SUBITEM in LVM_GETCOLUMN.
      gdi32: Check for regular fonts by style instead of style name.
      comctl32: Use the system variable pitch font for ip address controls.
      mshtml: Remove unneeded variable.

Louis Lenders (3):
      kernel32: Fix typo in SetProcessAffinityMask.
      advapi32: Add stub for GetAuditedPermissionsFromAcl{A/W}.
      d3dx9_*: Add version resources.

Maarten Lankhorst (30):
      quartz: Improve the directsound renderer a bit.
      quartz: Set data length in avi decompressor.
      include: Add definitions for IBasicVideo2 interface.
      include: Add definitions for IAMFilterMiscFlags interface.
      winemp3: Try to find a valid header instead of failing immediately.
      qcap: Capture pin should have an IAMStreamConfig.
      quartz: Forward some messages from IMediaSeekingPassThru.
      quartz: Add the ability to force a pin to use a certain renderer.
      quartz: Only query for event interface when there is a filtergraph.
      quartz: Expose some methods so that a custom allocator can be created.
      quartz: Try to render any existing renderers before creating a new one.
      quartz: Implement MediaControl_GetState.
      quartz: Implement IMediaSeeking in the video renderer.
      quartz: Implement IBasicVideo2 for the filtergraph.
      include: Add definitions for VMR-9 interface.
      quartz: Implement GraphConfig_Reconfigure.
      quartz: Implement VideoRenderer_GetCurrentImage.
      quartz: Have thread safety in memallocator.
      quartz: DSoundRender shouldn't delete buffer when already connected.
      quartz: Only enumerate renderers if bRender is set in filtermapper.
      quartz: Add support for VideoInfoHeader2 to AVI Decompressor.
      quartz: Clear pin value if not connected.
      quartz: Handle case where ReceiveConnection is called on an already connected pin.
      quartz: Remove dead code from DSoundRender.
      quartz: Create thread after connection is made.
      quartz: Make the memory allocator emit more warnings and fix race condition.
      quartz: Downgrade a fixme to a warn in dsoundrender.
      quartz: Make removing filters work slightly better.
      quartz: Make FilterGraph_Connect and ConnectDirect behave better.
      quartz: Fix Render and RenderFile.

Marcus Meissner (2):
      ws2_32/tests: Initialize memory to send.
      ws2_32/tests: Initialize buffer to avoid valgrind warning.

Michael Karcher (1):
      ddraw: Ensure to load wined3d before attempting to create a clipper.

Michael Stefaniuc (2):
      riched20: Remove redundant NULL check before heap_free (Smatch).
      winedbg: Fix "floating pointer" typo.

Mikołaj Zalewski (4):
      winhlp32: Update Polish translation.
      comdlg32: Implement CDM_GETFOLDERIDLIST.
      comdlg32/tests: Make sure no ANSI strings are passed to Unicode functions.
      kernel32: Improve Esperanto locale definition.

Nikolay Sivov (16):
      gdiplus: Check pointer in GdipGetLineRectI.
      gdiplus: Implemented GdipAddPathRectangles with tests.
      gdiplus: Stub for GdipFlush.
      gdiplus: Implemented GdipGetPathData with test.
      gdiplus: Fix GdipGetPathData implementation and test.
      gdiplus: GdipPathIterGetCount implementation.
      gdiplus: GdipSetPathMarker implementation.
      gdiplus: GdipClearPathMarkers implementation.
      gdiplus: Implementation of GdipAddPathPolygon with tests.
      gdiplus: Implemented GdipCloneImageAttributes.
      gdiplus: Implemented GdipGetPenEndCap.
      gdiplus: Implemented GdipGetPenLineJoin, GdipGetPenMiterLimit.
      gdiplus: Added GdipGetPenStartCap.
      gdiplus: Implemetned GdipGetPenUnit.
      gdiplus: Implemented GdipGetPenWidth.
      gdiplus: Implemented GdipGetPenDashCap197819.

Owen Rudge (7):
      shell32: Add support for WantsForDISPLAY and HideAsDeletePerUser to the register_coclasses routine.
      wine.inf: Add cplfile (control panel applet) association.
      shell32: Register Control Panel namespace folder.
      shell32: Ensure the correct applet is loaded in multi-applet control panels.
      shell32: Populate comment column in Control Panel.
      shell32/tests: Rename shfldr_netplaces test to shfldr_special, for all special folders.
      shell32/tests: Add basic ParseDisplayName test for control panel.

Paul Vriens (22):
      tools/winapi: Fix typo in the generated header.
      advapi32/tests: Fix a test on NT4.
      msi/tests: Fix some test failures.
      setupapi/tests: Fix some typos.
      oleaut32/tests: Remove some stray spaces from the ok message.
      user32/tests: Skip tests if functions are not implemented.
      setupapi/tests: Skip all tests on Win9x and WinMe.
      setupapi/tests: Remove win9x specifics from testDeviceRegistryPropertyW.
      setupapi/tests: Remove win9x specifics from testDevRegKey.
      setupapi/tests: Remove some function pointer checks from testRegisterDeviceInfo.
      setupapi/tests: Remove win9x specifics from testCreateDeviceInfo.
      setupapi/tests: Remove win9x specifics from testInstallClass.
      setupapi/tests: Remove last win9x references.
      setupapi/tests: Prevent crash on NT4.
      setupapi/tests: Remove a registry key on failure for NT4.
      setupapi/tests: Fix a test on NT4.
      setupapi/tests: Add a simple test for the DelReg directive.
      shell32/tests: Skip some tests if functions are not available.
      kernel32/tests: Add some tests for GetConsoleCursorInfo.
      kernel32: Fix return values of GetConsoleCursorInfo.
      shlwapi/tests: Fix a test on Vista.
      shlwapi/tests: Fix another test on Vista.

Petr Dlouhý (2):
      gdiplus: Stub implementation of GdipImageGetFrameDimensionsCount + test.
      shlwapi: UrlCanonicalize will canonize address in format "file://localhost/c:/" correctly.

Philip Nilsson (1):
      msvcrt: Make EXCEPTION_PRIV_INSTRUCTION generate SIGILL.

Przemysław Białek (1):
      gdiplus: Implementation of function GdipDrawEllipse.

Rob Shearman (40):
      rpcrt4: Fix ndr_marshall tests to cope with using pointer ids instead of using pointer values.
      rpcrt4: Save the previous BufferLength in test_ndr_buffer and use it when testing the expected buffer length after the NdrFreeBuffer call.
      rpcrt4: Reduce the timeout of waiting on the stop event in the server test to one second.
      rpcrt4: Zero the memory of the s1 structure in test_simple_struct to avoid a Valgrind warning.
      Update generated packing tests using current headers.
      rpcrt4: Rename RPCRT4_SendAuth to RPCRT4_SendWithAuth.
      rpcrt4: Add new function RPCRT4_ReceiveWithAuth to receive a fragment and return the authentication data received, if any.
      rpcrt4: Make RpcAssoc_BindConnection use RPCRT4_ReceiveWithAuth instead of RPCRT4_Receive.
      include: Update the MIDL_STUB_MESSAGE structure.
      shell32: Free the correct pointer in XDG_UserDirLookup.
      wininet: Fix memory leak in HTTP_DeleteCustomHeader.
      rpcrt4: Initialise UniquePtrCount in NdrClientInitializeNew.
      rpcrt4: Use abrtitrary pointer identifiers when marshalling pointers instead of using pointer values.
      widl: Fix generation of the type format string for conformant-varying structures.
      ole32: Include enumx.h in enumx.c to get the declarations of the functions.
      ole32: Include ole2.h in ole32_main.c to type-check the function signature of OleMetafilePictFromIconAndLabel.
      ole32: Remove unused BIGBLOCKFILE_GetSize.
      ole32: Include compobj_private.h in oleobj.c to type-check the function signatures of DataAdviseHolder_OnConnect and DataAdviseHolder_OnDisconnect.
      include: Add declarations for OleNoteObjectVisible, GetConvertStg and OleDoAutoConvert to ole2.h.
      include: Add new bitfields to MIDL_STUB_MESSAGE added in Vista SDKs.
      rpcrt4: Initialise UniquePtrCount in NdrServerInitializeNew.
      rpcrt4: Add test for using a conformant varying structure with pointers.
      widl: Replace code to round up values and calculate padding with macros to improve readability.
      widl: Fix the embedded pointer offsets in generated code when the containing structure has padding.
      rpcrt4: Factor out string validation from NDR unmarshalling functions into a separate function, validate_string_data.
      rpcrt4: Fix NdrConformantVaryingStructUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
      widl: Factor out the finding of a registered type to reduce code duplication.
      widl: Set the type of the type_t node constructured for dispinterfaces to RPC_FC_IP, like we do for interfaces.
      widl: Fix crash in find_array_or_string_in_struct if the structure or union has no fields or cases.
      widl: Fix the types of enums with the v1_enum attribute applied.
      widl: Fix type_memsize to follow aliases so that the correct size is calculated.
      widl: Fix check_remoting_fields to enumerate the correct list of fields.
      include: Add the local attribute to IShellExecuteHookA/W since they use an undefined structure.
      include: Add more IXMLDOMNotation, IXMLDOMEntity, IXMLDOMEntityReference and IXMLDOMImplementation interfaces to xmldom.idl.
      include: Don't import files in control.idl that aren't imported on Windows.
      include: Add more interfaces and types to msinkaut.idl.
      rpcss: Implement endpoint-mapper server using DCE/RPC.
      rpcrt4: Use DCE/RPC to contact the endpoint-mapper server.
      rpcrt4/rpcss: Remove old named pipe code for communicating with RPCSS process.
      rpcrt4: Add tests for endpoint mapper functions.

Roderick Colenbrander (4):
      wined3d: Add a Geforce9 driver version (right now garbage is returned).
      wined3d: Update the Nvidia driver version to 173.41 and also put it in the right format e.g. 7.15.11.7341 instead of 7.15.10.17341.
      wined3d: Update the d3dusage query mask with 0x100000 (vertextexture).
      wined3d: Fix a usage flags conflict.

Roy Shea (3):
      user32: Initialize hdd HDDEDATA to NULL (valgrind).
      dsound/tests: Removed test depending on value of undefined variable.
      dsound/tests: Added additional tests of IDirectSound_CreateSoundBuffer.

Scott Ritchie (1):
      wine.desktop: Add application/x-msi and change "emulator" to "program loader".

Simon Richter (1):
      widl: Write string lengths in host endianness.

Ted Percival (1):
      regedit: Interpret REG_DWORD as unsigned in editor.

Vitaliy Margolen (2):
      dxdiagn: PhysicalMemory parameter is a string not long long.
      dxdiagn: Use helper functions for adding properties to container.

Vitaly Lipatov (3):
      user32: Implemented processing SPI_{GET/SET}SNAPTODEFBUTTON for SystemParametersInfo.
      user32: Implemented processing SPI_{GET/SET}WHEELSCROLLCHARS for SystemParametersInfo.
      user32: Add test for SPI_{GET/SET}WHEELSCROLLCHARS for SystemParametersInfo.

Vladimir Pankratov (6):
      shell32: Update Russian translation.
      mshtml: Update Russian translation.
      regedit: Update Russian translation.
      oleview: Add Russian translation.
      taskmgr: Add Russian translation.
      hhctrl.ocx: Update Russian translation.

Zac Brown (4):
      mshtml: Initialize variables in a couple structs.
      ntdll/tests: Add tests for (Rtl)IsTextUnicode to verify that IS_TEXT_UNICODE_CONTROLS and IS_TEXT_UNICODE_REVERSE_CONTROLS are not mutually exclusive.
      winealsa.drv: Initialize a variable in MIX_close.
      shell32: Add stub implementation for SHGetIconOverlayIndex[AW].

Zhangrong Huang (1):
      kernel32: Add locale script tag resources.

--
Alexandre Julliard
julliard@winehq.org
