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

What's new in this release:
  - OpenGL in child windows should work again.
  - Better mouse support in games.
  - Beginnings of new state management in Direct3D.
  - Improved audio and font support on Mac OS.
  - 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.28.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.28.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.27:

Alex Villacís Lasso (2):
      oleaut32: Bypass conversion to string in R4/R8 -> DECIMAL conversion.
      oleaut32: VarBstrFromCy - Remove use of sprintfW by converting a CY

Alexandre Julliard (27):
      shell32: Avoid using garbage data in wildcard expansion.
      winex11.drv: Remove unused PropertyAliasMap variable.
      winex11.drv: Make sure the drawable rect is always updated and use it where appropriate.
      winex11.drv: Implemented DESKTOPHORZ/VERTRES device caps.
      gdi32: Use a more appropriate size for the default clip region.
      winex11.drv: Get rid of the unused set_drawable function.
      opengl32: Avoid generating a wrapper for internal functions when we can call the internal one directly.
      opengl32: Don't use ENTER_GL/LEAVE_GL around calls to driver functions.
      winex11.drv: Get rid of the display pointer in the GL context.
      winex11.drv: Fixed computation of viewport and scissor position.
      ntdll: Map the PE header up to the specified size, and clear the rest of the page.
      msi: Fix the condition test to not assume MsiNetAssemblySupport is empty.
      Revert "msi: Comparisons with null in conditions are special."
      msvcrt: Make pointers to read-only exception descriptors const.
      msvcrt: Implemented __CxxLongjmpUnwind.
      configure: Remove some no longer used libcurses checks.
      msvcrt: Define __CxxLongjmpUnwind for i386 only.
      configure: Re-generated with autoconf 2.61.
      ntdll: Fixed typo in map_image.
      winedbg: Fixed a few data types.
      winedbg: Win64 printf format fixes.
      include: Get rid of the WINE_NO_LONG_AS_INT ifdefs.
      ntdll: Fix the libdl refcount when loading the same builtin twice.
      loader: Try to detect glibc 2.3 without NPTL or TLS and print a warning.
      shell32: Don't hardcode the system32 directory in registered classes.
      ntdll: File positions should be aligned to sector boundaries in PE loader.
      ntdll: Added support for physically ejecting devices on Mac OS.

Andrew Talbot (22):
      kernel32/tests: Cast-qual warnings fix.
      dmime: Dangling references fix.
      dmloader: Dangling references fix.
      dmstyle: Dangling references fix.
      gdi32/tests: Cast-qual warning fix.
      mapi32/tests: Cast-qual warnings fix.
      mapi32/tests: Cast-qual warnings fix.
      cryptdll: Change storage class of module handle to static.
      msi/tests: Cast-qual warning fix.
      msvcrt/tests: Cast-qual warnings fix.
      msvcrt/tests: Cast-qual warnings fix.
      ntdll/tests: Cast-qual warning fix.
      msvcrt/tests: Cast-qual warnings fix.
      rpcrt4/tests: Cast-qual warnings fix.
      secur32/tests: Cast-qual warnings fix.
      version/tests: Write-strings warning fix.
      progman: Cast-qual warnings fix.
      winecfg: Cast-qual warning fix.
      winhelp: Cast-qual warnings fix.
      server: Cast-qual warnings fix.
      server: Cast-qual warnings fix.
      gdi32: Remove unused function.

Chris Robinson (3):
      wined3d: Reduce the number of error messages.
      wgl: Properly handle GLX_DRAWABLE_TYPE queries.
      d3d: Fix adapter mode enumeration and filtering.

Christoph Frick (5):
      dinput: Silently ignore DIPROP_CALIBRATIONMODE.
      dinput: Ensure that the size of the dev caps pointer is large enough - no exact.
      dinput: Utilize IDirectInputDevice2AImpl_Acquire/Unacquire.
      dinput: Set the correct size for the old dinput joystick.
      dinput: Drop magic int.

Clinton Stimpson (5):
      usp10: Add tests and fix for ScriptXtoCP .
      usp10: Implement ScriptStringAnalyse.
      usp10: Implement ScriptStringFree.
      usp10: Implement ScriptStringXtoCP.
      usp10: Implement ScriptStringCPtoX.

Detlef Riekenberg (7):
      localspl/tests: Add tests for XcvOpenPort.
      localspl/tests: Add tests for XcvClosePort.
      localspl/tests: Add tests for XcvDataPort.
      localspl/tests: Fix copy+paste typo.
      localspl/tests: Rename unclear string.
      winspoool/tests: Rename unclear string.
      winspoool/tests: Build the name of the local print server in a separate function.

Dmitry Timoshkov (23):
      kernel32: Add the data that mimics the PE image which upack creates.
      wineoss: Make some data const.
      atl: Make some data const.
      dbghelp: Make some data const.
      dmime: Make some data const and static.
      winearts: Make some data const.
      dplayx: Make some data const.
      crypt32: Make some data const.
      dswave: Make some data const.
      msvcrt: Make some data const.
      rpcrt4: Make some data const.
      rsaenh: Make some data const and static.
      wined3d: Make some data const.
      secur32: Make some data const.
      ddraw: Fix warnings.
      ddrawex: Avoid not necessary casts.
      user32: Add support for the VK_APPS (Menu) key.
      user32: Center the context menu if it was activated via VK_APPS like Windows does.
      winedump: Fix a couple of typos.
      winedump: Remove a redundant ';'.
      kernel32: Add a minimal PE image that XP is able to load.
      kernel32: Fix a typo.
      user32: Add a message test for various ShowWindow() calls, fix some failures.

Eric Pouech (1):
      dbghelp: Sparse array speed up.

Francois Gouget (19):
      msvcrt: The tests link with msvcrt(d).dll now, so use GetModuleHandle() rather than LoadLibrary().
      ole32: Fix named/nameless union compilation error.
      shell32/tests: MSDN says ShellExecute() == 32 indicates an error. So fix the tests.
      shell32/tests: Add FindExecutable() tests.
      shell32: Fix FindExecutable() to return the executable path,  not the whole command.
      shell32: Add some documentation for FindExecutableW().
      shell32: Fix FindExecutableW() to not check if lpResult after using it. It's supposed to cause a segfault anyway.
      shell32: Replace numeric literals with the proper constant.
      comctl32/tests: Replace some '#if 0's with 'if (0)'s.
      localspl/tests: Replace some '#if 0's with 'if (0)'s.
      advapi32/tests: Replace an '#if 0' with an 'if (0)'.
      shlwapi/tests: Replace some '#if 0's with 'if (0)'s.
      version/tests: Replace some '#if 0's with 'if (0)'s.
      user32/tests: Replace some '#if 0's with 'if (0)'s.
      ole32/tests: Replace some '#if 0's with 'if (0)'s.
      comdlg32: Fix PrintDlg(NULL) and reenable a test that was in an '#if 0'.
      Assorted spelling fixes.
      kernel32/tests: Test loading and unloading of builtin dlls.
      setupapi: Fix handling of 'CopyFiles=@file'.

Günther Brammer (2):
      ddraw: Fix IDirectDrawSurfaceImpl_SetColorKey to also change surface_desc.
      ddraw: Add a test for IDirectDrawSurface_SetColorKey.

H. Verbeet (4):
      wined3d: Allow the device to store multiple render targets.
      wined3d: Move storing the render target from ActiveRender to SetRenderTarget.
      wined3d: Allow the FBO code to handle multiple render targets.
      wined3d: Allow wined3d to handle multiple render targets.

Hans Leidekker (6):
      shell32: Add a stub implementation for SHLoadNonloadedIconOverlayIdentifiers.
      mscoree: Take advantage of an installed Mono for Windows to run .NET applications.
      mscoree: Add a stub implementation for CorExitProcess and GetRequestedRuntimeInfo.
      setupapi: Add a stub implementation for SetupPromptReboot.
      ws2_32: Implement the SIO_ADDRESS_LIST_QUERY ioctl.
      winedump: Start dumping .NET specific bits from PE executables.

Huw Davies (3):
      gdi32: Improve the fontconfig filtering hack so that Mac suitcase fonts get through.
      gdi32: Actually create the Wine fonts key if it doesn't exist.
      gdi32: Extract the constituent TrueType files from Mac suitcase fonts into the user's caches directory

Jacek Caban (15):
      mshtml: Added alert implementation.
      mshtml: Use HTMLWindow::alert in nsPromptService::Alert.
      urlmon: Added application/x-msdownload mime filter.
      urlmon: Use pluggable protocol in CoInternetCompareUrl.
      mshtml: Added test of CompareUrl.
      mshtml: Added beginning of IDM_PRINT implementation.
      mshtml: Added nsACString_SetData function and use it instead of nsACString_Init when we return string value.
      mshtml: Fix loading pages in containers without document.
      mshtml: Don't do anything in SetNSContainer if new container is the same as previous.
      mshtml: Fixed handling chrome protocol.
      mshtml: Set default print template in exec_print.
      shdoclc: Added print template strings.
      mshtml: Use pvaIn in exec_print.
      mshtml: Use Gecko's AsyncOpen if URI is has no nsIWineURI interface.
      mshtml: Improve loading document detection in AsyncOpen.

James Hawkins (6):
      cabinet: Close the opened file handle even in error cases.
      msi: Only cleanup event subscriptions of the dialog being closed.
      msi: Update the text control when the selection path changes.
      msi: Run the install tests from a temporary directory.
      msi: Enable cab compression and delete any resulting cabs using SHFileOperation.
      mscoree: Add a stub for GetCORSystemDirectory.

Juan Lang (1):
      kernel32: Suppress an unneeded warning.

Juris Smotrovs (1):
      user32: Extend the support for SWP_STATECHANGED for all windows.

Kai Blin (1):
      ws2_32: ws_sockaddr_u2ws should zero the sockaddr_in.sin_zero field.

Ken Thomases (17):
      winecoreaudio: Control the fprintf's by the Wine debug channel on/off settings.
      winecoreaudio: Create port for sending messages to the callback thread only once.
      winecoreaudio: Extract wodHelper_CheckForLoopBegin() from wodHelper_BeginWaveHdr().
      winecoreaudio: Simplify handling of BEGIN+ENDLOOP wave headers.
      winecoreaudio: Specialize wodHelper_BeginWaveHdr for its two callers and simplify.
      winecoreaudio: Inline & eliminate the specializations of wodHelper_BeginWaveHdr.
      winecoreaudio: Eliminate unnecessary variable, unreachable code, unused retval.
      winecoreaudio: Leave audio unit running, except when waveout device paused.
      winecoreaudio: Lift mutex lock/unlock out of wodHelper_PlayPtrNext to caller.
      winecoreaudio: Report when the render callback is just providing silence.
      winecoreaudio: Remove more mutexes from around Audio Unit calls.
      winecoreaudio: Push notify of completions from render callback to message thread.
      winecoreaudio: Change to faster non-recursive mutex.
      winecoreaudio: Merge wodReset and wodHelper_Reset.
      winecoreaudio: Move a memset out of a mutex-guarded section.
      winecoreaudio: Replace pthread mutex with OSSpinLock.
      iphlpapi: Fixed a problem with enumerating network interfaces.

Louis Lenders (1):
      msvcrt: Add _atoldbl.

Marcus Meissner (2):
      made functions and variables static in some testcases.
      Made some functions static.

Markus Amsler (13):
      d3d8: Release non implicit surfaces only if refcount is 0, with test.
      wined3d: Call the depth stencil destroy callback function.
      d3d9: Handle surface refcount forwarding in d3d9.
      d3d9: Handle volume refcount forwarding in d3d9.
      wined3d: Remove IWineD3DSurface_GetContainerParent.
      wined3d: Remove IWineD3DVolume_GetContainerParent.
      d3d9: Fix implicit surface refcounting.
      d3d: Callback infrastructure for implicit swap chain destruction in IWineD3DDevice.
      d3d9: Fix implicit swap chain refcounting.
      d3d8: Handle surface container in d3d8.
      d3d8: Handle volume container in d3d8.
      d3d9: Handle surface container in d3d9.
      d3d9: Handle volume container in d3d9.

Paul Vriens (10):
      winspool.drv/tests: Fix typo.
      winspool/tests: Make default_printer a global variable.
      winspool/tests: Don't treat having no printers as a failure.
      winspool.drv/tests: No need to return anything as we are using a global variable now.
      winetest: Show correct filenames on test.winehq.org.
      kernel32/tests: Be a bit more verbose on failure.
      shlwapi/tests: Fix typos.
      user32/tests: Make sure the tests run on NT4 again.
      usp10/tests: Make tests run on win9x and NT4 again.
      kernel32/tests: Don't use full path for executable in tests.

Peter Oberndorfer (1):
      comctl32: Fix imagelist regression from "comctl32: Remove Nx1 assumptions in ImageList_Read".

Pierre d'Herbemont (3):
      kernel32: Allow the preferred language to be different from the preferred locale on Mac OS X.
      user32: Factorize graphics driver SetParent into user32.
      kernel32: Remove unneeded headers.

Rob Shearman (15):
      ole32: Support reading and writing custom clipformats in the data cache.
      ole32: Add documentation for the user marshaling functions.
      rpcrt4: Free the resource allocated by InitializeSecurityContext when the connection is closed.
      ole32: Move the user marshal tests to usrmarshal.c.
      ole32: Implement HMETAFILE and HMETAFILEPICT user marshaling functions and add tests for these.
      ole32: Fix SetSize for HGLOBAL streams in the case of being out-of-memory.
      kernel32: Protect global alloc functions against integer overflows on the size parameter.
      ole32: Fix the HMETAFILEPICT user marshaling test to use the size
      ole32: Marshal the ORPCTHIS structure prefixed to the client data when doing ORPC calls.
      ole32: Implement CoRegisterChannelHook and call channel hook methods on the client side.
      ole32: Call ServerNotify for channel hooks.
      ole32: Call the message filter for incoming calls.
      ole32: Pass in the IID and IUnknown* of the object being executed to the server notification and message filter functions.
      ole32: Reset the message filter at the end of the message filter test.
      ole32: Send a causality ID in the ORPCTHIS header for a call.

Roderick Colenbrander (2):
      wgl: Make the WGL code independant of the number of supported pixel formats.
      winex11.drv: pbuffer detection.

Stefan Dösinger (71):
      wined3d: Implement IWineD3DDevice::Reset.
      wined3d: Move alpha states to the state table.
      wined3d: Move clipping states to the state table.
      wined3d: Move WINED3DRS_BLENDOP to the state table.
      wined3d: Move WINED3DRS_TEXTUREFACTOR to the state table.
      wined3d: Move WINED3DRS_SPECULARENABLE to the state table.
      wined3d: Move stencil states to the state table.
      wined3d: Move WINED3DRS_STENCILWRITEMASK to the state table.
      wined3d: Move fog states to the state table.
      wined3d: Make WINED3DRS_RANGEFOGENABLE a nogl state.
      wined3d: Move WINED3DRS_FOGCOLOR to the state table.
      wined3d: Move wined3drs_fogdensity to the state table.
      wined3d: Remove the unused stateblock vertex blend member.
      wined3d: Remove the unused tween factor stateblock member.
      wined3d: Set WINED3DRS_INDEXEDVERTEXBLENDENABLE to state_nogl.
      wined3d: Move WINED3DRS_COLORVERTEX to the state table.
      wined3d: Move WINED3DRS_LINEPATTERN to the state table.
      wined3d: Move WINED3DRS_ZBIAS to the state table.
      wined3d: Move WINED3DRS_NORMALIZENORMALS to the state table.
      wined3d: Move WINED3DRS_POINTSIZE to the state table.
      wined3d: Move WINED3DRS_POINTSIZE_MIN to the state table.
      wined3d: Move WINED3DRS_POINTSIZE_MAX to the state table.
      wined3d: Move point scale render states to the state table.
      wined3d: Move WINED3DRS_COLORWRITEENABLEx to the state table.
      wined3d: Move WINED3DRS_LOCALVIEWER to the state table.
      wined3d: Move WINED3DRS_LASTPIXEL to the state table.
      wined3d: WINED3DRS_SOFTWAREVERTEXPROCESSING is a nogl state.
      wined3d: Move WINED3DRS_POINTSPRITEENABLE to the state table.
      wined3d: Move WINED3DRS_WRAPx to the state table.
      wined3d: Move WINED3DRS_MULTISAMPLEANTIALIAS to the state table.
      wined3d: Move WINED3DRS_SCISSORTESTENABLE to the state table.
      wined3d: Move WINED3DRS_DEPTHBIAS to the state table.
      wined3d: Move WINED3DRS_TEXTUREPERSPECTIVE to the state table.
      wined3d: Move WINED3DRS_STIPPLEDALPHA to the state table.
      wined3d: Move WINED3DRS_ANTIALIAS to the state table.
      wined3d: Move WINED3DRS_MULTISAMPLEMASK to the state table.
      wined3d: Move WINED3DRS_PATCHEDGESTYLE to the state table.
      wined3d: Move WINED3DRS_PATCHSEGMENTS to the state table.
      wined3d: Make WINED3DRS_DEBUGMONITORTOKEN a nogl state.
      wined3d: Move WINED3DRS_POSITIONDEGREE to the state table.
      wined3d: Move WINED3DRS_NORMALDEGREE to the state table.
      wined3d: Move tesselation to the state table.
      wined3d: Move SRGBWRITEENABLE to the state table.
      wined3d: Move WINED3DRS_SEPARATEALPHABLENDENABLE to the state table.
      ddraw: Add a TRACE to GetPixelFormat.
      wined3d: D3DRS_ZVISIBLE is not supposed to return an error.
      wined3d: Clean up SetRenderState.
      wined3d: Add the state dirtification infrastructure.
      wined3d: Move render state applying to drawprim.
      wined3d: Catch nop render state changes.
      wined3d: Add missing render state function.
      wined3d: Fix a function name.
      wined3d: Add WINED3DRS_STIPPLEPATTERNxy.
      wined3d: Temporary disable nvrc junk texture skipping.
      wined3d: Add empty texture stage states to the state table.
      wined3d: Do not enable the texture dimensions in BindTexture.
      wined3d: Move WINED3DTSS_COLOROP to the state table.
      wined3d: Move WINED3DTSS_ALPHAOP to the state table.
      wined3d: Move WINED3DTSS_TEXCOORDINDEX to the state table.
      wined3d: Add a WINED3DTSS_BUMPENVSCALE stub.
      wined3d: Add a WINED3DTSS_BUMPENVLOFFSET stub.
      wined3d: Make WINED3DTSS_TEXTURETRANSFORMFLAGS a nogl state.
      wined3d: Make a WINED3DTSS_RESULTARG stub.
      wined3d: Make WINED3DTSS_CONSTANT a nogl state.
      wined3d: Catch nop SetTextureStageState calls.
      wined3d: Add empty sampler entries to the state table.
      wined3d: Move samplers to the state table.
      wined3d: Catch nop sampler changes.
      wined3d: Add pixel shaders to the state table.
      wined3d: Catch nop pixel shader changes.
      wined3d: Reinstall the nvrc texture unit mapping.

Ulrich Czekalla (8):
      winex11.drv: Store window and drawable rects in X11DRV_PDEVICE.
      winex11.drv: Correctly position and clip opengl child windows.
      ddraw: Add IDirectDraw3 interface.
      Add ddrawex dll.
      winex11.drv: Avoid grabbing syslevel locks in the wrong order.
      ddraw: Initialize the IDirectDraw3 vtable.
      ddraw: IDirectDraw3 should use its own ref count variable.
      winex11.drv: Don't crash when called with a NULL gl context.

Vitaliy Margolen (22):
      dinput: Fix processing of custom format.
      dinput: Remove incorrect assumption about format.
      dinput: No need to copy default constant format. Use already defined static instead.
      dinput: Move internal function calculate_ids to where it's really used.
      dinput: Move few helper functions and standardize them.
      dinput: Move transform and offsets structures into base device class.
      dinput: Add user data format into base class. Implement SetDataFormat.
      dinput: Move joystick user data format into base class.
      dinput: Move mouse & keyboard user data format to base class.
      dinput: Remove redundant parameter.
      dinput: Use standard mouse data format instead of custom one.
      winex11.drv: Only events with MOUSEEVENTF_MOVE flag should change mouse position.
      winex11.drv: Update cached cursor position after calling hook.
      user32: ClipCursor should use virtual screen resolution for empty/invalid rects.
      wined3d: When changing display modes clip cursor to the requested display size.
      dinput: Don't return non existent keys.
      dinput: Zero out returned information struct.
      dinput: Add handling of AXISMODE property to base device object.
      dinput: Make mouse use axis mode flag set in base class. Add tests.
      winex11drv: Return cached cursor_pos in GetCursorPos().
      dinput: Use GetCursorPos() to calculate relative mouse movements.
      dinput: Warp mouse in exclusive cooperation mode only.

--
Alexandre Julliard
julliard@winehq.org
