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:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.47.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.47.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.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
julliard@winehq.org
