Wine Announcement

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

What's new in this release:
  - New scheme for OpenGL support in child windows.
  - Lots of fixes for regression test failures.
  - A Tahoma replacement font.
  - 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.46:

Alexandre Julliard (26):
      msvcirt: Added stub implementation of msvcirt.dll.
      comctl32/tests: Avoid destroying a DPA twice.
      mshtml: The HTMLDocument URL is a standard WCHAR string, not a BSTR.
      msi: Avoid accessing a freed object.
      user32/tests: Compare against ASCII string first since it may not be a valid Unicode string in that case.
      shlwapi: Fix GetAcceptLanguagesA to not read past the end of the buffer.
      ntdll: Clear heap blocks also for WARN_ON(heap).
      ntdll: Remove assumptions that the subheap is at the beginning of the memory block.
      ntdll: Convert the subheap list to a standard list.
      ntdll: Make the heap structure more compatible with the NT layout.
      kernel32: Improve tracing in GlobalAlloc.
      server: Add a default access mapping function for files, and use it for devices too.
      imagehlp: Fixed UpdateDebugInfoFile definition.
      user32/tests: Replace GWL_WNDPROC by GWLP_WNDPROC.
      winenas.drv: Add workaround for INT64 type too.
      ntdll: Fix the HEAP_CreateSubHeap return value (spotted by Allan Tong).
      kernel32: Use FIELD_OFFSET instead of pointer cast.
      server: Use the file_pos_t type for file sizes and offsets in the protocol structures.
      winex11: Use ExtEscape to flush the GL drawable to the physdev.
      winex11: Don't store a physdev pointer in the GL context.
      msvcrt: Fix demangling of function pointers by maintaining the left/right distinction for type references.
      winex11: Add generic mechanism for managing WM_STATE properties.
      winex11: Set the SKIP_PAGER and SKIP_TASKBAR styles on tool windows.
      winex11: Reuse the mwm hints when computing the window X11 rectangle.
      winex11: Don't use a window manager border for a simple WS_BORDER-style border.
      kernel32: Get rid of the NLS_RegOpenSubKey function, its behavior is broken.

Andrew Talbot (11):
      msvfw32: Fix a memory leak.
      ole32: Fix some memory leaks.
      oleaut32: Fix some memory leaks.
      secur32: Fix some memory leaks.
      shell32: Fix some memory leaks.
      urlmon: Fix some memory leaks.
      winealsa.drv: Fix a memory leak.
      wined3d: Fix a memory leak.
      wineps.drv: Fix some memory leaks.
      wineps.drv: Fix some memory leaks.
      wininet: Fix a memory leak.

Andrey Turkin (3):
      dbghelp: Avoid crashing on files with bogus export table.
      libwine: Emulate MS linker stub for builtin dlls.
      wine.inf: Add Protected Storage System Provider key.

Aric Stewart (2):
      msdmo: Implement DMOGetTypes.
      msdmo: Improve registration and reading of codecs.

Chris Robinson (12):
      winex11: Store a GL-specific drawable with the window.
      wgl: Remove GL scissors/viewport override.
      winex11: Use an offscreen redirected window for child OpenGL rendering.
      winex11: Pass a display parameter when destroying glxpixmaps.
      winex11: Track async GL drawable changes.
      winex11: Use a GLXPixmap for offscreen OpenGL rendering when XComposite isn't available.
      winex11: Load and use GLX_MESA_copy_sub_buffer for swapping buffers on a GLXPixmap.
      wined3d: Prevent some console spamming.
      winex11: Create GLXPixmap for bitmaps in SetPixelFormat.
      winex11: Use the specified format for GL Bitmaps.
      winex11: Don't choose double buffered modes with gdi support.
      wined3d: Set D3DCAPS2_CANAUTOGENMIPMAP flag when supported.

Chris Spencer (1):
      wine.inf: Create psapi.dll as a fake dll.

Damjan Jovanovic (2):
      ole32: Implement win16 COCREATEGUID.
      ws2_32: Silently ignore WS_IP_DONTFRAGMENT.

Dan Hipschman (10):
      widl: Add newlines to error messages that are missing them.
      widl: Add a declonly argument to write_type_left.
      widl: Write types in the format string comments.
      widl: Correct default pointers.
      rpcrt4/tests: Make server.idl compatible with MIDL.
      widl: Make structs containing user types bogus; fix square_test_us test failure.
      widl: Allow quoted UUIDs.
      widl: Implement pointer_default functionality.
      widl: Keep track of every allocated type_t to simplify set_all_tfswrite.
      rpcrt4, widl: Make pointer layouts compatible with windows; fix conformant array tests.

Dan Kegel (3):
      msvcrt: Improve CR CR LF handling.
      msvcrt: Fix ^Z handling in text mode.
      quartz: Make clock test less flaky.

David Adam (2):
      include: Skeleton header for D3DX8.
      d3dx8: Fix the definition of D3DXVECTOR.

Detlef Riekenberg (6):
      msi: Dump the database name in a FIXME.
      winspool: Add a missing export.
      spoolss: Implement SplInitializeWinSpoolDrv.
      spoolss/tests: Add tests for SplInitializeWinSpoolDrv.
      localspl: Implement InitializePrintProvidor.
      wininet/tests: Initial tests for InternetCanonicalizeUrlA.

Dmitry Timoshkov (3):
      user32: WM_IME_SETCONTEXT messages are optional.
      gdi32: Prefer a Microsoft cmap table over other platform ones.
      user32: Add a message test for ownerdrawn listbox, make it pass under Wine.

EA Durbin (1):
      kernel32: Implement SetUserGeoID.

Francois Gouget (10):
      comdlg32/tests: Tell PageSetupDlg() not to bring up a dialog if there is no default printer.
      user32/tests: Remove an unneeded cast.
      regedit: Add support for 'regedit -' for feeding regedit from stdin.
      regedit: Add support for 'regedit /E -', to export the registry to stdout.
      winex11.drv: Remove an obsolete FIXME comment.
      winex11.drv: Add the trailing '\n' to a Wine trace.
      user32/tests: Don't use nameless unions where they are not needed.
      comctl32/tests: Fix the control's size reporting in an error message.
      pdh/tests: Fix compilation on systems that don't support nameless unions.
      Assorted spelling fixes.

Gerald Pfeifer (4):
      kernel32: Fix signedess for FreeBSD-specific implementation of GetSystemInfo().
      kernel32: Fix types for the FreeBSD implementation of GlobalMemoryStatusEx().
      winex11.drv: Move X11DRV_XRender_Installed under #ifdef SONAME_LIBXRENDER.
      mshtml: Removed unused function get_child_text_node().

H. Verbeet (1):
      d3d9: Release pixel shaders after we're done with them in the visual test.

Hans Leidekker (7):
      pdh: Implement PdhValidatePath{, Ex}{A, W}.
      pdh: Add tests for PdhValidatePath{, Ex}{A, W}.
      pdh: Serialize access to performance counters and queries.
      pdh: Implement and test PdhCollectQueryDataEx.
      pdh: Implement PdhCalculateCounterFromRawValue.
      pdh: Fix parameter handling in PdhAddEnglishCounter{A, W} and PdhCollectQueryDataWithTime.
      pdh: Skip tests when running on non-english locale.

Huw Davies (8):
      gdi32: TrueType fonts from the data directory should be added to the registry.
      gdi32: Only cache the glyph metrics when rendering to a monochrome bitmap or when just retrieving the metrics.
      gdi32: Let the WINE_GGO_GRAY16_BITMAP case load a bitmap.
      fonts: Add a Tahoma replacement. Almost entirely based on a patch by Larry Snyder.
      gdi32: Fixed a misplaced break.
      fonts: Add a very incomplete Tahoma Bold.
      comctl32/tests: Skip some font dependent tests if we don't have System or Tahoma installed.
      comctl32/tests: Don't assume that the default font height is 16 pixels.

Hwang YunSong(황윤성) (2):
      wineboot: New Korean resource.
      winecfg: Updated Korean resource.

Jacek Caban (30):
      mshtml: Remove no longer used defines.
      mshtml: Use GetWineURL in before_async_open.
      urlmon: Added IID_IBindStatusCallbackHolder to uuid.
      urlmon: Wrap callback in RegisterBindStatusCallback.
      urlmon: Added more strict QueryInterface tests.
      urlmon: Added more RegiterBindStatusCallback tests.
      urlmon: Get rid of no longer needed IHttpNegotiate wrapper.
      mshtml: Added get_tagName implementation.
      mshtml: Pass the IDispatch interface of the element right-clicked on to IDocHostUIHandler_ShowContextMenu if applicable instead of always the document's one.
      mshtml: Pass HTMLDOMNode pointer to its destructor.
      mshtml: Pass HTMLDOMNode pointer to HTMLElement's destructor.
      mshtml: Use vtbl for node destructors.
      mshtml: Move nodes' QueryInterface implementation to vtbl.
      mshtml: Move common code to separated function.
      mshtml: Return IHTMLElementCollection instead of IDispatch from HTMLElementCollection_Create.
      mshtml: Include document element in collection returned by IHTMLDocument2::get_all.
      mshtml: Added IHTMLOptionElement interface stub implementation.
      mshtml: IHTMLElementContainer::item rewrite.
      mshtml: Added IHTMLSelectElement::get_length implementation.
      mshtml.idl: Added IHTMLInputTextElement interface.
      mshtml: Added IHTMLInputTextElement interface implementation.
      mshtml: Move most code from handle_editor_load to exec_editmode.
      mshtml: Skip tests if we can't get body object - it means that there is no Gecko available.
      actctx: Rename version to assembly_version.
      shdocvw: Fixed tests on IE7.
      urlmon: Fixed test on IE7.
      mshtml: Fixed tests on IE7.
      mshtml: Move init_nsevents call from start_binding to read_stream_data to avoid race.
      mshtml: Fixed test crash on Windows.
      mshtml: Added support for installing Gecko from the local file.

James Hawkins (4):
      user32: Test the ddeml client interface.
      user32: Set client_pid to zero before initializing dde.
      user32: Move the test_ddeml_client function closer to the other ddeml client test functions.
      user32: Test the ddeml server interface.

John Klehm (3):
      msinkaut.idl: Declare the IInkCollector interface and its dependencies.
      nkobj: Use an internal header.
      inkobj: Stub implementation of IInkCollector.

Juan Lang (58):
      crypt32: Add a helper function to create a file store from an already-initialized memory store.
      crypt32: Create file store directly in CRYPT_FileNameOpenStoreW.
      crypt32: Allow file stores to support more than one type of file.
      crypt32: Implement opening file name stores from files that contain PKCS7 messages.
      crypt32: Be more strict about format of serialized store files.
      wintrust: Implement SoftpubDefCertInit.
      wintrust: Improve SoftpubLoadMessage for WTD_CHOICE_CERT.
      wintrust: In SoftpubLoadSignature, don't assume a message is present.
      wintrust: Don't warn for generic cert verify action.
      crypt32: Correct copying a signer info's attributes.
      wintrust: Add stub for WVTAsn1SpcSpOpusInfoDecode.
      wincrypt.h: Add a few more definitions.
      crypt32: Don't check decoded length against encoded length for indefinite-form sequences.
      ntdll: Fix a typo.
      wintrust: Copy time to verify from cert info.
      wintrust: Use file's creation time as time to verify.
      wintrust: Remove bad check that prevents root certificates from appearing time valid.
      wintrust: Use verify time rather than current time to check certificate chain.
      crypt32: Fix a silly variable name.
      crypt32: Improve trace.
      crypt32: Don't fail if buffer is NULL, just return required size.
      crypt32: Don't fail if a cert is invalid, Windows doesn't either (tests to follow).
      crypt32: Always set cNumOIDs.
      crypt32: Don't set ret to FALSE when it isn't checked.
      crypt32: Reduce valid usages count when removing a valid usage.
      crypt32: Add tests for CertGetValidUsages.
      crypt32: Don't assume a maximum of 32 valid usages.
      setupapi: Remove a misleading fixme.
      crypt32: Remove some tests that fail inconsistently on Windows.
      crypt32: Print values of failing time tests.
      crypt32: Add an extra pointer alignment to avoid possible memory corruption.
      softpub.h: Add missing definitions.
      wintrust: Trace input to WinVerifyTrust.
      wintrust: Add a helper function to initialize chain creation parameters.
      wintrust: Add a helper function to create a chain for a signer.
      wintrust: Implement GenericChainCertificateTrust.
      wintrust: Implement GenericChainFinalProv.
      wintrust: Add traces.
      wintrust: Add generic chain action to known actions.
      crypt32: Allow imprecision of one millisecond in time decoding to fix test failures on Windows.
      crypt32: Remove superficially different certificates.
      crypt32: Add another test to show that time validity nesting isn't checked.
      crypt32: Test encoding/decoding name constraints.
      crypt32: Implement name constraint encoding.
      crypt32: Allow either NULL or empty strings where one or the other is expected.
      crypt32: Don't check tag in AsnDecodeIntInternal, caller already checks it.
      crypt32: Implement name constraints decoding.
      crypt32: Implement name constraint checking.
      setupapi: Test SetupDiInstallClass.
      setupapi: SetupOpenAppendInfFile is implemented, so remove #if 0 around it.
      setupapi: Correct creating the class key.
      setupapi: Install more items when installing a class.
      setupapi: Add stubs for SetupDiCreateDevRegKeyA/W.
      setupapi: Implement SetupDiCreateDevRegKeyA on top of SetupDiCreateDevRegKeyW.
      setupapi: Add helper function to open a device's hardware key.
      setupapi: Don't require caller to pass a SP_DEVINFO_DATA pointer to SETUPDI_AddDeviceToSet.
      setupapi: Add a device ID member to DeviceInfo.
      setupapi: Implement SetupDiCreateDevRegKeyW.

Kai Blin (2):
      secur32: Remove hardcoded assumption that the SECBUFFER_DATA is always at index 1 for en/decrypting.
      secur32: ntlm_auth returns BH if the connection to winbindd fails.

Karl Relton (1):
      wineserver: Allow already peeked messages to merge.

Ken Thomases (1):
      ntdll: Work around a bug in Mac OS X's getdirentries().

Konstantin Kondratyuk (2):
      mpr: Implement WNetGetResourceInformation functions.
      net.exe: Add Russian resources.

Lei Zhang (1):
      comctl32: Fix monthcal hit tests.

Lionel Debroux (2):
      advapi32/tests: Fix memory leaks (found by Smatch).
      advapi32/tests: Fix a typo.

Louis Lenders (5):
      faultrep: Add stub for ReportFault.
      d3dx8: Add DllMain.
      d3dx8: Update spec file.
      wsock32: Export 3 more functions.
      wine.inf: Add 2 keys for *.chm files.

Luke Bratch (1):
      winecfg: Add more keyboard shortcuts.

Maarten Lankhorst (9):
      gdi32: Fix meaning and use of bidirectionality flags.
      gdi32: Fix 3 tiny bugs in bidi.
      dsound: Use smaller buffers for wavein capture.
      dsound: Call waveInUnPrepareHeader and waveInPrepareHeader when submitting new buffer.
      wineoss: Seperate wave-in and wave-outs shared use of a single OSS_DEVICE struct.
      dsound: Fix IDirectSoundBuffer_GetPosition.
      winmm: Set default sound driver to alsa,oss,coreaudio.
      dsound: Release buffer before reopening when buffer is too small.
      wineoss: Remove useless fixme shown on initialisation.

Marcus Meissner (8):
      kernel32: Test IsBadReadPtr/ IsBadCodePtr / IsBadWritePtr.
      mpr: Initialize lpwSystem.
      pdh: Removed superflous NULL ptr check.
      d3d9/tests: Initialize shader to NULL.
      setupapi: Use correct parameter in pointer init.
      advpack: Handle localized C:\Program Files.
      crypt32/tests: Fixed buffer overflow in encode test.
      imm32: Avoid spamming the debug output.

Mikolaj Zalewski (6):
      oleaut32: olepicture: Support loading Aldus Placable Metafiles.
      oleaut32: olepicture: When drawing metafiles set the coordinates system so that it is drawn in the correct place.
      advapi32: security: Remove unneeded FIXME.
      oleview: Don't crash if the parent type couldn't be retrieved.
      ole32: OleIsRunning should return TRUE if the class doesn't implement IRunnableObject.
      oleaut32: Function kind for dispatch interfaces should be FUNC_DISPATCH.

Misha Koshelev (1):
      urlmon: Increment/decrement reference count when internet handles are created/destroyed.

Nigel Liang (1):
      include/winsock.h: Fix parenthesis mismatch.

Reece H. Dunn (1):
      comctl32: Fixed drawing the trackbar background when themes are installed.

Rob Shearman (14):
      user32: Add tests for DefWindowProc processing the undocumented 0x3B message.
      wineboot: Add a timeout dialog when any WM_QUERYENDSESSION or WM_ENDSESSION messages take too long.
      server: Move set_security_object to handle.c and set_object_sd to object.c.
      server: Add a new get_security_object call for getting the security descriptor of an object.
      server: Use ACL_REVISION in create_default_dacl instead of MAX_ACL_REVISION since we don't use any features from later ACL revisions.
      advapi32: Implement SetFileSecurityW on top of NtSetSecurityObject.
      advapi32: Allow GetFileSecurityA/W to work on files that have been opened already with restricted sharing flags.
      server: Add a simple mapping from Unix uids to NT SIDs.
      server: Add get_sd and set_sd object operations to allow the security descriptor to be stored somewhere other than server memory, such as on disk.
      server: Add primitive support for setting and getting the security descriptor of files based on their Unix permissions.
      server: Remove an unnecessary check from file_set_fd.
      server: Only call fchmod in file_set_fd if the mode actually changed.
      oleaut32: Add a check for a test that depends on the decimal separator being a dot.
      ole32: RegisterDragDrop should return E_OUTOFMEMORY in the case that COM isn't intialised, instead of CO_E_NOTINITIALIZED.

Robert Shearman (1):
      mshtml: Set the SETUP_IS_CHROME_WRAPPER to FALSE as the embedded Gecko is always used to display content and not chrome.

Roderick Colenbrander (12):
      wined3d: CreateFakeGLContxt/ReleaseFakeGLContext doesn't need ENTER_GL/LEAVE_GL and they are making GDI calls.
      wined3d: CreateContext should not be called between ENTER_GL/LEAVE_GL.
      wined3d: Only call ENTER_GL for the parts in ActivateContext that actually need it.
      wined3d: WINAPI compile fixes.
      ddraw: Fix RegDeleteTreeA/W compile issues when building ddraw for Windows.
      wined3d: Render to the correct hwnd/hdc.
      wined3d: Make sure we receive a hw accelerated pixel format with OpenGL support.
      wined3d: Remove an unused ChoosePixelFormat line.
      wined3d: Use EXT-versions of glBlend*.
      wined3d: Merge p8 palette initialization code.
      wined3d: Fix inverse palette lookup for P8 surfaces.
      wined3d: Use a fragment shader to do P8 palette conversion in hardware.

Roy Shea (2):
      net.exe: Added missing service name.
      qmgr: Skeleton implementation of Background Intelligent Transfer Service (BITS).

Rémi Assailly (2):
      user32: Moved some 16-bit functions.
      user32: Renamed and moved SetDeskPattern.

Stefan Dösinger (17):
      wined3d: Add texreg2rgb support to arb shaders.
      wined3d: Add proper input register handling to texreg2ar/gb.
      wined3d: Implement texbeml in arb shaders.
      wined3d: Enable the mNxN implementation for pixel shaders.
      wined3d: Bem is an instruction and uses registers.
      wined3d: Reverse the position fixup if the pshader is reading vpos.
      wined3d: Take care against overwriting a source register in cmp.
      wined3d: d3d ignores the sign of the input value in the log instruction.
      wined3d: Implement the vFace register.
      wined3d: Nested loop support.
      d3d9: Do not rely on CreateVertexShader failing.
      wined3d: Clear up in Init3D if something fails.
      ddraw: Cope with Init3D failures.
      wined3d: Silently ignore setting the 0 texture on gdi surfaces.
      ddraw: Do not fail on surface creation errors, skip instead.
      ddraw: Downgrade the SetCooperativeLevel FIXME to a TRACE.
      wined3d: Add a (nested) loop test.

Stefan Leichter (6):
      ole32: Define WINE_FILEVERSION in version resource of ole2nls.dll too.
      gdi32: Define WINE_FILEVERSION in version resource of gdi.exe.
      kernel32: Define WINE_FILEVERSION in version resource of krnl386.exe.
      user32: Define WINE_FILEVERSION in version resource of user.exe.
      winecfg: Replace call to remove_path with RegDeleteTreeW.
      regedit: Replace call to delete_branch with RegDeleteTreeA.

Stéphane LOEUILLET (1):
      Fix substandard wine.desktop file.

Ulrich Czekalla (1):
      d3d9: Fix crash in texture test.

Vitaliy Margolen (3):
      dinput: Fix typo.
      winex11drv: Ignore mouse move events when position did not change only when other events are present.
      dinput: Use ClipCursor() to keep mouse from leaving the window.

Vitaly Lipatov (1):
      tools/wine.desktop: Add Name field in Russian.

Alexandre Julliard