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

What's new in this release:
  - MSI automation with JScript/VBScript support.
  - Various MSHTML improvements.
  - The usual assortment of Direct3D fixes.
  - Support for a few more exe protection schemes.
  - 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.37.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.37.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.36:

Alexandre Julliard (24):
      winebrowser: Don't output debug traces by default.
      server: Give system APCs priority over signaled objects.
      kernel32: Don't skip directory symlinks when looking for a specific file.
      widl: Don't declare a global binding handle when using an implicit handle.
      server: Store valid file options in pseudo file descriptors.
      server: Infrastructure to return a wait handle for blocking ioctls.
      server: Allocate the wait event for FSCTL_PIPE_LISTEN on the server side.
      server: Allocate the wait event for FSCTL_PIPE_WAIT on the server side.
      Fix minor differences in the formatting of the license notices.
      Get rid of some empty source files, our makefiles no longer require them.
      configure: Only check for the static versions of libicu.
      kernel32: Disable FT_Thunk entry point when Windows version is NT.
      configure: Added rpath support for Solaris.
      kernel32: Set the dll file name with the correct case to make EXECryptor happy.
      configure: Fixed typo in libicu check.
      ntdll: Support setting the CPU context on the current thread without segment registers.
      server: Add support for generic device objects managed from the client side.
      server: Add support for queuing ioctl calls to a device.
      server: Add request to retrieve the next pending ioctl call for a device manager.
      server: Add support for retrieving results of queued ioctls once they are done.
      advapi32: Fix set process request, a pipe instance can only handle one request.
      psapi: Don't print output parameters as strings.
      kernel32: Fix typo in CreateActCtxA.
      server: Stop exporting the console_input structure. Get rid of console.h.

Andrew Talbot (39):
      advapi32: Exclude unused headers.
      dsound: Constify some variables.
      crypt32: Exclude unused headers.
      dswave: Constify a variable.
      compstui: Exclude unused headers.
      comdlg32: Exclude unused headers.
      gdi32: Constify some variables.
      gdi32: Constify some variables.
      dbghelp: Exclude unused headers.
      ddraw: Exclude unused headers.
      gphoto.ds: Constify a variable.
      devenum: Exclude unused header.
      dmstyle: Exclude unused headers.
      dmband: Exclude unused headers.
      dmusic32: Exclude unused headers.
      dmime: Exclude unused headers.
      dxerr9: Exclude unused header.
      kernel32: Constify a variable.
      imaadp32.acm: Constify some variables.
      dxerr8: Exclude unused header.
      dnsapi: Exclude unused header.
      dpnet: Exclude unused headers.
      dsound: Exclude unused headers.
      ifsmgr.vxd: Constify some variables.
      inseng: Exclude unused header.
      imagehlp: Exclude unused headers.
      infosoft: Exclude unused header.
      itss: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      mcicda: Exclude unused headers.
      localspl: Exclude unused headers.
      mciwave: Exclude unused header.
      mapi32: Exclude unused header.
      mscms: Exclude unused headers.
      msacm32: Exclude unused headers.
      mlang: Exclude unused headers.

Andrey Turkin (6):
      dbghelp: Zero-terminate module name in minidump.
      shlwapi: Implement IConnectionPoint_SimpleInvoke.
      hhctrl.ocx: Update HtmlHelp and its commands definitions, and partially implement data A->W translation.
      hhctrl.ocx: Do not try to dereference NULL pointer if CreateHelpViewer failed.
      hhctrl.ocx: Recognize and use topic specification in url or in data.
      shlwapi: Implement IUnknown_CPContainerInvokeParam.

Aric Stewart (2):
      ole32: Accelerators, like for the menu ones, should not fire on the keyup message.
      gdi32: GetGlyphOutline needs to look at linked fonts as well.

Ben Taylor (3):
      wineshelllink: Improve /bin/sh and awk compatibility.
      wineinstall: Use `wine --version` instead of `which wine`.
      winegcc: Allow -R and -z linker options.

Bernard Ladenthin (2):
      browseui: Implement ClassFactory_LockServer in browseui dll.
      browseui: Fixed ClassFactory_LockServer implementation.

Bill Medland (2):
      kernel32/tests: Boundary test cases for SystemTimeToFileTime and GetDateFormat.
      oleaut32/tests: Some boundary tests on VarBstrFromDate.

Damjan Jovanovic (2):
      wine.inf: Move explorer to the windows directory.
      shlwapi: Fix UrlCanonicalizeW's handling of filesystem paths.

Dan Hipschman (7):
      widl: Get rid of the typeref_t structure, simplify code.
      widl: Get rid of the tname field of var_t, simplify code.
      widl: Add string_of_type function, prettify code.
      widl: Remove redundant get_var_vt function.
      widl: Simplify make_safearray.
      widl: Remove dead code in write_msft.c.
      widl: Remove var_t's ptr_level field and start write_pointers.

Dan Kegel (1):
      advapi: Improve SetEntriesInAclA stub.

Detlef Riekenberg (8):
      localspl: Code cleanup for XcvDataPort_AddPort.
      winspool: Return the correct errorcode in OpenPrinter (Xcv).
      winspool: Avoid crash on NULL parameter (XcvOpenPort in OpenPrinter).
      localui: Implement AddPortUI.
      localui: Implement ConfigurePortUI for LPT.
      localui: Prefer builtin version.
      localui: Add German resources.
      ddraw/tests: Fix typos in messages.

Dmitry Timoshkov (6):
      comctl32: Remove a stray back slash.
      riched20: Add the tests for EM_SETTEXTEX/EM_GETTEXTEX in addition to WM_SETTEXT/WM_GETTEXT, make them pass under Wine.
      gdi32: Handle errors in WineEngAddFontResourceEx.
      gdi32: AddFontResource should return a number of added font faces.
      advapi32: Add FILE_FLAG_BACKUP_SEMANTICS to the flags passed to CreateFileW to be able to get security information for directories as well as for files.
      user32: Windows doesn't send the initialization messages to a dialog if a passed in dlgProc is NULL.

Emmanuel Maillard (4):
      winecoreaudio: Handle non System Exclusive messages.
      winecoreaudio.drv: MIDIIn_MessageHandler: Remove a TRACE and simplify skipping SysEx.
      winecoreaudio.drv: Create only one MIDIOutPort and one MIDIInPort for all destinations and sources.
      winecoreaudio.drv: Implement MIDIOut_Data when device is a MOD_MIDIPORT.

Eric Pouech (2):
      kernel32: Implemented CreateActCtxA on top of CreateActCtxW.
      kernel32: Set the new definition for an activation context, and implement adding/releasing references to it.

Francois Gouget (8):
      d3drm/tests: Add missing '\n' to ok() calls.
      d3drm: Fix compilation on systems that don't support nameless unions.
      msi/tests: Add missing '\n' to ok() call.
      Assorted spelling fixes.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      msi/tests: Add missing '\n' to ok() calls.
      crypt32: Add missing '\n' in FIXME() call.
      wined3d: Add a missing '\n' to a trace.

H. Verbeet (16):
      wined3d: Flip the coordinate system rather than the coordinates itself for onscreen surfaces in stretch_rect_fbo.
      wined3d: Make the IWineD3DDeviceImpl_ColorFill TRACE a bit more useful.
      wined3d: Bind GL_FRAMEBUFFER_EXT rather than GL_DRAW_FRAMEBUFFER_EXT in color_fill_fbo.
      wined3d: Improve a few VBO traces.
      d3d: Fix the surface locking rectangle validation.
      d3d9: Add a surface locking test.
      d3d8: Add a surface locking test.
      ddraw: Add a surface locking test.
      wined3d: Remove some redundant fields from IWineD3DBaseTextureImpl.
      wined3d: Handle the ps_3_0 vPos field.
      wined3d: Unload vertex weight data in case of EXT_VERTEX_WEIGHTING as well.
      wined3d: Calling glDisableClientState() from loadVertexData() is redundant.
      wined3d: Split texture coordinate loading from loadVertexData().
      wined3d: Load texture coordinates even if no texture is bound to that stage at this time.
      wined3d: Trace the VBO and stream number as well in drawPrimitiveTraceDataLocations.
      wined3d: WINED3DSIO_POW should use the absolute value of the first source register.

Huw Davies (2):
      oleaut32: Remove useless initialization of an [out] parameter.
      ole32: Cope with a realloc returning a different pointer.

Jacek Caban (12):
      mshtml: Fix offset in OnDataAvailable call.
      mshtml: Remove auto detection of Mozilla and Mozilla ActiveX control.
      mshtml: Reimplement IHTMTxtRange on top of nsIDOMRange.
      mshtml: Added IHTMLTxtRange::get_htmlText implementation.
      mshtml: CGID_Undocumented is CGID_DocHostCmdPriv.
      mshtml: Added IHTMLBodyElement::CreateTextRange implementation.
      mshtml: Split code from OnDataAvailable.
      mshtml: Don't crash in OnStopBinding if This->binding is null.
      mshtml: Move AddRequest call to the separated function.
      mshtml: Split IPersistMoniker::Load.
      mshtml: Added IPersistStreamInit::Load implementation.
      mshtml: Added IPersistStreamInit::Load test.

James Hawkins (14):
      msi: Add tests that show that costing is run in both the UI and Execute sequences.
      msi: Reset the folder's resolved target before setting the target in CostFinalize.
      msi: Run the costing actions for both the UI and execute sequences.
      msi: Only allow valid styles in msi_dialog_get_style.
      msi: Add the ES_AUTOHSCROLL style to the edit control.
      msi: Set the text limit of the edit control if the limit is given.
      msi: Remove incorrect ERR as messages can be sent before the control is created.
      msi: Remove debugging printf statements.
      msi: Add stub handlers for the remaing standard actions that reference tables.
      msi: Add handling for the ReinstallMode control event.
      msiexec: /quiet is the same options as /qn.
      msi: Check the volume name when changing media.
      msi: Deformat the key path before opening the key.
      msi: Only check the volume label for every media after the first disk.

Jason Edmeades (1):
      xcopy: Output to console in Unicode if possible, or OEM codepage otherwise.

José Manuel Ferrer Ortiz (1):
      Some Spanish translation updates.

Juan Lang (4):
      wintrust: Fix typo.
      wintrust: Implement WintrustLoadFunctionPointers.
      wincrypt.h: Add missing definitions.
      crypt32: Implement CertEnumSystemStore.

Ken Thomases (1):
      winebrowser: Don't put the default mailers or browsers into the registry.

Kevin Koltzau (1):
      winbase.h: Define FILE_FLAG_OPEN_REPARSE_POINT.

Kirill K. Smirnov (4):
      server: Fix access check in screen buffer handling.
      kernel32/tests: Add tests for console screen buffer.
      server: Move console codepages to the server.
      kernel32/tests: Add tests for console codepages.

Konstantin Kondratyuk (1):
      ntdll: Correct a copy/paste mistake in NtWriteFile.

Laurent Vromman (1):
      gdi32: Complete WidenPath implementation.

Louis Lenders (2):
      kernel32: Add stub for BindIoCompletionCallback.
      gdi32: Add check for null pointer in SetDIBitsToDevice.

Maarten Lankhorst (2):
      winealsa: Improve sound mixer detection.
      winmm: Use criticalsection for determining wether timer is synchronously killable.

Marcus Meissner (3):
      riched32: Avoid implicit time().
      server: set_server_state needs to be called with non-NULL server.
      msi/tests: Increase buffer size a bit.

Mikołaj Zalewski (4):
      user32: Fix TabbedTextOut.
      comctl32: treeview: Make the focus test pass under Windows XP.
      comctl32: treeview: Treeviews shouldn't be sending NM_TOOLTIPSCREATED (with testcase).
      shell32: Handle invalid cbSize in Shell_NotifyIcon[AW].

Misha Koshelev (32):
      msi: Add OLE automation conformance test.
      msi: Merge OLE automation conformance tests.
      msi: Add base class for OLE automation objects.
      msi: Expand IDL file to contain some OLE automation interface functions.
      msi: automation: Implement Record::StringData.
      msi: automation: Implement View::Execute, Fetch, and Close.
      msi: automation: Implement Database::OpenView.
      msi: automation: Implement a few functions from the Session object.
      msi: automation: Implement Installer::OpenPackage.
      msi: automation: Expose Installer object.
      msi: Added handlers for JScript/VBScript actions that call one script function.
      msi: Add JScript/VBScript support.
      msi/tests: automation: Free memory after string conversion.
      msi/tests: automation: Convert method names to Unicode on the fly to simplify adding new tests.
      msi/tests: automation: Integrate test_createrecord_and_version properly.
      msi: script: Discriminate properly between JScript and VBScript.
      msi/tests: automation: Session::Installer conformance test.
      msi: automation: Store parent Installer object in Session.
      msi: automation: Implement Session::Installer.
      msi: automation: Use proper parameter names.
      msi: automation: Generalize interface-specific data storage in AutomationObject.
      msi/tests: automation: Add tests for Installer::Products and Installer::ProductState.
      msi: automation: Implement Installer::Products and Installer::ProductState.
      msi: automation: Output FIXMEs for unknown member names.
      msi/tests: automation: Add test for Installer::RegistryValue.
      msi/tests: automation: Simplify ok_exception.
      msi: automation: Clear all VT_BSTR variants returned by DispGetParam.
      msi: automation: Display errors on create_automation_object failure.
      msi: automation: Move VariantClears out of specific case statements when possible.
      msi: automation: Display an error on create_session failure.
      msi/tests: automation: Add more tests for Installer::RegistryValue.
      msi: automation: Implement Installer::RegistryValue.

Mounir IDRASSI (6):
      advapi32: Check for error in CryptEnumProviderTypesA and CryptEnumProvidersA.
      wincrypt.h: Add missing definitions.
      rsaenh: Fix read_key_container bug that prevents CryptAcquireContext from correctly loading the keys.
      rsaenh: Use the correct registry key in RSAENH_CPAcquireContext.
      crypt32: Correct the implementation of CertCreateSelfSignCertificate.
      rsaenh: Add support for mandatory parameters to RSAENH_CPGetProvParam.

Paul Vriens (3):
      setupapi/tests: SetupQueryInfOriginalFileInformationA is not available on win98.
      msi/tests: Properly cleanup after each test.
      d3drm/tests: d3drm is removed from Windows Vista.

Peter Oberndorfer (3):
      ntdll: Call NtQueryAttributesFile in RtlDoesFileExists_U.
      ntdll: Use correct prototype for thread function.
      rpcss: Use correct prototype for thread function.

Rob Shearman (26):
      dsound: Implement QueryInterface for the class factory objects.
      dsound: Implement QueryInterface for KsPropertySet objects.
      winex11.drv: Remove an unneeded include.
      rpcrt4: Print the correct values when warning about a bad frag length.
      atl: Implement AtlComQIPtrAssign.
      atl: Add stubs for AtlIPersistStreamInit_Load and AtlIPersistStreamInit_Save.
      setupapi: SetupCopyOEMInfW should preserve the basename when copying the inf file to the inf directory if possible.
      ole32: Remove an unnecessary QueryInterface in CoRegisterClassObject that CoMarshalInterface will already do.
      setupapi: The inf file containing the SourceDisksFiles and SourceDisksNames sections is the same as hinf if there is no layout file specified.
      setupapi: Add stubs for SetupQueryInfOriginalFileInformationA/W.
      setupapi: Partially implement SetupQueryInfOriginalFileInformationW.
      ole32: CoGetClassObject shouldn't return REGDB_E_KEYMISSING, so convert it to REGDB_E_CLASSNOTREG.
      ole32: Add test for registered class becoming invalid when apartment is destroyed.
      ole32: Revoke registered class objects when the apartment they were registered in is destroyed, not when the last CoUninitialize is called.
      ole32: Add tests for in-process registered class objects not being visible from different apartments.
      ole32: COM_GetRegisteredClassObject should only retrieve objects that were registered in the current apartment.
      ole32: Split CoRevokeClassObject into a separate function, COM_RevokeRegisteredClassObject, which acts on a RegisteredClass object.
      ole32: Fix CoRevokeClassObject to return RPC_E_WRONG_THREAD if it was called from a different apartment than the one that called CoRegisterClassObject.
      ole32: Add documentation about registered class objects only being visible in the apartment in which they were registered.
      ole32: Add documentation for error info functions.
      ole32: Add a test for the retrieved local class object in another thread being a proxy.
      ole32: Don't release the drop target on process uninitialisation if not revoked, just release the memory.
      setupapi: Don't copy an OEM inf file if the exact same OEM inf file already exists.
      setupapi: Improve the stub for SetupQueryInfOriginalFileInformation
      ole32: Move the logic in StgCreateDocfile for "if no share mode given then DENY_NONE is the default" to before the validateSTGM check.
      setupapi: SetupOpenInfFile returns INVALID_HANDLE_VALUE on failure, not NULL.

Rolf Kalbermatter (4):
      advapi32: Store process ID into status structure on startup.
      advapi32: Add prototypes for EnumServicesStatusExA/W.
      advapi32: Implement GetServiceDisplayNameA.
      advapi32: Implement GetServiceDisplayNameW.

Stefan Dösinger (42):
      ddraw: Search for d3d primary a bit differently.
      ddraw: Do not access the surface connection structure directly in SetPalette.
      ddraw: Move the additional surface creation into a seperate function.
      ddraw: Complex surfaces form a tree.
      ddraw: Add a test for surface attachments.
      ddraw: Store a WineD3DBaseTexture instead of a WineD3DTexture.
      d3d: Pass the cube face to Create*Texture's surface creation callback.
      ddraw: Cube texture support.
      ddraw: Cube map structure test.
      ddraw: Update the wined3d depth stencil on device creation, render.
      wined3d: Add missing prototypes for GL_ARB_vertex_blend.
      d3d: Calculate the size of WINED3DFVF_XYZBx FVFs.
      ddraw: Forward all 4 world matrices to wined3d.
      wined3d: Implement vertex blending using GL_ARB_vertex_blend.
      ddraw: Fix reported caps on compressed surfaces.
      wined3d: Full surface DXTn copy.
      ddraw: Adjust the d3d viewport when changing the back buffer.
      ddraw: Primary surfaces always have screen size.
      d3d: Move clippers from DDraw to wined3d.
      wined3d: Make the blit -> flip work for windowed rendering.
      ddraw: Forward the mag filter correctly to wined3d.
      wined3d: Handle DDPCAPS_ALPHA.
      wined3d: Fix front buffer coords for gdi surfaces.
      wined3d: Unset the StreamIsUP flag in ProcessVertices.
      wined3d: Report only D16, D24S8 and D24X8 depth stencil formats as supported.
      wined3d: Implement environment bump mapping with GL_ATI_envmap_bumpmap.
      ddraw: More tests and fixes on surface attachments.
      wined3d: Some more ProcessVertices fixes.
      ddraw: Some caps fixes.
      wined3d: Unload vertex weight data in unloadVertexData.
      wined3d: Support bump environment mapping using GL_NV_texture_shader.
      ddraw: Always set fullscreen mode in wined3d.
      ddraw: Fix stupid bug when setting surface client memory.
      wined3d: Manage private data in a wine linked list.
      ddraw: Remove all non-d3d7 capability flags.
      ddraw: Use point filter for blit operations.
      ddraw: GetSurfaceDesc returns the surface memory while the surface is locked.
      wined3d: Destroying the resource frees all private data.
      wined3d: Implement DDBLT_DEPTHFILL on the active depth stencil target.
      ddraw: Avoid fallout of failing tests.
      wined3d: Only addref clippers if one exists.
      wined3d: Prevent wrong bumpenvmap warnings.

Stefan Leichter (1):
      advapi32: Fix initial cleanup of the registry keys used for testing.

Thomas Spear (2):
      uninstaller: Fix trace message.
      regedit: Spelling and grammar fixes.

Tim Schwartz (1):
      net.exe: Initial stub.

Vitaliy Margolen (2):
      ntdll: Use correct full access bitmask in NtQuerySecurityObject.
      kernel32: Fix off by one error.

--
Alexandre Julliard
julliard@winehq.org
