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

What's new in this release:
  - Photoshop CS/CS2 should now work, please help us testing it.
    See http://wiki.winehq.org/AdobePhotoshop for details.
  - A number of RPC fixes.
  - Various improvements to the debugger 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.54.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.54.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.53:

Alexander Dorofeyev (4):
      wined3d: Change colorkey fixup for stage 0 alphaop / alphaarg.
      ddraw: Fix handling of alpha with D3DTBLEND_MODULATE.
      ddraw/tests: Add test for D3DTBLEND_MODULATE.
      wined3d: Fix not released swapchain in some codepaths.

Alexander Nicolaysen Sørnes (7):
      wordpad: Fix width when text break = margins.
      wordpad: Add basic ruler.
      riched20: Include selection bar size in POSFROMCHAR.
      riched20: Don't clear CFM_UNDERLINE flag when applying styles where it is set.
      uninstaller: Disable Uninstall button when no items selected.
      uninstaller: Fix Norwegian Bokmål resource.
      winecfg: Update Norwegian Bokmål resource.

Alexandre Julliard (55):
      kernel32: Close the stdio handles when creating a detached process.
      kernel32: Don't inherit stdin/stdout handles in wineboot.
      user32: Don't inherit stdin/stdout handles in explorer.
      server: Take into account the extended registers part of the i386 context.
      kernel32/tests: Avoid size_t in traces.
      ntdll: Copy extended registers too in copy_context().
      ntdll: Linux support for saving and restoring the extended FPU context on exceptions.
      ntdll: Mac OS support for saving and restoring the extended FPU context on exceptions.
      ntdll: Restore typecast that is really needed.
      ntdll: Fall back to a server device ioctl for files with no associated fd.
      mountmgr.sys: Fix values returned for IOCTL_STORAGE_GET_DEVICE_NUMBER on emulated disks.
      winebuild: Reserve the space for the PE header in the .init section.
      winmm: Load only one sound driver at a time.
      wineboot: Add a --init option used when launched automatically at startup.
      wineboot: Delay import the dlls that are not needed for the default initialisation.
      winebuild: Don't try to use the .init section on Mac OS.
      kernel32: Fix the system affinity returned by GetProcessAffinityMask.
      server: Don't force the process affinity to 1, leave it up to the client.
      winex11.drv: Don't fetch the atom for a null device type.
      winex11.drv: Don't create a win_data structure for the desktop window, except in the process that owns it.
      winex11.drv: Moved initialization of screen_width/height to xinerama_init to do it inside the x11 lock.
      ntdll: Don't try to restore extended fpu context if not supported.
      widl: Use the real argument names in the C method macros.
      winex11.drv: Set the initial icon hints in set_initial_wm_hints().
      libwine: Properly increment source pointer for surrogates in wine_utf8_wcstombs.
      user32,server: Set the initial window rectangles to 0,0-0,0.
      winex11.drv: Fix handling of strange window sizes in CreateWindow, with tests.
      winex11.drv: Only allocate wm hints if we have an X11 window.
      ntdll: Don't fetch extended FPU context if there's no FPU context at all.
      server: Add a separate request to set the window visible rect.
      server: Invalidate the correct region when custom valid rects are specified.
      winex11: Abstract the server part of SetWindowPos into a separate function.
      winex11: Make the client rect relative to the parent window for consistency with the server side.
      winex11: Properly invalidate moved child windows instead of forcing SWP_NOCOPYBITS.
      winex11: Move the window bits according to the valid rects instead of invalidating.
      winex11: Move resetting of the cursor clip rectangle into xinerama_init().
      winex11: Leave it up to explorer to specify the correct size and position for the desktop.
      winex11: Update the win data rectangles before doing anything else in SetWindowPos.
      winex11: Move code around in X11DRV_SetWindowPos to reduce indentation levels.
      winex11: Add a mapped flag to the window data instead of relying on WS_VISIBLE.
      winex11: Apply the existing window region (if any) when creating the whole window.
      winex11: Set hints for the existing window text when creating the whole window.
      winex11: Set icon hints on non-managed windows too, since they may become managed later on.
      winex11: Get the icon from the window in case it was changed before the whole window was created.
      winex11: Remove obsolete code to set Z-order for child windows.
      winex11: Export a function to dock a window into the system tray, and get rid of the WS_EX_TRAYWINDOW style.
      comctl32: Tooltips should be top-most windows.
      user32: Menus should be top-most windows.
      winex11: Don't create a win_data structure for the root window in non-desktop mode.
      winex11: Create the window data structure lazily, once the window is made visible.
      winex11: Check for need to make window managed when WS_VISIBLE is set outside of SetWindowPos.
      winex11: Catch DIB memory accesses that touch the last page beyond the DIB bits end.
      user32: Moved the bulk of CreateWindow and SetWindowPos from the driver back into user32.
      Avoid sizeof in traces.
      winex11: Check for managed mode in create_whole_window again now that it is called lazily.

Alistair Leslie-Hughes (15):
      msxml3: Implement get_dataType.
      msxml3: Correct get_attributes for CDATA Section.
      msxml3: Implemented IXMLDOMCDATASection COM Object.
      msxml3: Implement GetClassID for XMLDocument IPersistStream interface.
      msxml3: Corrected getAttribute to return current value and assign output var.
      mscoree: Fix memory leak.
      msxml3: Implement put_text.
      msxml3: Implement get_nodeTypeString.
      msxml3: Attribute nodes are not typed.
      msxml3: Implement IXMLDOMImplementation Interface.
      msxml3: Implement IXMLDOMDocumentFragment Interface.
      msxml3: Entity Reference nodes do not support attributes property.
      msxml3: Implement IXMLDOMEntityReference interface.
      msxml3: Return correct IDispatch Interface.
      gmsxml3: Added typelib support.

Allan Tong (1):
      wined3d: Set swapchain container before flagging front buffer with SFLAG_INDRAWABLE.

Andrej Sinicyn (1):
      wordpad: Update German strings and correct shortcuts to match XP wordpad.

Andrew Talbot (30):
      netapi32: Remove unneeded cast.
      msvcrt: Remove unneeded casts.
      ntdll: Remove unneeded casts.
      msxml3: Remove unneeded cast.
      msvfw32: Remove unneeded casts.
      setupapi: Fix dead code (Coverity).
      ole32: Remove unneeded casts.
      oleaut32: Remove unneeded casts.
      qcap: Remove unneeded casts.
      psapi: Remove unneeded cast.
      rpcrt4: Remove unneeded casts.
      quartz: Remove unneeded casts.
      riched20: Remove unneeded casts.
      rsaenh: Remove unneeded casts.
      sane.ds: Remove unneeded casts.
      secur32: Remove unneeded casts.
      setupapi: Remove unneeded casts.
      shell32: Remove unneeded casts.
      shell32: Remove unneeded casts.
      shell32: Remove unneeded casts.
      urlmon: Remove unneeded cast.
      user32: Remove unneeded casts.
      user32: Remove unneeded casts.
      uxtheme: Remove unneeded casts.
      vmm.vxd: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      winedos: Remove unneeded casts.

Andrey Esin (9):
      wineboot: Russian translation.
      shell32: Update Russian translation.
      wordpad: Adding to Russian translation.
      wordpad: Corrections in Russian translation.
      regedit: Update Russian translation.
      write: Russian translation.
      browseui: Russian translation.
      wininet: One addition to Russian translation.
      credui: Added Russian translation.

Aric Stewart (1):
      wineps.drv: Properly handle NULL LPLOGFONT in PSDRV_EnumDeviceFonts.

Austin English (4):
      Misc spelling fixes.
      tools: Spelling fixes.
      wined3d: Spelling fixes.
      comctl32: Spelling fixes.

Christoph von Wittich (1):
      msi: Fix process token leak.

Christopher Berner (1):
      user32: Fixed off by one scroll bar pixels.

Dan Hipschman (1):
      oleaut32: Use the symbolic name for TYPEFLAG_FDISPATCHABLE.

Dan Kegel (5):
      gdiplus/tests: Don't free if alloc failed.
      hlink/tests: Skip tests if hlink couldn't be created.
      urlmon: Fix unlikely free of uninitialized pointer.
      winealsa.drv: Don't return garbage if can't find active channel.
      gdi32: Fix AddFontResource behavior with relative paths.

Dmitry Timoshkov (11):
      gdi32: Use public FS_xxxxxx defines.
      gdi32: Initialize more fields in GetEnumStructs.
      gdi32: Add a test for undocumented EnumFontFamiliesEx(NULL), make it pass under Wine.
      gdi32: Do not allow to create too large device dependent bitmaps like Windows does.
      gdi32: Allocate cache for face enumeration data only when necessary.
      ntdll: Do not perform base relocation if an image is not a DLL.
      gdi32: Actually perform the fractional scaling test, make it pass under Wine.
      winebuild: Add a couple of missing indentations in the generated asm files.
      user32: Make MapVirtualKeyEx(MAPVK_VK_TO_CHAR) behave more like in Windows.
      shell32: Add a LogoffWindowsDialog stub.
      winex11.drv: Remove an incorrect FIXME.

Eric Pouech (17):
      dbghelp: Silence superfluous message (spotted by Robert Reif).
      dbghelp: In Minidump, change a couple of internal names for consistency.
      winedbg: Fixed bt all so that current process/thread isn't lost.
      winedbg: Workaround broken minidumps with invalid 32->64 address conversion.
      winedbg: Added a way to support differently selector information depending on current target.
      ole32: Fixed datacache object so that we can retrieve meaningful information.
      msvcrt: symbol undecoration: Now correctly parsing the template forms.
      msvcrt: symbol undecoration: Handling of void in template parameters' list.
      msvcrt: symbol undecoration: Added support for cointerface.
      msvcrt: symbol undecoration: Added support for a couple of more calling conventions.
      msvcrt: symbol undecoration: Corrected handling of non static member function modifiers.
      msvcrt: symbol undecoration: Added support for thunks.
      msvcrt: symbol undecoration: Added support for RTTI types.
      msvcrt: symbol undecoration: Really check that we get a template string before making use of it.
      ntdll: Fixed getting the RTS status from line, and now using sane default values for all (compilation/system) cases.
      msvcrt: Corrected the .spec definition for the printf functions family.
      regedit: Warn about newest unicode export from native regedit.

Eric van Beurden (6):
      dbghelp: Update some mscvpdb.h definitions and descriptions.
      dbghelp: Return TRUE in SymInitializeW if process is already initialized and add an ERR to SymCleanup.
      dbghelp: Wrap TRACE strings using the debugstr functions and update some type casting.
      dbghelp: Some minidump corrections so that windbg can read our minidump files.
      dbghelp: Fix file searching to search only listed directories instead of the whole HD.
      dbghelp: Prevent huge minidumps by ensuring the memory range is clamped.

Francois Gouget (11):
      gdi32: Small wording tweaks in comments.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      Fix spelling error in the generated conformance test files.
      include: Document some Microsoft spelling mistakes so we know they are not to be fixed.
      kernel32/tests: Small spelling fix in a parameter name.
      Assorted spelling fixes.
      advapi32/tests: Actually test strings that expand to something bigger than their original size.
      advapi32/tests: Add the trailing '\n' to an ok() call.
      kernel32/tests: Test the expansion of indirect environment variable references.
      winemenubuilder: Expand environment variable references in the shortcut's WorkDir, Description and IconPath fields.
      Assorted spelling fixes.

Gerald Pfeifer (3):
      wininet: Fix type of a loop variable in HTTP_BuildHeaderRequestStr().
      kernel32: Fix type of a loop variable in SNOOP16_Entry().
      kernel32: Use setproctitle where applicable to set the process name.

Gregor Münch (1):
      msxml3: Fix typo.

Hans Leidekker (9):
      license: Update copyright info for the new year.
      msvcrt: Fix _execv spec entries for the forwarding variants too.
      msvcrt: _ftol returns a 64-bit value.
      msvcr71: Add an implementation that forwards to msvcrt.
      gdi32: Last parameter of GetICMProfile is an output parameter.
      gdi32: Make GetICMProfile behave more like native. Rewrite ansi version as a wrapper and move color management functions to their own file.
      gdi32: Add tests for GetICMProfile and SetICMMode.
      mscms: Use NT directory for storing color profiles.
      mscms: Open .icm files only when enumerating color profiles.

Jacek Caban (9):
      shdocvw: Added DWebBrowserEvents2 test.
      shdocvw: Call OnFullScreen in put_FullScreen.
      shdocvw: Call WindowSetResizable in put_Resizable.
      shdocvw: Call StatusTextChange in set_status_text.
      shdocvw: Store URL in BindStatusCallback.
      shdocvw: Use more flexible mechanism instead of WB_WM_NAVIGATE2.
      shdocvw: Delay creating URL moniker to bind_to_object call.
      shdocvw: Do navigation in message handler.
      shdocvw: Store headers as BSTR.

James Hawkins (3):
      msi: dest_path refers to the directory prefix, not the entire file path.
      propsys: Add a stub implementation of propsys.dll.
      msi: Add more MsiFormatRecord tests.

Jason Green (1):
      d3d9 tests: Correct some typos.

Jonathan Ernst (1):
      loader: Updated French man page.

Juan Lang (4):
      wintrust: Don't expect ImageGetCertificateData to succeed when Certificate is NULL.
      crypt32: Don't release default crypto provider on process shutdown.
      crypt32: Fix race condition in loading default provider.
      hhctrl.ocx: Don't return uninitialized stream.

Kai Blin (1):
      gdi32: Fix spec file to export the right symbols for GetGlyphOutline.

Ken Thomases (1):
      winex11.drv: Accomodate XGetWindowProperty returning an actual format of something other than 32 for the TARGETS property.

Lei Zhang (1):
      ddraw: Register the DirectDraw 7 Object.

Marcus Meissner (13):
      server: Enumerate process in reverse.
      mshtml: Check for This->frame.
      wined3d: Check for overflows.
      urlmon: Skip pstgmed related tests if NULL.
      wmi: Initial version of wmi.dll.
      gdi32: Fix possible NULL ptr in TRACE.
      msi: Replaced msi_free() by LocalAlloc() since ConvertSidToStringSidW uses LocalAlloc().
      wined3d: Removed deadcode.
      cmd: Include <time.h> for time().
      wined3d: Initialize swapchain.
      rpcrt4: Initialize CurrentHeader.
      d3d9/tests: Initialize decl.
      wininet: Check if buffer has overflowed potentially.

Michael Stefaniuc (3):
      winedump: Do not create a header file when not generating skeleton code.
      winedump: Use the DEFINE_THISCALL_WRAPPER macro instead of the GET_THIS macro for functions with __thiscall calling convention.
      winedump: Use a switch in the generated DllMain().

Pablo Spallanzani (1):
      wined3d: Fix texture coordinate calculation in surface_blt_to_drawable.

Paul Chitescu (1):
      mscoree: Semi-stub for LoadStringRCEx and LoadStringRC.

Paul Vriens (6):
      kernel32/tests: FindFirstVolumeA is not available on win98.
      advapi32/tests: Make tests run on win9x/NT4 again.
      user32/tests: Run full test again on win95 and NT4.
      msi/tests: Only use functions if they are implemented.
      msi/tests: Only use functions if they are implemented.
      kernel32/tests: Win9x returns a different last error.

Reece H. Dunn (5):
      user32: Make the clipboard tests pass on Vista.
      user32: Make the class tests pass on Vista.
      user32: Make the edit tests pass on Vista.
      gdi32: Vista returns UNICODE_NOCHAR if a character does not exist.
      advapi32: Fix some cred test failures on Vista and prevent it crashing.

Rob Shearman (41):
      include: Flesh out winhttp.h with more function declarations, typedefs and defines.
      rpcrt4: Allocate a context handle if a NULL GUID is being unmarshalled.
      rpcrt4: Add support for calculating the memory size of complex types with embedded non-conformant strings.
      rpcrt4: Don't print fixmes for NDR types without a freeing function.
      rpcrt4: Add traces to the start of TowerConstruct and TowerExplode.
      winhttp: Add a stub for WinHttpOpen.
      rpcrt4: Fix the calculation of element sizes for complex arrays by using a new function ComplexStructSize that doesn't touch the buffer to calculate the size.
      rpcrt4: Handle complex arrays in calc_arg_size.
      rpcrt4: The initialisation of [out] variables in the stubless code must be after the unmarshaling of [in] and [in, out] variables has been completed.
      mlang: Implement Rfc1766ToLcidW.
      rpcrt4: Allow NULL networkaddr and endpoint in rpcrt4_np_get_top_of_tower.
      ole32: Partially implement ServerRpcChannelBuffer_GetDestCtx.
      rpcrt4: Move the setting of retval_ptr outside of any particular stub phase in stub_do_args and stub_do_old_args.
      rpcrt4: Add tests for RPC_FC_P_DEREF|RPC_FC_P_ONSTACK pointers.
      comctl32: Keep on displaying the last frame of the animation after the animation has stopped.
      comctl32: Support seeking to a particular frame.
      rpcrt4: Add an exception handler for stubless object proxies.
      rpcrt4: Only initialise the context handle to NULL in NdrContextHandleUnmarshall if it is an out-only or return one.
      iphlpapi: Implement GetBestInterfaceEx.
      kernel32: Initialise the top 16-bit stack frame to zero.
      widl: Write out code for initialising out-only client context handles.
      riched20: The wParam parameter to WM_GETTEXT contains the number of characters, not the number of bytes.
      riched20: Always treat the nCount variable in the EM_GETTEXTEX handler as a character count.
      rpcrt4: Implement asynchronous RPC support.
      rpcrt4: Move the receiving of an individual fragment to a separate function.
      rpcrt4: Remove some unimplemented win9x-only spec entries.
      rpcrt4: Don't set BufferStart and BufferEnd in NdrStubCall2.
      ole32: Don't get the HRESULT from the buffer if we get an RPC_S_CALL_FAILED status back from the runtime.
      advapi32: Add more tests for SetEntriesInAcl.
      ntdll: Fix the index check in RtlGetAce.
      advapi32: Implement SetEntriesInAclW.
      advapi32: Add a test for LookupAccountNameA on a well-known group.
      advapi32: Implement LookupAccountNameW for well-known groups.
      rpcrt4: Fix the error handling in RpcBindingSetAuthInfoA/W when RpcAuthInfo_Create fails.
      rpcrt4: Pass the SPN input to RpcBindingSetAuthInfoA/W into InitializeSecurityContextW instead of AcquireCredentialsHandleA/W.
      rpcrt4: Check the return value of RPCRT4_ClientAuthorize in RPCRT4_Send.
      credui: The list should be the first parameter to the list_add_tail function.
      credui: Return the state of the dialog's save checkbox to CredUIPromptForCredentials.
      ntdsapi: Add tests for DsMakeSpnW.
      ntdsapi: Implement DsMakeSpnW.
      wininet: Pass the server name into InitializeSecurityContextW.

Roderick Colenbrander (2):
      wined3d: Fix glBlendColorEXT for use on RivaTNT.
      wined3d: Don't use texture_rectangle for paletted textures.

Roy Shea (1):
      qmgr: Implement IClassFactory methods.

Sin-ta Hsiea (2):
      gdi32: Fix Traditional Chinese font mapping to "PMingLiU", "MingLiU".
      winecfg: Add Traditional Chinese translation.

Stefan Dösinger (15):
      wined3d: Add a new IWineD3DResource::UnLoad method.
      wined3d: Implement IWineD3DSurface::UnLoad.
      wined3d: Implement IWineD3DVertexBuffer::UnLoad.
      wined3d: Implement IWineD3DIndexBuffer::UnLoad.
      wined3d: Implement IWineD3DVolume::UnLoad.
      wined3d: Implement IWineD3DTexture::UnLoad.
      wined3d: Implement IWineD3DCubeTexture::UnLoad.
      wined3d: Implement VolumeTexture::UnLoad.
      d3d9: Reject IDirect3DDevice9::Reset with active default pool resources.
      wined3d: Unload all resources on Reset.
      wined3d: Keep track of shaders.
      wined3d: Reset the shader state on shader_*_destroy.
      wined3d: Destroy arb shaders on shader destroy.
      wined3d: Destroy opengl shaders on reset.
      wined3d: Clear the constant list before finding constants.

Stefan Leichter (1):
      advapi32: Added some tests for QueryServiceConfig2A/W.

Tony Wasserka (1):
      d3dx9: Start implementation of d3dx9_36.

--
Alexandre Julliard
julliard@winehq.org
