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

What's new in this release:
  - Direct3D improvements, including driver version emulation.
  - Beginnings of support for OLE objects in Richedit.
  - Several fixes to the animation control.
  - A bunch of fixes for regression test failures.
  - 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.55.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.55.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.54:

Alexander Nicolaysen Sørnes (1):
      shell32: Use LocalFree in CommandLineToArgvW.

Alexandre Julliard (18):
      winex11: Abstract the depth->bpp conversion and use it in X11DRV_DIB_CreateDIBFromPixmap.
      winex11: Remove unneeded check on bitmap depth, screen bpp cannot be 15.
      shell32: Fix permissions of newly-created directories.
      gdi32: Avoid locking in CreateCompatibleBitmap.
      gdi32: Get rid of a few more uses of DC_GetDCPtr.
      gdi32: Don't hold the GDI lock when calling DC_InitDC.
      gdi32: Avoid locking in BITMAP_CopyBitmap.
      gdi32: Use a separate critical section for freetype locking instead of relying on the GDI lock.
      gdi32: Get rid of DC_GetDCPtr in font functions.
      gdi32: Get rid of DC_GetDCPtr in the GDI object functions.
      winex11: Add a critical section for the palette global variables instead of relying on the GDI lock.
      gdi32: Get rid of DC_GetDCPtr in the palette functions.
      gdi32: DC_GetDCPtr and DC_ReleaseDCPtr are not longer used.
      winex11: Don't erase the desktop window synchronously on resizes to prevent deadlocks.
      winex11: Use the gdi display when initializing the keyboard to avoid creating a second display connection.
      winex11: Only update the virtual screen rect once in xinerama_init to minimize race conditions.
      tests: Add a helper routine to wait for a child process and propagate its result correctly.
      localspl: Avoid sizeof in a trace.

Alistair Leslie-Hughes (7):
      msxml3: Validated attribute name.
      msxml3: Corrected Entity Reference Test.
      msxml3: Correct createElement return value for an invalid type.
      kernel32: Add RegisterApplicationRestart stub.
      gdiplus: Add GdipSetPenMode stub.
      gdiplus: Add GdipSetStringFormatFlags stub.
      msxml3: Corrected test text.

Andre Wisplinghoff (1):
      winecfg: Enable add button when choosing lib from combobox (Libraries tabsheet).

Andrew Riedi (2):
      user32: Test destroying the cursor of a parent process.
      user32: winex11.drv has support for color cursors now.

Andrew Talbot (10):
      winemp3.acm: Remove unneeded casts.
      wineps.drv: Remove unneeded casts.
      winex11.drv: Remove unneeded casts.
      winex11.drv: Remove unneeded casts.
      wininet: Remove unneeded casts.
      winmm: Remove unneeded casts.
      wintab32: Remove unneeded cast.
      msvfw32: Avoid possible dereference of NULL pointer (Coverity).
      wnaspi32: Remove unneeded cast.
      ws2_32: Remove unneeded casts.

Andrey Esin (1):
      cmd: Additions to Russian translation.

Aric Stewart (1):
      gdi32: Child fonts need to be scaled like their parent. With input from Dmitry Timoshkov.

Bang Jun-young (4):
      crypt32: Include wine/port.h for snprintf().
      user32: Fix EndMenu() to match the PSDK.
      riched20: Include wine/port.h for vsnprintf().
      comctl32: Fix invalid syntax.

Christopher Harvey (1):
      winex11: Added WGL_BIND_TO_TEXTURE_DEPTH_NV to ConvertAttribWGLtoGLX.

Colin Finck (2):
      widl: Support Windows paths in dup_basename and make_token.
      widl: Write the TLB file in binary mode, so the line endings won't be changed.

Detlef Riekenberg (7):
      localspl: Initialize pointers in struct PRINTPROVIDOR.
      localspl: Implement fpGetPrinterDriverDirectory.
      winspool: Use the backend for GetPrinterDriverDirectory.
      gdi32: Add stub for GdiInitSpool and GdiGetSpoolMessage.
      url: Add a stub for AddMIMEFileTypesPS.
      localspl: Implement fpAddPrinterDriverEx.
      winspool: Use the backend for AddPrinterDriverEx.

Dmitry Timoshkov (2):
      kernel32: LOADPARAMS16->showCmd can be NULL, do not crash in that case.
      kernel32: Separate modifier from charset before detecting the charset codepage.

Eric Pouech (27):
      dbghelp: Return the size of each directory instead of passing a pointer to it.
      dbghelp: Fixed the suspend count when creating a minidump in the middle of an exception.
      dbghelp: Removed double assignment of checksum.
      dbghelp: Store the PE version information in module block.
      winedbg: Implemented the pXX request in gdb proxy.
      riched20: Start handling OLE objects inside richedit.
      riched20: Handle the zoom in OLE objects.
      riched20: Correctly handle the wrapping when graphics are used.
      riched20: Invert graphics when they are under the selection.
      riched20: Support a couple of paragraphs attributes out of RTF stream reading.
      riched20: Added support for image reading from RTF stream.
      riched20: Start implementing object reading out RTF stream.
      riched20: Make use of the size info in REOBJECT if present.
      dbghelp: Fixed the types we want to load at first.
      dbghelp: Added missing basic types for booleans and integers.
      dbghelp: Pass the 'details' flags to _fetch_type so that we can simplify some code around.
      dbghelp: Fix mixed up return and this type in MFunction V2.
      dbghelp: Added HRESULT as new basic type (and some doc about basic types ids).
      dbghelp: Added support for some V3 fields in structure parsing.
      dbghelp: Added support for register v3 in msc.
      dbghelp: Added preliminary support for a strange stack variable object.
      dbghelp: Added support for labels outside functions (and used it in msc parsing).
      dbghelp: Added basic support for base class information.
      dbghelp: Extended the internal enumeration information so that we know the underlying integral type.
      dbghelp: Attempt to cache some basic symbol types for easier and faster code.
      dbghelp: When sending back information about a global symbol, only demangle the class & field/method name.
      dbghelp: Disable the S_PUB_FUNC_XXX msc symbols until we know what they do (the first guess is wrong anyway).

Francois Gouget (23):
      shell32/tests: Fix a couple of copy/paste errors.
      shell32: Add some SLDF_XXX values, EXP_PROPERTYSTORAGE, and EXP_PROPERTYSTORAGE_SIG.
      user32: Fix a typo in the StretchDIBits stub name.
      winedump: Use the standard SLDF_XXX flag names instead of inventing new ones. Add the missing flags.
      winedump: Track unknown lnk flags and dump them.
      winedump: Dump the raw data when finding an unknown block in an lnk file.
      winedump: Switch the block dumping code to be block-oriented, rather then flag oriented, so it is resilient to order changes.
      winedump: Add support for dumping SZ_LINK and SPECIAL_FOLDER data blocks.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      mapi32: Add an API documentation stub to make winapi_check happy.
      ntdsapi: Add an API documentation stub to make winapi_check happy.
      winex11.drv: Add some API documentation stubs to make winapi_check happy.
      msvcrt: __CxxDetectRethrow() and __CxxQueryExceptionSize() are implemented now so export them.
      winapi_check: Update win32.api for acledit.dll, ctapi32.dll and inetcomm.dll.
      winapi_check: Assorted win32.api updates.
      winapi_check: Update win32.api for d3dx8.dll.
      d3dx8core.h: Remove some extraneous #include directives.
      d3dx8: Fix the D3DXMatrixAffineTransformation() prototype.
      d3dx8: Make d3dx8core.h C++ compatible.
      d3dx8: Add the d3dx8mesh.h header and move the relevant function declarations there.
      d3dx8: Fix the D3DXAssembleShaderFromFileA/W() prototypes.
      comctl32/tests: Call InitCommonControlsEx() if available, fall back to InitCommonControls() for the older controls, and skip the tests altogether for the newer ones.
      riched20: Fix the name of the lpUsedDefChar field of GETTEXTEX.

Gerald Pfeifer (2):
      d3d9: Fix the type of three loop variables.
      configure: Use GCC's -Wtype-limits if possible.

Hans Leidekker (3):
      wininet: Make sure not to overwrite any caller supplied authorization header.
      wininet: Send HTTP/1.1 requests by default.
      wininet: Add zero value content length header to POST requests only.

Jacek Caban (28):
      urlmon: Added HlinkParseDisplayNameEx implementation.
      urlmon: Added MkParseDisplayNameEx tests.
      hlink: Call AddRef of correct interface in ExtServUnk_QueryInterface.
      hlink.idl: Added more function declarations.
      hlink: Added HlinkParseDisplayName implementation.
      hlink: Added HlinkParseDisplayName tests.
      hlink: Added HlinkResolveMonikerForData implementation.
      hlink: Added HlinkResolveMonikerForData tests.
      hlink: Added standard comments.
      hlink: Don't prefer native version.
      urlmon: Added comments about missing MIME filters.
      widl: Ignore ATTR_LOCAL in create_msft_typeinfo.
      urlmon: Added CopyStgMedium implementation.
      urlmon: Fixed tests.
      urlmon: Return better error results.
      mshtml: Added more about protocol tests.
      urlmon: Separate buffer from stream object.
      urlmon: Abstract ProtocolStream object.
      urlmon: Don't create stgmed_obj for binding to object.
      urlmon: Added BINDSTATUS_CACHEFILENAMEAVAILABLE support.
      urlmon: Added support for binding to IID_IUnknown storage (cache file).
      urlmon: Correctly handle BINDF_NEEDFILE flag in http protocol.
      urlmon: Added more protocol tests.
      itss: Added BINDF_NEEDFILE test.
      urlmon: Added more tests.
      mshtml: Update wine_url in nsIURI::SetPath.
      urlmon: Added gecko_installer_workaround to url.c tests.
      urlmon: Fixed ref count leak.

James Hawkins (16):
      kernel32: Factor out the VerifyVersionInfo tests into their own function.
      version: Return ERROR_RESOURCE_DATA_NOT_FOUND if the file does not have version information.
      msi: Add tests for using single quotes in an INSERT query.
      msi: Implement the MSIMODIFY_ASSIGN action of MsiViewModify for the streams table.
      msi: Add tests for MsiGetFileVersion.
      msi: Only convert output strings if the call succeeded.
      msi: Translate ERROR_BAD_PATHNAME into ERROR_FILE_NOT_FOUND.
      msi: Return ERROR_INVALID_PARAMETER if a string pointer is non-NULL and the size pointer is NULL.
      msi: Return ERROR_FILE_INVALID if the file has no version information.
      msi: Leave room for the NULL terminator.
      msi: Return the string length even if the string is NULL.
      msi: Return ERROR_MORE_DATA if the size is too small.
      msi: Add more tests for MsiFormatRecord.
      msi: Reimplement MsiFormatRecord.
      msi: Fix handling of the NULL separator when writing registry values.
      msi: Test using carriage returns in SQL queries and imported tables.

Jens Nestler (1):
      kernel32: Don't fail unconditionally in MoveFile for directories with flag MOVEFILE_REPLACE_EXISTING.

Johan Gardell (1):
      user32: Added support for SPI_SETMOUSESPEED in SystemParametersInfoW.

Juan Lang (1):
      rsaenh: Merge the encrypting and decrypting states, as encrypting and decrypting are allowed with the same key.

Kirill K. Smirnov (2):
      systray: Properly track errors.
      systray: Add support for NIS_HIDDEN flag.

Lars-Ake Fredlund (1):
      winex11: Don't create a mapping if X11DRV_PALETTE_VIRTUAL is set.

Lei Zhang (3):
      comctl32: Use wine_dbgstr_rect() in traces.
      user32: Use wine_dbgstr_rect() in traces.
      quartz: Add VideoRendererDefault.

Marcus Meissner (3):
      wordpad: Remove condition that never triggers.
      atl: Check for NULL.
      pdh: Fixed wrong condition.

Michael Stefaniuc (3):
      user32: Remove duplicated get_hook_proc() function.
      olecli: Remove duplicated typedefs/enums.
      msi: Fix "type of 'x' defaults to 'int'" warnings.

Paul Chitescu (1):
      ntoskrnl.exe: Implement MmPageEntireDriver and MmResetDriverPaging.

Paul Vriens (4):
      include/wintrust.h: Add missing members to CRYPT_PROVIDER_DATA struct (fixes some wintrust tests on Windows).
      wintrust/tests: Use GetModuleHandleA instead of LoadLibraryA.
      rpcrt4/tests: Change test for Windows 2003.
      rpcrt4/tests: Skip rest of the tests if we fail.

Reece H. Dunn (9):
      comctl32: Proper fix redrawing the trackbar background with themes enabled.
      gdiplus: Fix the bezier arc path test on all Windows platforms.
      msxml3: Fix the domdoc test failures.
      cabinet: Make the fdi tests pass on Vista.
      ddraw: Spelling fixes in the d3d test output.
      gdi32: Improve the failure reporting in the bitmap tests.
      uxtheme: Fix the system tests so they pass on Vista.
      comctl32: Vista sends an unidentified message when destroying datetime and monthcal windows.
      user32: Make the listbox tests pass in directories other than dlls/user32/tests.

Rob Shearman (30):
      secur32: Move the detection of NULL credentials from AcquireCredentialsHandle to InitializeSecurityContext.
      secur32: If using cached credentials failed in InitializeSecurityContext then fail with SEC_E_NO_CREDENTIALS instead of carrying on with a blank password.
      secur32: Try to retrive credentials by using the credential manager to retrieve credentials saved for the target server in InitializeContextHandleW, if possible.
      secur32: Initialise more pointers in helper to NULL.
      oleaut32: Fix big memory leak in xCall.
      widl: Don't search for a import file name with a path in the include directories for compatibility with MIDL.
      widl: Output code for initialising and freeing full pointer translation tables.
      mapi32: Add a stub implementation of HrQueryAllRows@24.
      ole32: Add a stub implementation of CreatePointerMoniker.
      oleaut32: Fix a leak of a typelib object in OLEFontImpl_GetTypeInfo.
      oleaut32: Fix a memory leak in the olefont tests.
      rpcrt4: Fix some incorrect checks in RPCRT4_Receive.
      oleaut32: Fix some reference count leaks in the tmarshal test.
      oleaut32: Fix a leak of bmi in OLEPictureImpl_LoadGif.
      comctl32: In certain circumstances, native comctl32's animation control accepts negative start positions for the ACM_PLAY message.
      advapi32: Fix the size calculation in StartServiceW.
      wine.inf: Make UI effects default to on.
      oleaut32: Fix some memory leaks in the safearray tests.
      ole32: Add tests for CreatePointerMoniker.
      ole32: Add pointer moniker implementation.
      wininet: HTTP_Connect should fail if a NULL or empty hostname is passed in.
      rpcrt4: Fix memory leaks in the rpc tests.
      comctl32: Get the background colour in ANIMATE_PaintFrame, instead of just in WM_PAINT.
      ntdll: The FileMailslotSetInformation and FileCompletionInformation cases of NtSetInformationFile don't need the fd.
      server: Always try return a named pipe server that is listening from find_available_server.
      ws2_32: Add a FIXME for WS_SIO_GET_EXTENSION_FUNCTION_POINTER in WSAIoctl.
      rpcrt4: Fix potential memory leaks in RPCRT4_Receive.
      rpcrt4: Fix potential memory leaks on error paths in RPCRT4_io_thread.
      comctl32: Don't get the background colour in ANIMATE_PaintFrame as this can be called inside a critical section.
      comctl32: Move the getting of the DC outside of ANIMATE_DrawFrame.

Roderick Colenbrander (5):
      wined3d: Make sure to set the color key when it is needed including for index_in_alpha.
      wined3d: Reload the palette on a color key change. This fixes the ddex4/ddex5 samples from the dx7 sdk.
      wined3d: Allow read back of P8 surfaces. This fixes some of the redrawing issues in Red Alert.
      wined3d: Redownload the surface data in case of a palette change. This fixes a lot of redrawing problems in Red Alert.
      wined3d: Upload p8 palette using GL_ALPHA instead of GL_RED.

Stefan Dösinger (30):
      wined3d: Beware of texture_rectangle NP2 support in Reset.
      wined3d: Update the auto depth stencil buffer size on reset.
      wined3d: Unload implicit depth stencil buffers correctly.
      wined3d: Destroy FBOs and reset pointers on Reset.
      wined3d: Move some UnLoad code to the base texture class.
      wined3d: Mark textures dirty on UnLoad.
      wined3d: De-Statify depth blit opengl resources.
      d3d9: Some drivers allow non-aligned offsets.
      wined3d: Make Clear aware of the depth stencil sharing.
      wined3d: Update the gl rectangle when adjusting surface sizes.
      wined3d: D3DTADDRESS_WRAP on conditional NP2 textures clamps to edge.
      wined3d: Some texture transform test corrections.
      d3d9/tests: Be less picky about X8L8V8U8 precision.
      d3d9/tests: Accept the rejection of non-standard fixed function attrib types.
      wined3d: Correct the srgb reading check.
      wined3d: Fix dxtn format check.
      wined3d: Move the float format check to the big switch statement.
      wined3d: Move vertex buffer vbo creation to PreLoad.
      wined3d: Recreate the contexts on _Reset.
      wined3d: Restore the stateblock after Reset.
      wined3d: Tear down the dummy textures before resetting.
      wined3d: Move the highpart of the driver version to the gl structure.
      wined3d: Separate OpenGL and driver version.
      wined3d: Create VBOs.
      ddraw: Some drivers return a refresh rate of 0.
      wined3d: Add infrastructure for faking driver versions.
      wined3d: Add some ATI cards to the version database.
      wined3d: Reject unsupported modes when restting the device.
      d3d9: Implement the device lost state.
      wined3d: Restore the Window size on reset.

Stefan Leichter (1):
      advapi32: Fix the failing QueryServiceConfig2 test on platforms win2k3 and vista.

--
Alexandre Julliard
julliard@winehq.org
