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

What's new in this release:
  - A variety of fixes to improve Photoshop CS2 support.
  - More complete support for device installation in setupapi.
  - New Bidi text implementation that doesn't depend on libicu.
  - The usual assortment of Direct3D improvements.
  - Beginning of I/O completion ports support.
  - 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.46.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.46.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.

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

Changes since 0.9.45:

Alex Villacís Lasso (8):
      iccvid: Guard against null pointer reference.
      riched20: Prevent overflow on richedit debug channel.
      riched20: Tests show WM_GETTEXT change \r to \r\n.
      riched20: Fix WM_GETTEXT to change \r to \r\n.
      riched20: EM_SETCHARFORMAT must return 1 on success, not 0.
      riched20: EM_SETCHARFORMAT must return 0, not assert, on invalid struct size.
      riched20: EM_SETCHARFORMAT must fail and return 0 with  TM_PLAINTEXT and SF_SELECTION.
      riched20: Minimal fix for WM_SETTEXT without ES_MULTILINE style.

Alexandre Julliard (62):
      wininet/ftp: There's no need to query the file size before retrieving a file.
      ntdll: Fix an error message.
      user32/tests: Properly flush events in the update rect tests.
      comctl32: We can now store binary files in the repository.
      comdlg32: We can now store binary files in the repository.
      user32: We can now store binary files in the repository.
      shell32: We can now store binary files in the repository.
      ole32: We can now store binary files in the repository.
      msi: We can now store binary files in the repository.
      cards: We can now store binary files in the repository.
      comctl32/tests: We can now store binary files in the repository.
      user32/tests: We can now store binary files in the repository.
      itss/tests: We can now store binary files in the repository.
      gdi32: Replace DC_GetDCUpdate by get_dc_ptr+update_dc in the clipping functions.
      gdi32: Replace DC_GetDCUpdate by get_dc_ptr+update_dc in the painting functions.
      gdi32: Replace DC_GetDCUpdate by get_dc_ptr+update_dc in the bitmap functions.
      gdi32: Replace remaining instance of DC_GetDCUpdate by get_dc_ptr+update_dc.
      gdi32: Update the DC in most OpenGL functions.
      winex11.drv: Invalidate the DCE when the window format is changed.
      cmd.exe: We can now store binary files in the repository.
      cmdlgtst.exe: We can now store binary files in the repository.
      msiexec.exe: We can now store binary files in the repository.
      oleview.exe: We can now store binary files in the repository.
      regedit.exe: We can now store binary files in the repository.
      taskmgr.exe: We can now store binary files in the repository.
      uninstaller.exe: We can now store binary files in the repository.
      winecfg.exe: We can now store binary files in the repository.
      winefile.exe: We can now store binary files in the repository.
      winemine.exe: We can now store binary files in the repository.
      winetest.exe: We can now store binary files in the repository.
      wordpad.exe: We can now store binary files in the repository.
      tools: Remove the no longer needed bin2res tool.
      msvcrt: Added implementation for __STRINGTOLD.
      msvcrt: Added implementation of a few more __crt functions.
      winex11.drv: If a window is not resizable through the window manager fall back to non-managed resizing.
      winex11.drv: Update the wm hints when the window frame is changed.
      ntdll/tests: Skip the debugger test if the child process is not loaded at the right address.
      server: Clip the visible region of a window to the desktop window.
      loader: Set the address space limit before starting the preloader.
      winex11.drv: Don't call GDI functions while holding the xrender lock.
      setupapi: Simplify the SetupDiGetClassDescriptionExA/W implementation.
      gdi32: Don't hold the GDI lock while calling the driver mapping functions.
      gdi32: Don't hold the GDI lock while calling the driver path functions.
      gdi32: Don't hold the GDI lock while calling the driver painting functions.
      gdi32: Don't hold the GDI lock while calling the driver OpenGL functions.
      gdi32: Don't hold the GDI lock while calling the driver clipping functions.
      gdi32: Don't hold the GDI lock while calling the driver printer functions.
      ole32/tests: Remove test that tries to create a huge file on Windows.
      wineps.drv: Fix end of list check in PSDRV_UpdateDevCaps().
      wineconsole: Default to the user backend, falling back to curses if we can't create a window.
      gdi32: Don't hold the gdi lock while creating a DC.
      gdi32: Don't hold the gdi lock while calling DC driver functions.
      gdi32: Don't pass a DC handle to WineEngGetFontUnicodeRanges.
      gdi32: Move the generic part of FontIsLinked() to font.c.
      winex11.drv: Don't call GDI functions while holding the X11 lock.
      gdi32: Fix typo in FIXME (spotted by Rob Shearman).
      rpcrt4/tests: Remove static keywords that hide test failures.
      winex11.drv: Always drag the full window for top-level windows to avoid having to grab the server.
      gdi32: Don't pass an object pointer to the SelectObject backend functions.
      gdi32: Move the object refcount handling to the SelectObject backend functions.
      gdi32: Don't hold the GDI lock while calling the SelectObject backends.
      gdi32: Don't hold the GDI lock while calling the driver SelectFont function.

Anatoly Lyutin (2):
      user32/tests: Fix test for switch maximized MDI children.
      gdi32: printdrv: Use umask for creating a spool file.

Andrew Talbot (13):
      crypt32: Fix some memory leaks.
      dmband: Fix a memory leak.
      dmcompos: Indirection level fix.
      dswave: Indirection level fix.
      dmscript: Indirection level fix.
      dmsynth: Indirection level fix.
      dmusic: Indirection level fix.
      dpnet: Indirection level fix.
      dplayx: Fix some memory leaks.
      gdi32: Fix a memory leak.
      itss: Fix a typo.
      gdiplus: Fix some memory leaks.
      kernel32: Fix a memory leak.

Andrey Turkin (3):
      server: Implement server-side completion queues and operations on them.
      server: Allow completion object to be attached to an fd object.
      kernel32: Pass completion value to ntdll layer.

Carroll Vance (1):
      ntoskrnl.exe: Added PsCreateSystemThread.

Chris Robinson (6):
      gdi32: Don't hold the GDI lock when setting the pixel format.
      wgl: Store the fbconfig id with the window when a pixel format is set.
      wgl: Don't set a pixel format on windows that already have one.
      winex11.drv: Load the XComposite extension when available.
      wgl: Override glFinish and glFlush.
      winex11: Be compatible with older XComposite headers.

Christian Gmeiner (1):
      advapi32: fix some compiler warnings when using -Wsign-compare.

Clinton Stimpson (4):
      riched20: Add test for event masks and notifications.
      riched20: Add tests for text limit behavior.
      riched20: Adjust event mask when sending EN_CHANGE notification.
      riched20: Only WM_CHAR respects text limit.

Dan Hipschman (11):
      widl: Fix alignment comments.
      widl: Implement pointer descriptions for complex structures.
      widl: Handle all buffer sizes.
      widl: Implement complex arrays.
      widl: Set the pointer description offset to zero if there are no pointers.
      widl: Respect pointer attributes better.
      widl: Handle top-level conformance for complex arrays.
      widl: Clean up write_conf_or_var_desc with string_of_type.
      widl: Fix top-level conformant arrays with pointer attributes.
      widl: Fix string codes in pointer descriptions.
      widl: Fix array alignment bug.

Detlef Riekenberg (3):
      comdlg32/tests: Add tests for PRINTDLG->hDevNames.
      comdlg32/tests: Remove debug code and the tabs.
      ntdll: Avoid segfault with snoop for exefiles with a broken export table.

Dmitry Timoshkov (6):
      winex11.drv: Use symbolic names for MapVirtualKey translation types.
      kernel32: Add a test for rw mapping of a read-only section.
      kernel32: Print last error in failure messages of the MapViewOfFile test.
      gdi32: Use symbolic names for font tags.
      kernel32: Add a test for read-only mapping of a write-only section, test actual page access rights of the mapping.
      user32: Make message test pass cleanly under XP SP2.

EA Durbin (1):
      winecfg: Implement audio test.

Francois Gouget (24):
      imagehlp: Fix the PTRANSLATE_ADDRESS_ROUTINE() and PREAD_PROCESS_MEMORY_ROUTINE() prototypes.
      dbghelp: Add some missing prototypes and types.
      ntdll: Fix compilation on systems that don't support nameless unions.
      dbghelp & imagehlp: Fix the PSYM_ENUMSYMBOLS_CALLBACK() and PSYM_ENUMERATESYMBOLS_CALLBACK() prototypes.
      wintrust: Fix compilation on systems that don't support nameless unions.
      shell32: CSIDL_MYDOCUMENTS is now a synonym for CSIDL_PERSONAL.
      advapi32: Add and use LSTATUS.
      imagehlp: Add SYMBOL_INFO_PACKAGE and SymSetSearchPathW().
      wordpad: Fix compilation on systems that don't support nameless unions.
      dnsapi: Fix the DnsQueryConfig() prototype.
      dbghelp: Fix the PENUMLOADED_MODULES_CALLBACK() prototype.
      regstr.h only defines constants and structures and thus does not need an extern "C" statement.
      gdiplus: Make gdiplustypes.h C++ compatible.
      mpr: Move MAX_INTERFACE_NAME_LEN to mprapi.h and add related constants.
      fci.h: Include basetsd.h.
      infosoft: indexsrv.idl must import objidl.idl and not unknwn.idl.
      gdi32: Add a '\n' to a Wine trace.
      wineoss.drv: Add support for $MIDIDEV to match $AUDIODEV and $MIXERDEV.
      riched20/tests: Add '\n's to ok() calls.
      includes: Remove unneeded extern "C" statements.
      includes: Make headers C++ compatible.
      ntoskrnl.exe: Fix the PsCreateSystemThread() prototype and declare it in wdm.h.
      winapi: Assorted win32.api updates.
      Assorted spelling fixes.

Gerald Pfeifer (1):
      README: Update minimal system requirements for FreeBSD.

Hans Leidekker (3):
      msvcrt: Implement _wsearchenv.
      msvcrt: Implement _wspawnv{, e, p, pe}.
      kernel32: Check for NULL output buffer in FormatMessage{A, W}.

Hwang YunSong(황윤성) (2):
      mshtml: Updated Korean resource.
      wordpad: Updated Korean resource.

Jacek Caban (31):
      mshtml: Store HTMLElement struct instead of pointer in HTMLAnchorElement.
      mshtml: Store HTMLElement struct instead of pointer in HTMLBodyElement.
      mshtml: Added get_body test.
      mshtml: Store HTMLElement struct instead of pointer in HTMLInputElement.
      mshtml: Store HTMLElement struct instead of pointer in HTMLSelectElement.
      mshtml: Store HTMLElement struct instead of pointer in HTMLTextAreaElement.
      mshtml: Make HTMLBodyElement child object of HTMLTextContainer.
      mshtml: Don't use node_type from HTMLNode object.
      mshtml: Get rid of node_type variable in HTMLNode object.
      mshtml: Forward node ref calls to IHTMLDOMNode interface.
      mshtml: Return NULL for empty results in get_style_attr.
      mshtml: Added more IHTMLStyle getters implementation.
      mshtml: Added HTMLStyle::get_textDecoration* implementation.
      mshtml: Added get_styleSheets implementation.
      mshtml: Added IHTMLStyleSheetsCollection::get_length implementation.
      mshtml: Fixed IHTMLTxtRange::get_text implementation with no nsrange associated.
      mshtml: Added more tests.
      mshtml: Added Exec(IDM_FONT) stub implementation.
      shdocvw: Added WebBrowser::FullScreen property implementation.
      shdocvw: Added WebBrowser::Resizable property implementation.
      mshtml: Don't crash in UIActivate if Gecko is not available.
      hlink: Added HlinkGetSpecialReference stub.
      mshtml: Added IHTMLDocument5 interface stub implementation.
      mshtml: Added get_compatMode implementation.
      mshtml: Added IHTMLElement2::put_scrollTop and put_scrollLeft implementation.
      mshtml: Forward IHTMLTextContainer::put_scrollTop and put_scrollLeft calls to IHTMLElement2 interface.
      mshtml: Ignore app's User-Agent header and Content-Type if there is no data to post.
      mshtml: Added IDM_COPY in browse mode implementation.
      mshtml: Added generic get_nsinterface function and use it in get_ns_command_state.
      mshtml: Use get_nsinterface in exec_print and do_ns_command.
      mshtml: Use get_nsinterface in set_ns_editmode and get_editor_controller.

James Hawkins (6):
      user32: Add tests for the DDE pack functions.
      user32: Set uiLo and uiHi to zero on error.
      kernel32: Fix the case where memory is freed twice in GlobalFree.
      kernel32: Return TRUE for all pointer params in GlobalUnlock.
      kernel32: Don't crash accessing an invalid handle in GlobalSize.
      user32: Add a test that shows ddeml string handles use local atoms.

Jeff Latimer (1):
      mpr: Check for out of memory condition.

Juan Lang (112):
      msi: Don't crash if record has no fields.
      msi: Make sure nested is initialized.
      msi: Initialize nested.
      wininet: Create a TCP connection if FLAG_ICC_FORCE_CONNECTION is specified.
      crypt32: Update comments.
      crypt32: Add a test of an indefinite-length sequence.
      crypt32: Correct GET_LEN_BYTES for the indefinite-length form.
      crypt32: Correct an optimization.
      crypt32: Fix alignment on 64-bit systems.
      crypt32: Use a simpler prototype for array decoding functions.
      crypt32: Add a decoded parameter to AsnDecodeSequence.
      crypt32: Make a decode OID function that returns the number of bytes decoded.
      crypt32: Return bytes decoded when decoding a sequence.
      crypt32: Return bytes decoded when copying DER-encoded bytes.
      crypt32: Return bytes decoded when decoding an alt name entry.
      crypt32: Pass bytes decoded pointer to AsnDecodeArray.
      crypt32: Return bytes decoded from AsnDecodeArray.
      crypt32: Remove an unneeded WINAPI.
      crypt32: Introduce a helper function to get encoded length that allows indefinite-length encoding.
      crypt32: Set bytes decoded in all success paths.
      crypt32: Support indefinite-length encoded arrays.
      crypt32: Allow items in an array to be indefinite-length encoded.
      crypt32: Use simpler form for internal time decoding functions.
      crypt32: Separate DecodeInt into an internal and external version.
      crypt32: Move a comment that belonged elsewhere.
      crypt32: Introduce a space checking helper for functions that don't allocate memory and use it where appropriate.
      crypt32: Use internal decode int function a couple more places.
      crypt32: Temporarily change prototype of AsnDecodeIntInternal to the CryptDecodeObjectEx form.
      crypt32: Use AsnDecodeIntInternal where an internal function is called for.
      crypt32: Implement DecodeAltName with DecodeAltNameInternal.
      crypt32: Don't use exception handler when decoding time zone, caller already does.
      crypt32: Get rid of encoding type from AsnDecodeSequenceItems, it's never checked.
      crypt32: Get rid of encoding type argument to AsnDecodeSequence, it isn't used.
      crypt32: Use internal form for all internal decoding functions.
      crypt32: Set *pcbDecoded in every function.
      crypt32: Allow a sequence to have an indefinite-length encoding.
      crypt32: Simplify DecodePathLenConstraint.
      crypt32: Allow indefinite-length encoding of sequence items.
      crypt32: Simplify AsnDecodeSequenceItems a tiny bit.
      crypt32: Use correct encoded length when decoding a sequence.
      crypt32: Test and correct decoding indefinite-length-encoded PKCS content.
      crypt32: Explicitly count bytes to copy in DecodeCopyBytes.
      crypt32: ret is already true, don't retest it.
      crypt32: Use decode function's returned decoded length to advance pointer when decoding an array.
      crypt32: Pass length rather than entire message to CRYPT_EncodeContentLength.
      crypt32: Implement streamed encoding of an indefinite-length data message.
      crypt32: Fix alignment for 64-bit systems.
      setupapi: Correct type to match PSDK.
      setupapi: Fix return type.
      setupapi: Fix typo.
      setupapi: Add missing prototypes and definitions, and change function prototypes to match.
      setupapi: Add tests for SetupDiCreateDeviceInfo.
      setupapi: Add stubs for SetupDiGetDeviceInstanceIdA/W.
      setupapi: Add tests for SetupDiGetDeviceInstanceId.
      setupapi: Add a placeholder for devices.
      setupapi: Implement SetupDiEnumDeviceInfo.
      setupapi: Implement SetupDiGetDeviceInstanceIdA on top of SetupDiGetDeviceInstanceIdW.
      setupapi: Add error checking to SetupDiCreateDeviceInfoW stub.
      setupapi: Implement SetupDiCreateDeviceInfoW.
      setupapi: Implement SetupDiGetDeviceInstanceIdW.
      setupapi: Implement SetupDiGetDeviceRegistryPropertyA/W.
      setupapi: Implement SetupDiSetDeviceRegistryPropertyA/W.
      setupapi: Make a helper to convert a GUID to a string.
      setupapi: Save device description to registry when creating a device.
      setupapi: Save class GUID to registry when creating a device.
      setupapi: Devices created by SetupDiCreateDeviceInfo are "phantoms", and are deleted from the registry when the set that contains them is closed.
      setupapi: Implement SetupDiGetClassDescriptionExA.
      setupapi: Add stub for SetupDiRegisterDeviceInfo.
      setupapi: Add tests for SetupDiRegisterDeviceInfo.
      setupapi: Implement SetupDiRegisterDeviceInfo.
      setupapi: Implement SetupDiGetClassDevsW.
      setupapi: Respect samDesired in SetupDiOpenClassRegKeyExW.
      setupapi: Set last error on failure in SetupDiOpenClassRegKeyExW.
      setupapi: Add stubs for SetupDiCreateDeviceInterfaceA/W.
      setupapi: Add tests for SetupDiCreateDeviceInterface.
      setupapi: Implement SetupDiCreateDeviceInterfaceA on top of SetupDiCreateInterfaceW.
      setupapi: Add error checking to SetupDiCreateDeviceInterfaceW stub.
      setupapi: Remove a redundant parameter check.
      setupapi: Set last error on invalid input.
      setupapi: Implement SetupDiCreateDeviceInterfaceW.
      setupapi: Implement SetupDiEnumDeviceInterfaces.
      setupapi: When enumerating an interface, add the interface to its device.
      setupapi: Add tests for SetupDiGetDeviceInterfaceDetail.
      setupapi: Implement SetupDiGetDeviceInterfaceDetailA/W.
      setupapi: Add test showing value of path.
      setupapi: Create symbolic link value when interface is created.
      setupapi: Fix prototype of SetupDiCreateDeviceInterfaceRegKeyA/W.
      setupapi: Convert device's interfaces to a standard list.
      setupapi: Add stubs for SetupDiCreateDeviceInterfaceRegKeyA/W.
      setupapi: Store pointer to an interface's device in the interface instance.
      setupapi: Return the interface's device from SetupDiGetDeviceInterfaceDetailA/W.
      setupapi: Implement SetupDiCreateDeviceInterfaceRegKeyA/W.
      setupapi: Store pointer to set in device, and use it to make sure that a device is a member of a set.
      setupapi: Save interface to registry when creating it.
      setupapi: Implement SetupDiDeleteDeviceInterfaceRegKey.
      setupapi: When freeing an interface, delete it from the registry if its device is a phantom.
      setupapi: Implement SetupDiGetDeviceInfoListDetailA/W.
      setupapi: Partially implement SetupDiGetClassDevsExW.
      setupapi: Implement SetupDiGetClassDevsW on top of SetupDiGetClassDevsExW.
      setupapi: Implement SetupDiGetClassDevsA on top of SetupDiGetClassDevsExW.
      setupapi: Implement SetupDiGetClassDevsExA.
      crypt32: Partially implement CryptQueryObject.
      crypt32: Fix CryptQueryObject for embedded PKCS7 signatures.
      crypt32: Support PKCS messages wrapped in a PKCS content info in CryptQueryObject.
      crypt32: Add/improve some traces.
      crypt32: Rename a couple of functions.
      crypt32: Add a function to serialize a store to an arbitrary stream.
      crypt32: Implement CRYPT_WriteSerializedStoreToFile using CRYPT_WriteSerializedStoreToStream.
      crypt32: Add definitions used by CertSaveStore.
      crypt32: Implement CertSaveStore.
      crypt32: Use CertSaveStore to save file stores.
      crypt32: Move CertSaveStore to serialize.c.

Karl Relton (1):
      msvcrt: New implementation of fcvt.

Konstantin Kondratyuk (2):
      mpr: Correct usage of dwScope and dwEnumScopes.
      include/npapi.h: Add some constants.

L. Rahyen (1):
      user32: Implement initial stubs for all raw input functions.

Lionel_Debroux (2):
      mlang: Fix memory leaks in error path (found by Smatch).
      mlang: Fix memory leaks in error paths (found by Smatch).

Louis Lenders (2):
      wtsapi32: Add stub for WTSRegisterSessionNotification.
      wtsapi32: Add stub for WTSUnRegisterSessionNotification.

Maarten Lankhorst (10):
      gdi: Remove support for libicu and all dependencies.
      gdi: Implement BiDi classification of characters and copying according to them.
      gdi: Implement explicit resolving in BiDi.
      gdi: Implement weak resolving in BiDi.
      gdi: Implement neutrals resolving in BiDi.
      gdi: Implement implicit resolving in BiDi.
      gdi: Implement line-by-line phase of the BiDi algorithm.
      wineoss: Silence some harmless warnings.
      dsound: Check if hardware buffer is big enough before accepting it.
      wineoss: Only initialise midi once.

Michael Stefaniuc (7):
      mshtml: Move 'inline' to the beginning of the declaration directly after the storage specifier.
      janitorial: Remove two fresh redundant NULL checks before HeapFree(). Found by Smatch.
      kernel32: Fix a memory leak. Found by cross referencing Andrew Talbot's list of potential memory leaks with Smatch's view of the same problem.
      ole32: Free memory on error path (found by Smatch).
      advapi32: Move the storage specifier to the beginning of the declaration.
      crypt32: Add missing parameter to a TRACE.
      server: Include stdarg.h in completion.c. Needed for older gcc versions.

Mikolaj Zalewski (26):
      gdi32: Store child font links as pointers to struct Face instead of filename/index.
      gdi32: Implement AddFontMemResourceEx (based on a patch of Byeong-Sik Jeon).
      gdi32: If freetype fails try to load manually fonts wrapped as PE resources.
      gdi32: Return the correct font type, ntmFlags and PitchAndFamily for Type1 fonts.
      advapi32: QueryObjectSecurity should return a self-relative security descriptor and not overflow the buffer.
      winex11.drv: wintab: Add a missing break.
      winex11.drv: wintab: Add missing CTX_PKTDATA support.
      winex11.drv/wintab32: Make wintab strings in winex11.drv Unicode, implement WTInfoW.
      wintab32: Store the context internally as Unicode, implement WTOpenW and WTGetW.
      wintab32: Add DisableThreadLibraryCalls.
      advapi32: Fix a test.
      ntdll: Add RtlAddAuditAccessAceEx.
      advapi32: Add AddAuditAccessAceEx.
      advapi32: Make ConvertStringSidToSid not to ignore the first subauthority.
      wine.inf: add four keys found on Windows XP to Active Setup\Installed Components.
      include: Fix the definition of VALID_INHERIT_FLAGS.
      advapi32: Implement ConvertSecurityDescriptorToStringSecurityDescriptor[AW].
      advapi32: Make ConvertSidToStringSid use helper functions of ConvertSecurityDescriptorToStringSecurityDescriptor.
      advapi32: The lpServiceStartName should default to LocalSystem for Win32 services.
      msi: Add some already implemented function to the spec file.
      advapi32/ntdll: MakeRelativeSD should preserve NULL pointers (with testcase).
      advapi32/ntdll: GetSecurityDescriptorOwner/Group should fill isDefaulted also for NULL sids.
      advapi32: Make ConvertStringSecurityDescriptorToSecurityDescriptor write the ACL.
      advapi32: In ConvertStringSecurityDescriptorToSecurityDescriptor "AU" should be checked before "A" (with testcase).
      advapi32: Implement GetPrivateObjectSecurity (with test).
      advapi32: Fix GetServiceDisplayNameA for cchBuffer == 0.

Mikołaj Zalewski (3):
      advapi32: Add some more rights constants for ConvertStringSecurityDescriptorToSecurityDescriptor.
      shell32: Make the shell view control Unicode.
      shell32: shlview: Change some more ANSI calls to Unicode.

Misha Koshelev (3):
      wininet: Track child handles, free all child handles on WININET_FreeHandle as native.
      wininet/tests: Add test to show that InternetCloseHandle closes open child handles too.
      wininet: When sending INTERNET_STATUS_HANDLE_CLOSING make sure the freed handle is not yet available.

Peter Oberndorfer (5):
      configure: Recognize i686-mingw32 prefix for crosscompiling.
      include: Add new processor feature constants.
      user32/tests: Fix dialog proc prototypes.
      ntdll: NtAreMappedFilesTheSame semi stub.
      winhttp: Add WinHttpGetIEProxyConfigForCurrentUser stub.

Philip Nilsson (2):
      ws2_32: Set IPV6_V6ONLY when required to be compatible with Windows.
      ws2_32/tests: Add a testcase for binding with IPv6 and IPv4 on the same port.

Rob Shearman (12):
      credui: The pszUserName parameter in CredUIPromptForCredentialsW is in/out so dump the string on entry to the function.
      widl: Initialise cval in make_expr.
      widl: Fix detection of complex arrays.
      widl: Add support for strings embedded in structures.
      widl: Fix write_string_tfs for strings declared as arrays.
      widl: Missing size_is or length_is attributes should generate 0xffffffff for the correlation description.
      widl: None of the non-fixed arrays have fixed sizes, so don't set the alignment to anything and return a size of 0 from get_required_buffer_size_type.
      rpcrt4: Fix a copy-and-paste error in RpcAuthInfo_Release that caused a double free of memory.
      rpcrt4: Implement RpcSmDestroyClientContext and RpcSsDestroyClientContext.
      userenv: Add a stub for UnloadUserProfile.
      widl: Write prototypes for context handle rundown rountines into generated header files.
      widl: Generate client and server code for using context handles.

Roderick Colenbrander (6):
      wined3d: Don't create a pbo for system memory surfaces.
      wined3d: Update list of pci ids.
      wined3d: Add pbo support for compressed textures.
      wined3d: Better video memory reporting.
      wined3d: The amount of video memory is set in FillGLCaps unless overridden using a registry option.
      wined3d: Move video memory tracking to the adapter.

Stefan Dösinger (45):
      wined3d: Add D3DSI_TEXLD_PROJECT and BIAS to d3d9types.h.
      wined3d: Add a fixme for D3DCMP_NOTEQUAL and D3DCMP_EQUAL.
      wined3d: Use GL_NV_depth_clamp to implement clipping disable.
      wined3d: Do not allocate memory if there's a pbo.
      wined3d: Do not invalidate the sysmem copy if a pbo exists.
      wined3d: Start of some surface cleanup.
      wined3d: Move resource methods to the base surface class.
      wined3d: Move non-rendering surface specific code to the base class.
      wined3d: Base surface move, part 2.
      wined3d: Reorder surface impl predeclarations.
      wined3d: Clean up SetGLTextureDesc and GetGLDesc.
      wined3d: Clean up SetFormatDesc.
      wined3d: Clean up AddDirtyRect.
      wined3d: Clean up SetMem.
      wined3d: Clean up IWineD3DSurface::ReleaseDC.
      wined3d: Remove a pbo check.
      wined3d: Move DIB section creation to the base surface implementation.
      wined3d: Give GDI surfaces their own GetDC copy.
      wined3d: Move lastActiveRenderTarget cleanup to the device.
      wined3d: Give GDI surfaces their own release implementation.
      wined3d: Move the software blitting to the base surface class.
      wined3d: Untie culling and offscreen rendering.
      wined3d: Set the stencil mask for both faces.
      wined3d: Fix a copypaste error.
      wined3d: Enable the stencil test if two sided stencil is used.
      wined3d: Disable two sided stencil if it is supported, but not enabled.
      wined3d: Keep the selected stencil setup face set to GL_FRONT.
      wined3d: Fix a typo in shader_glsl_cross.
      wined3d: Check for NULL streams.
      wined3d: Fix a typo in the surface code.
      wined3d: Add signed format conversion for glsl.
      wined3d: Recompile glsl pixelshaders if the sampler format changes.
      wined3d: Unify pixel format correction.
      wined3d: SRGB write correction emulation.
      wined3d: A0 needs the .x swizzle.
      wined3d: Put V8U8 back into the UNKNOWN format group.
      wined3d: Improve projected texture handling in arb.
      wined3d: Add support for some unimplemented instructions to arb shaders.
      wined3d: Implement WINED3DSI_TEXLD_BIAS in arb.
      wined3d: Add modifier handling to cnd in arb.
      wined3d: Handle modifiers in cmp.
      wined3d: Add crs and pow instruction support.
      wined3d: Add dp2add support to arb shaders.
      wined3d: Implement the nrm instruction in arb.
      wined3d: Add sincos support to arb shaders.

Stefan Leichter (9):
      dinput8: Remove 'recursive registry key delete' function.
      dinput: Remove 'recursive registry key delete' function.
      ddrawex: Remove 'recursive registry key delete' function.
      ddraw: Remove 'recursive registry key delete' function.
      d3dxof: Remove 'recursive registry key delete' function.
      comcat: Remove 'recursive registry key delete' function.
      browseui: Remove 'recursive registry key delete' function.
      amstream: Remove 'recursive registry key delete' function.
      ole32: Added version resource for ole2nls.dll.

Thomas Weidenmueller (1):
      shell32: Implement SHCreatePropSheetExtArrayEx.

Tijl Coosemans (2):
      ws2_32/tests: Don't wait for FD_CONNECT event when non-blocking connect() was successful.
      msvcrt: Resolve symbols clashes with FreeBSD libc.

Vitaliy Margolen (6):
      mshtml: Fix typo.
      mshtml: Fix another typo and add trace.
      dinput: Move get_config_key to a common place.
      dinput: Add a helper function to open configuration registry keys.
      dinput: Make default dead zone configurable.
      dinput: Implement GetDeviceInfo for evdev joystick.

--
Alexandre Julliard
julliard@winehq.org
