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

What's new in this release:
  - RunOnce and Run entries now executed on startup.
  - Beginnings of support for emulated disk devices.
  - Many Richedit improvements.
  - Nicer looking color dialog.
  - 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.53.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.53.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.52:

Alexander Dorofeyev (6):
      wined3d: Free palette handle when destroying IWineD3DPaletteImpl.
      ddraw: Release palette interfaces.
      ddraw: Remove redundant iface<->impl casts in IDirect3DTextureImpl_Load.
      wined3d: Fix regression of colorfill and texture to swapchain codepaths in BltOverride.
      include/d3d.h: Fix method calling macros for IDirect3DTexture.
      ddraw/tests: Add test for rendering vertices with zero rhw.

Alexander Nicolaysen Sørnes (5):
      comdlg32: PageSetupDlgW: Set orientation in printer dialog.
      comdlg32: PageSetupDlgW: Set paper size in printer dialog.
      wordpad: Draw margin lines in print preview.
      crypt32: Implement CryptFindLocalizedName.
      cmd: Seed the random number generator.

Alexandre Julliard (33):
      winedos: Don't emulate in 32-bit mode interrupts that don't have a specific handler.
      shell32: Fix messed up indentation.
      crypt32: Avoid casting away const from the context pointer.
      server: Use exponential backoff when waiting for wineserver -k to complete.
      server: Redesign the server shutdown processing.
      ntdll: Print an error for unsupported shared writable mappings.
      advapi32: Don't wait for 20 seconds if a service fails to start.
      kernel32: Launch wineboot on first startup of a wine process.
      mountmgr.sys: Added initial stub for the mount point manager device.
      mountmgr.sys: Create a hard disk device for PhysicalDrive0.
      mountmgr.sys: Create disk devices for all configured drives.
      mountmgr.sys: Add devices to the MountedDevices registry key.
      mountmgr.sys: Implemented the IOCTL_MOUNTMGR_QUERY_POINTS request.
      kernel32: Implemented FindFirstVolume/FindNextVolume using the mount point manager.
      kernel32/tests: Added tests for FindFirstVolume/FindNextVolume.
      ntdll: Return a proper Information field also when opening a server file object.
      advapi32: Fix the length written to the pipe for the start message.
      wineboot: Don't print errors for non-fatal problems.
      configure: Add --without options for all optional dependencies.
      configure: Added a check for the soname of libodbc.
      wined3d: Use unsigned int instead of size_t for element counts.
      wined3d: Use unsigned int instead of size_t for the glsl mask size.
      advapi32/tests: Print the correct size in an error message.
      gdi32/tests: Avoid using size_t in traces.
      kernel32/tests: Avoid using size_t in traces.
      server: Wait for the expiration of all the process SIGKILL timers before exiting the server.
      regedit: Fixed parsing of hex sequences.
      server: Accept utf-8 data as input in registry files.
      server: Make the registry parser more tolerant about malformed hex values.
      server: Output incorrectly-terminated strings in hex format.
      kernel32: Fail more gracefully in GetVolumeInformation for fake drive devices.
      mountmgr.sys: Implemented IOCTL_DISK_GET_DRIVE_GEOMETRY and IOCTL_STORAGE_GET_DEVICE_NUMBER.
      Spelling fixes in French man pages.

Alistair Leslie-Hughes (17):
      msxml3: Return E_INVALIDARG when value is NULL.
      msxml3: Implement setNamedItem.
      msxml3: Implement createComment.
      msxml3: Implement createAttribute.
      msxml3: Add missing values for get_nodeName.
      msxml3: Cannot add an attribute with appendChild.
      msxml3: Implement get_xml.
      msxml3: Tests for get_xml, createAttribute, CreateComment, setNamedItem.
      msxml3: nextSibling not supported for Attribute, Document and Document Fragment Nodes.
      msxml3: lastChild not supported for CDATASection, Comment, PI and Text Nodes.
      msxml3: createProcessingInstruction: Check arguments are valid.
      msxml3: previousSibling not supported for Attribute, Document and Document Fragment Nodes.
      msxml3: get_attributes not supported for Attribute, CData, Comment, Doc, Doc Frag, Entity and Text Nodes.
      msxml3: Suppress IID_IRunnableObject FIXME since its not supported.
      mscoree: Add stubs for DllCanUnloadNow and DllGetClassObject.
      user32: Add SetProcessDPIAware stub.
      msxml3: Fix memory leak in test.

Andre Wisplinghoff (1):
      regedit: Refresh tree view on import.

Andrew Talbot (26):
      msvfw32: Remove unneeded casts.
      ntdll: Remove unneeded casts.
      advapi32: Remove unneeded casts.
      comctl32: Remove unneeded casts.
      cabinet: Remove unneeded cast.
      avifil32: Remove unneeded casts.
      user32: Fix a spelling typo.
      cryptnet: Remove unneeded cast.
      crypt32: Remove unneeded casts.
      dbghelp: Remove unneeded casts.
      ddraw: Remove unneeded casts.
      dplayx: Remove unneeded casts.
      dsound: Remove unneeded casts.
      comctl32: Remove unneeded casts.
      d3d8: Remove unneeded casts.
      comdlg32: Remove unneeded cast.
      imm32: Remove unneeded cast.
      iccvid: Remove unneeded casts.
      gphoto2.ds: Remove unneeded casts.
      gdi32: Remove unneeded casts.
      dxdiagn: Remove unneeded casts.
      gdiplus: Remove unneeded casts.
      itss: Remove unneeded casts.
      kernel32: Remove unneeded casts.
      mapi32: Remove unneeded cast.
      mscms: Remove unneeded casts.

Andrey Esin (2):
      wordpad: Russian translation.
      shell32: Fixed typo.

Andrey Turkin (2):
      wineboot: Fix installation of SFP protected files.
      dbghelp: Implement ImageDirectoryEntryToDataEx.

Aric Stewart (3):
      imm32: When updating a NULL HIMCC with NULL just return NULL. Handle the NULL HIMCC for the compstr when doing a ImmNotifyIME for a reset.
      imm32: ImmNotifyIMM with CPS_CANCEL fully clears the composition string. Also enable respective tests.
      fonts: Add Japanese small font.

Austin English (7):
      dplayx: Fix a typo.
      msi: Fix several typos.
      Spelling fixes.
      More spelling fixes.
      Spelling fixes.
      Spelling fixes.
      loader: Add disabling dlls to wine man page.

Chris Wulff (1):
      shdocvw: Hide and show the frame window instead of the inner one.

Dan Kegel (1):
      winemenubuilder: Expand short paths, else menu items aren't created for CSLU Toolkit.

Detlef Riekenberg (1):
      spoolss: Add stubs for SpoolerHasInitialized and SpoolerInit.

Divan Burger (6):
      comdlg32: Fix bug where the colour graph's cross is not painted.
      comdlg32: Clamp hue and saturation when clicking in colour graph in colour dialog.
      comdlg32: Modernize the look of the luminance bar in the colour dialog.
      comdlg32: Modernize the look of the colour graph's cross in the colour dialog.
      comdlg32: Modernize the look of the selected colour box in the colour dialog.
      comdlg32: Modernize the look of the colour boxes in the colour dialog.

Dmitry Timoshkov (9):
      winecfg: Don't mix the strings in unix and windows locales.
      gdi32: Remove redundant indentation levels in CreateFontIndirectA and CreateFontIndirectW.
      msvcrt: Rename _environ to avoid a conflict on Solaris.
      gdi32: Add more tests for bitmap font metrics scaling.
      comdlg32: If lpstrFile points to a valid string use it as a default value for edit control.
      gdi32: Add support for scaling font metrics.
      gdi32: Fix the regression caused by the scaling font metrics patch.
      gdi32: Fix a GdiFont leak.
      gdi32: Simplify GetEnumStructs.

Eric Pouech (29):
      richedit: Added support for some message (key, mouse) filtering events.
      richedit: Fixed a couple of charformatXXm structure conversions because of alignment issues.
      richedit: Correctly set the CFM_WEIGHT in charformat2.
      richedit: Fully initialize the first style.
      richedit: Correctly copy the pitch and family field.
      richedit: Don't allow recursive EN_REQUESTRESIZE notifications.
      richedit: Extend the usage of underlinetype from charformat2 in richedit.
      richedit: Now painting the newly supported underline types.
      richedit: Simplified handling of background brush while painting.
      richedit: Correctly initialize the paraformat structure.
      richedit: Now dumping all fields from the paraformat2 structure.
      richedit: Properly copying the paraformat2 structure for paragraphs.
      richedit: Enforce usage of paraformat2 fields instead of homegrown ones for paragraphs.
      richedit: Fix the para computation when zoom is used.
      richedit: Now drawing the paragraph borders (if any) from paraformat2.
      richedit: Added support for spaces above & below paragraphs.
      richedit: Added support for intra-paragraph line space.
      richedit: Rewrote FindPixelPos so that it always return something.
      richedit: Small optimisation in ME_GetSelectionInsertStyle.
      richedit: Move init code after some sanity checks to avoid unneeded computations.
      richedit: Don't recreate the DC all the time, but use uniformely a ME_Context structure where needed.
      richedit: Optimizations for the style selection.
      richedit: Don't force repaint while the redraw flag is off.
      richedit: Simplify first para style handling by creating a context.
      richedit: Only copy the charset when it's defined.
      richedit: Initialize all the cursors at editor creation.
      richedit: Check return of GetScrollInfo before accessing the returned structure.
      richedit: Uniformly handle the bPitchAndFamily field out of CHARFORMAT.
      gdi32: Break loop in MF_PlayMetaFile when META_EOF is found.

Francois Gouget (9):
      msxml3/tests: Add the trailing '\n' to an ok() call.
      wintab32: Add a trailing '\n' to a Wine trace.
      advapi32: RegGetValue() should not return an error when expanding a string and given a NULL buffer and a zero size.
      advapi32: RegGetValueW() must return the required buffer size in bytes, not WCHARs.
      kernel32/tests: Add more ExpandEnvironmentStringsA() tests.
      kernel32/tests: Despite the MSDN claims, GetComputerName() does not return the required buffer size... except on Vista. So update the tests accordingly.
      msi/tests: Tweaked so it does not look like things are misspelled.
      shell32: A lot of lnk files have extra data blocks at the end, although they don't seem to matter much. So drop the corresponding ERR() to a WARN().
      winemenubuilder: EnumResourceNamesW() returns false when we find the icon. So fix the corresponding misfiring trace.

Gerald Pfeifer (24):
      msi: Add missing initializer for delete_ops.
      wined3d: Remove noop check in IWineD3DBaseTextureImpl_Appl().
      user32: Fix type of loop variable.
      winhelp: Remove a dead condition.
      taskmgr: Remove redundant out-of-domain checking which is already handled by PerfDataGetProcessorUsage() and PerfDataGetProcessorSystemUsage().
      kernel32/tests: Remove extraneous check.
      winex11.drv: Simplify condition in create_xcursor_cursor() based on the unsignedness of types.
      msi: Simplify condition in TABLE_fetch_stream().
      d3d9/tests: Simplify condition in test_vshader_input().
      wined3d: Remove four noop checks.
      winspool: Adjust the typo of a loop variable in test_EnumForms().
      ole32: Remove one noop check in CoWaitForMultipleHandles().
      wined3d: Simplify three checks based on the unsignedness of variables.
      qcap: Complete initializers for g_cTemplates[].
      msi: Remove an extraneous safety check and simplify deformat_string().
      wined3d: Removed dead FIXME checks.
      ws2_32: Remove two noop checks.
      msi: Remove an extraneous safety check and simplify generate_error_string().
      d3d8: Fix type of loop variable.
      d3d9: Fix type of loop variable.
      msi: Adjust the types of loop variables.
      user32: Factor in EDIT_WM_EraseBkGnd().
      gdi32: Tighten range checking in PlayEnhMetaFileRecord() and remove four useless checks.
      msi: Complete initializers.

H. Verbeet (6):
      wined3d: Call ActivateContext regardless of WINED3DCREATE_MULTITHREADED.
      wined3d: Call SetGlTextureDesc() from BindTexture() rather than from PreLoad().
      wined3d: Move binding the texture and dirtifying the sampler to its own function from surface_download_data().
      wined3d: Bind the surface texture in LoadLocation().
      wined3d: SFLAG_INTEXTURE is the same as SFLAG_INDRAWABLE for offscreen render targets when ORM_FBO is used.
      wined3d: Properly handle the surface location in stretch_rect_fbo().

Hans Leidekker (15):
      gdi32: Add a stub implementation for RemoveFontMemResourceEx.
      msvcrt: Fix spec file entries for the execv functions.
      wininet: Fix handling of host and referrer headers in HttpOpenRequest.
      kernel32: Fix two test failures on Win98 due to missing GetTempPathW.
      kernel32: Add Surinam Dutch and Belgian Dutch translations of language group names.
      tools/wine.desktop: Add Dutch translation.
      msvcrt: Implement _wsystem and forward system to it. Respect COMSPEC environment variable.
      msvcrt: Implement _wpopen and forward _popen to it.
      msvcrt: Rewrite _execl/_spawnl functions as wrappers around wide character implementations.
      msvcrt: Implement _execl{e, pe}.
      msvcrt: Rewrite _spawnve as a wrapper.
      msvcrt: Implement _wexecl{, e, p, pe}.
      msvcrt: Implement _wspawnl{, e, p, pe}.
      msvcrt: Implement _wexecv{, e, p, pe}.
      msvcrt: Correct search strategy for the exec/spawn functions.

Jacek Caban (42):
      urlmon: Move setting protocol_sink to separated function.
      urlmon: More ReportProgress implementation.
      urlmon: Release protocol sink in Terminate.
      urlmon: Added more binding tests.
      urlmon: Use BindProtocol in Binding object.
      urlmon.idl: Added missing MONIKERPROPERTY variables.
      urlmon: Added ibind argument handling in CreateAsyncBindCtx.
      urlmon: Make start_binding more generic.
      urlmon: Better implementation of bind stopping.
      urlmon: Better error handling.
      urlmon: Binding_Create clean up.
      urlmon: Added "CBinding Context" bind option support.
      urlmon: Call AddRef in EnumFORMATETC::QueryInterface.
      urlmon: Added BindToObject implementation.
      urlmon: Added more tests.
      ole32: Fixed parameter checking and improved debug traces in IBindCtx::QueryInterface.
      mshtml: Added PutProperty implementation.
      shdocvw: Added missing OnObjectAvailable function.
      shdocvw: Store DocHost in BindStatusCallback.
      shdocvw: Return S_OK in OnStartBinding.
      shdocvw: Return correct variables in GetBindInfo.
      shdocvw: Always create BindStatusCallback object.
      shdocvw: Added OnObjectAvailable implementation.
      shdocvw: Use OnObjectAvailable in http_load_hack.
      shdocvw: Added OnProgress implementation.
      shdocvw: Added OnStopBinding implementation and use it in http_load_hack.
      shdocvw.5: Move on_before_navigate2 call to navigate_mon.
      shdocvw: Use BindToObject to load document (except for http, https and ftp protocols).
      shdocvw: Call try_application_url after BindToObject failure.
      mshtml: Added Invoke(DISPID_READYSTATE) implementation.
      mshtml: Fixed Read implementations.
      mshtml: Don't assume that end_pos.node is text node in range_to_string.
      shdocvw: Fixed ref count leak.
      shdocvw: Set IE's IVer and Build registries.
      mshtml: Don't crash in before_async_open if there is no client site.
      mshtml: Handle fClearDirty flag in IPersistStreamInit::Save.
      mshtml: Move nsChannel's content type initialization to async_open_doc_uri.
      mshtml: Update focus information in WM_RESETFOCUS_HACK.
      mshtml: Fixed hr element handling in range object.
      mshtml: Added more range tests.
      mshtml: Use QueryService to get IHttpNegotiate in get_post_data_stream.
      mshtml: Disable some default Gecko warnings.

James Hawkins (16):
      msi: Only read an internal package if the file to install is compressed.
      msi: WriteEnvironmentStrings should also write to REG_EXPAND_SZ strings.
      msi: If the package is a URL, the OriginalDatabase property should be the URL and the DATABASE property should be the path to the local temporary package.
      msi: Factor out msi_set_sourcedir_props.
      msi: OriginalDatabase is the fully-expanded path to the original package if the package is local and installed from the command line.
      msi: SourceDir is formed from the path of OriginalDatabase.
      msi: OriginalDatabase can be a URL so check for a forward slash too.
      msi: Directly download mi->source now that SourceDir points to the URL.
      msi: Check the local package for existence when resolving the package source.
      msi: Copy the temporary package when storing the installer.
      msi: Remove an erroneous table.
      msi: Pad the month and day to two digits.
      msi: Create parent directories when duplicating files if they don't exist, with tests.
      msi: Handle markers in the WHERE section of an UPDATE query, with tests.
      msi: Test committing a table with a removed row.
      msi: Actually delete the row data instead of blanking it out.

Jeremy White (4):
      wintab32: Add modest trace information for tablets.
      wintab32: Remove the unused and clearly broken FindOpenContext function.
      wintab32: Add logic to detect specific tablet cursor types, use it to discard non tablet X devices.
      wintab32: If we could not find a stylus sort of device, we haven't found a tablet.

Jonathan Ernst (4):
      server: New French man page for wineserver.
      crypt32: Updated French translation.
      server: Updated French man page.
      loader: New French man page for wine.

Kirill K. Smirnov (2):
      kernel32: Convert newborn wineserver handle to kernel32 console handle.
      winhelp: Fix index to handle offset value = 0 correclty.

Lance Jackson (1):
      cmd: Fix some unclosed file and registry handles.

Lei Zhang (10):
      gdiplus: Initialize a variable in a test.
      gdiplus: Add GdipCreatePen2 and test cases.
      msxml: Fix compilation on machines without libxml2.
      ntoskrnl.exe: Additional stub implementations.
      mapi32: Initialize several string buffers.
      shlwapi: Additional UrlEscapeA tests.
      shlwapi: Check an argument to UrlEscapeA.
      shlwapi: Check more arguments to UrlEscapeA.
      shlwapi: Fix a return value in UrlEscapeA.
      mapi32: Fix UrlEscapeA usage in MAPISendMail.

Lionel Debroux (2):
      msi: Correctly handle return value of msi_realloc.
      dinput: Improve TRACEs and WARNs.

Louis Lenders (2):
      user32: Add stub for GetLayeredWindowAttributes.
      shdocvw: Change return value for PersistMemory_Load.

Marcus Meissner (5):
      wininet: Check return value of InternetCrackUrl when checking referrer host.
      winex11: Set last error on enumerating display settings.
      msvcrt: Remove strange condition which might lead to crash.
      server: Remove superflous check (value->data is dereferenced before check).
      msxml3: Move potential NULL ptr derefs into their if () case.

Michael Jung (1):
      imm32: Added some unit test cases.

Michael Stefaniuc (5):
      wininet: Fix typo in comparison with NULL. Found by Smatch.
      user32: Remove unneeded casts.
      janitorial: Remove superfluous backslashes at end of lines.
      netapi32: Remove two unused global variables.
      kernel32: Add missing HeapFree(). Found by Smatch.

Paul Chitescu (1):
      advapi32: Accept a NULL lpServiceStatus in ControlService.

Paul Romanyszyn (1):
      comdlg32: Filter change should not update filename.

Paul Vriens (4):
      advapi32/tests: Don't crash on win98.
      kernel32/tests: Skip not implemented functions.
      kernel32/tests: Skip not implemented functions.
      kernel32/tests: Skip not implemented functions.

Peter Dons Tychsen (4):
      oleaut32: Add missing types to serialize/deserialize.
      ddraw: Add missing pitch in callback from EnumDisplayModes().
      dinput: Silence incorrect warning and move it to a valid place.
      devenum: Fix the implementation of IEnumMoniker::Skip(), to match the MSDN specs.

Peter Oberndorfer (2):
      user32: Remove unused lpGrayMask array.
      dwmapi: Add stub implementation for DwmSetWindowAttribute and DwmUnregisterThumbnail.

Reece H. Dunn (1):
      gdiplus: Added the ProfileNotFound status code.

Rico Schüller (3):
      cabinet: Fix memory leak (found by Smatch).
      mshtml: Fix memory leak (found by Smatch).
      msi: Fix memory leaks (found by Smatch).

Rob Shearman (70):
      rpcss: Initialise some out-only parameters that aren't initialised by the generated RPC code.
      rpcrt4: Implement non-conformant string functions.
      rpcrt4: Add some tests for non-conformant strings.
      rpcrt4: Implement NdrConformantStringMemorySize.
      widl: Check that the buffer has enough space before unmarshalling base types in generated code.
      include: Add defines for more message flags in rpcdcep.h.
      rpcrt4: Keep a track of server context handles allocated during processing of a request.
      rpcrt4: Fix a case of destroying a context handle without first releasing the lock.
      rpcrt4: Fix the MIDL_STUB_MESSAGE fields set by NdrServerInitializeNew.
      rpcrt4: Add tests for NdrServerInitializeNew.
      rpcrt4: Make some variables in the tests static.
      rpcrt4: Fix NdrGetBuffer to set the correct fields in the MIDL_STUB_MESSAGE structure.
      ntdll: Add some tests for NtQueryValueKey.
      ntdll: Set the DataLength field of the information field in NtQueryValueKey to how much data should be returned, not what was actually returned.
      user32: Add a stub implementation of RegisterServicesProcess.
      ntdll: Implement RtlRegisterWait, RtlDeregisterWait and RtlDeregisterWaitEx.
      kernel32: Implement RegisterWaitForSingleObject and UnregisterWait.
      kernel32: Add tests for RegisterWaitForSingleObject and UnregisterWait.
      include: ws2tcpip.h should include winsock2.h.
      rpcrt4: Update todos.
      widl: Make the offset of conformant string types point to the start of the conformant string format chars, not the pointer type.
      ole32: Determine the destination for the COM call and initialise the necessary parameters in ClientRpcChannelBuffer_GetBuffer instead of ClientRpcChannelBuffer_SendReceive.
      svchost: Add a FIXME for an undocumented function (SvchostPushServiceGlobals) that some native services expect to be called by native svchost.
      kernel32: Implement RegisterWaitForSingleObjectEx.
      ole32: Clear the RPC_MESSAGE structure before using it.
      rpcrt4: Add some tests for NdrGetBuffer and NdrFreeBuffer.
      rpcrt4: Don't set Buffer to NULL in I_RpcFreeBuffer.
      ole32: get_moniker_for_progid_display_name should fallback to using IClassFactory to get IParseDisplayName if getting it directly fails.
      ole32: Fix a typo in the class moniker tests.
      include: Add defines for context handle flags to rpcfc.h.
      widl: Output calls for the new versions of the marshalling and unmarshalling routines for server context handles.
      rpcrt4: Pass the interface identifier to the lower-level context handle routines for context handles with the strict flag set.
      widl: Add support for strict context handles.
      rpcrt4: Print fixme's if the serialize or no-serialize flags are set on a context handle being marshalled or unmarshalled.
      include: Add the strict_context_handle flag to the Irot interface.
      widl: Fix the conditions under which array freeing code is output.
      include: I_RpcBindingInqTransportType and I_RpcMapWin32Status should be always defined.
      rpcrt4: Implement I_RpcMapWin32Status.
      ntdll: Add tests for the data and name returned by NtQueryValueKey.
      ntdll: Fix the Data and Name returned by NtQueryValueKey for KeyValueFullInformation.
      ntdll: Fix NtQueryValueKey for KeyValueBasicInformation.
      widl: Fix context handle "cannot be null" detection.
      widl: Use symbolic names for some of the context handle attributes.
      ole32: Clear the RPC_FLAGS_VALID_BIT flag from the RPC_MESSAGE ProcNum when shortcutting the RPC runtime.
      ole32: Shortcut the RPC runtime for allocation of the message when processing the COM call by just sending a message to a window in the process.
      ole32: Fix a memory leak.
      ole32: Fix memory leaks caused by not calling the channel hook function when extension_size is zero.
      rpcrt4: Add tests for the RPC_MESSAGE members set by NdrClientInitializeNew.
      rpcrt4: Set the ProcNum of RPC_MESSAGE in NdrClientInitializeNew to include RPC_VALID_FLAGS_BIT.
      rpcrt4: ndr_stubless.h should include ndrtypes.h as it depends on types it defines.
      rpcrt4: Add stubs for NdrCorrelationInitialize, NdrCorrelationPass and NdrCorrelationFree.
      rpcrt4: Call NdrCorrelationInitialize and NdrCorrelationFree from NdrClientCall2 if new correlation descriptors have been specified.
      rpcrt4: Add stubs for I_RpcAsyncSetHandle and I_RpcAsyncAbortCall.
      rpcrt4: Add stubs for asynchronous functions.
      rpcrt4: Add tests for some async RPC functions.
      rpcrt4: Implement RpcAsyncInitializeHandle.
      rpcrt4: Set ReservedForRuntime to NULL in NdrClientInitializeNew.
      include: Add prototype for I_RpcNegotiateTransferSyntax.
      rpcrt4: Set the fBufferValid flag in NdrProxyGetBuffer.
      rpcrt4: Remove some unused includes.
      rpcrt4: Bind to the server interface in I_RpcGetBuffer, not I_RpcSendReceive.
      rpcrt4: Improve error handling in RPCRT4_io_thread and remove commented-out code.
      rpcrt4: Use send on a socket instead of write as it's more portable.
      rpcrt4: Implement NdrMapCommAndFaultStatus.
      rpcrt4: Fix a leak of msg in RPCRT4_io_thread on the error paths.
      ole32: Fix some uses of SEEK_SET when STREAM_SEEK_SET should have been used instead.
      rpcrt4: Fix memory leak in NdrFullPointerXlatFree.
      rpcrt4: Fix memory leaks in the ndr_marshall tests.
      rpcrt4: Fix a memory leak in the cstub tests.
      rpcrt4: Split RPCRT4_process_packet out into separate functions.

Roderick Colenbrander (2):
      wined3d: Use software palette conversion for non-texturing operations.
      wined3d: Unify color conversion code.

Stefan Dösinger (2):
      wined3d: Detect geforce 7300 cards.
      wined3d: Fix a pixelshader recompilation check.

Tony Wasserka (1):
      include: Add d3dx9core.h.

Zach Goldberg (1):
      Fix some typos.

--
Alexandre Julliard
julliard@winehq.org
