Wine release 0.9.28

Alexandre Julliard julliard at
Fri Dec 22 10:53:09 CST 2006

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:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git or CVS
repositories. Check respectively or for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at

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
      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 at

More information about the wine-announce mailing list