This is release 0.9.40 of Wine, a free implementation of Windows on Unix. What's new in this release: - Many MSHTML improvements. - A few more sound fixes. - Many Direct3D fixes. - 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.40.tar.bz2 http://prdownloads.sourceforge.net/wine/wine-0.9.40.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.39: Alex Villacís Lasso (6): quartz: Fix video rendering sizing/positioning bugs. mciwave: Prevent division by zero when processing non-PCM codec. winealsa: Reduce writeahead to next multiple of psize greater than 512. dsound: Make test recover from failure to preserve primary buffer length after SetFormat(). dsound: Reset device playpos/mixpos on buflen change. winemp3: Announce capability to decode at 48 KHz. Alexander Nicolaysen Sørnes (3): wordpad: Use Unicode functions in more places. wordpad: Set default font effects to 0. wordpad: Remove unnecessary toolbar resizing code. Alexandre Julliard (22): kernel32: Fix VxD open code for the new NtCreateFile syntax for Unix files. winedos: Fix the device open code for the new NtCreateFile syntax for Unix files. winedbg: Added support for indirect call with absolute address. ntdll: Improved the stub behavior of NtQuerySystemInformation(SystemModuleInformation). server: Don't crash when trying to set a file lock on a device. makefiles: Build programs that link against libwine twice with appropriate rpaths. comctl32: Get rid of CharNextW/CharPrevW. Simplify some string functions. shlwapi: Get rid of CharNextW/CharPrevW. Simplify some string functions. shell32: Get rid of CharNextW. advpack: Get rid of CharPrevW. server: Make crash error message more explicit. ntdll: Use the standard exception handling for vm86 GP faults too. mapi32: Get rid of unneeded CharNextA call. crypt32: Fix incorrect usage of CharNextA. wineps.drv: List source files explicitly in the makefile to make it easier to parse. ddraw: Don't link against X libraries. crypt32: Fix an uninitialized variable compiler warning. msi: Avoid some redundant checks in MsiCloseHandle. wrc: Strip C code based on the name of the include file. wpp: Don't suppress output from C include files, that's up to the user. ntdll: Don't print traces from async I/O callbacks. ws2_32: Don't print traces from async I/O callbacks. Andrew Talbot (11): msi: Name all or none of the formal arguments in function prototypes. msvidc32: Constify some variables. netapi32: Constify some variables. d3d9/tests: Fix use of uninitialized variable (Coverity). msi: Fix use of uninitialized variable (Coverity). ntdll: Constify some variables. ntdll: Constify some variables. ntdll: Constify some variables. ntdll: Constify some variables. ntdll: Constify some variables. ole32: Constify some variables. Aric Stewart (1): riched20: Make richedit control IME aware. Damjan Jovanovic (1): winex11.drv: Added better support for the X file drag protocol. Dan Hipschman (13): rpcrt4: Add encapsulated union tests. rpcrt4: Remove inaccurate comments. rpcrt4: Fix bug calculating union switch type. rpcrt4: Fix typo in union buffer size calculation. widl: Add tests for arrays of pointers. widl: Fix warnings about unused function parameters. widl: Check for interface pointers in pointer handling. widl: Check for user types when calculating buffer size. widl: Get simple enums working. widl: Fix crash dealing with anonymous unions. rpcrt4/tests: Wrap a try/except block around tests. rpcrt4: Allow enums as union switch types. widl: Allow enums as union switch types. David Adam (1): wordpad: French translation for the view item. Detlef Riekenberg (10): winspool/tests: Add tests for AddPortEx. localspl/tests: Add tests for AddPortEx. printui: Add stub for printui.dll. printui: Add version resource. ntprint: Add a stub for ntprint.dll. ntprint: Add version resource. ntprint: Implement PSetupCreateMonitorInfo. ntprint/tests: Add initial test. ntprint: Implement PSetupEnumMonitor. ntprint/tests: Add tests for PSetupEnumMonitor. Dmitry Timoshkov (4): user32: Insert menu item only after contents of the passed in menu item info have been verified. user32: When inserting a menu item make sure that MDI system buttons stay on the right side. user32: Make MDI get_client_info checks more strict. shell32: Make SHGetDesktopFolder use a cached instance of IShellFolder. Emmanuel Maillard (1): configure: Fix libxml2 detection on Mac OS X. Evan Stade (10): gdiplus: Implemented GdipDrawBezier. gdiplus: Implemented GdipDrawPie/GdipFillPie. gdiplus: Implemented GdipDrawArc. gdiplus: Implemented GdipDrawCurve2. gdiplus: Implemented GdipDrawLines. gdiplus: Implemented GdipCreatePath and GdipDeletePath. gdiplus: Fix broken graphics path constructor. gdiplus: Fix erroneous pen error checking. gdiplus: Tidy up graphics constructor. gdi32: Added missing call to GDI_ReleaseObj. Francois Gouget (11): regedit: Add missing '\n' to an error message. regedit: Don't allow square-bracketed registry paths on the command line (to match native). regedit: Merge getRegClass() and getRegKeyName() to form parseKeyName(). winapi_check: ULONG_PTR is a 'long --pointer', not a 'long'. shlwapi: Update win32.api to fix the winapi_check warnings. crypt32/tests: Fix compilation on systems that don't support nameless unions. advapi32: Add more RegGetValue() conformance tests, and fix Wine accordingly. winapi: Add support for GDIPCONST. gdi32/tests: Run the GetTextMetricsA() tests on Windows 9x too. ddraw/tests: Fix compilation on systems that don't support nameless unions. dsound: Add missing '\n' to Wine trace. H. Verbeet (23): wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for mapped stages. wined3d: Mask texture stage state arguments with WINED3DTA_SELECTMASK when comparing them. wined3d: Use texture2D to sample in pshader_glsl_texdp3tex(). wined3d: Make use of the texUnitMap in drawStridedSlow as well. wined3d: Fix various incorrect uses of GL_LIMITS(texture_stages) and GL_LIMITS(sampler_stages). wined3d: Do not mark texture stages > MAX_TEXTURES dirty, they don't exist. wined3d: Keep track of what stage a texturing unit is mapped to. wined3d: Keep track of what fixed function texture stages are in use. wined3d: Split of the mapping of fixed function samplers from IWineD3DDeviceImpl_FindTexUnitMap(). wined3d: Remove the sharing of mapping code for fixed function and pixel shader samplers. wined3d: Split of the mapping of pixel shader samplers from IWineD3DDeviceImpl_FindTexUnitMap(). wined3d: Rename max_samplers to max_fragment_samplers. wined3d: Add max_vertex_samplers and max_combined_samplers to WineD3D_GL_Info. wined3d: Increase the sizes of texturing related arrays, in order to support vertex textures. wined3d: Map vertex sampler numbers to the correct internal array indices for GetSamplerState and SetSamplerState. wined3d: Map vertex sampler numbers to the correct internal array indices for GetTexture and SetTexture. wined3d: Cleanup GL extension detection. wined3d: Implement texldl. wined3d: Map vertex samplers to a texturing unit. wined3d: Check more thoroughly if a stage references a texture. wined3d: Cleanup device_map_fixed_function_samplers(). wined3d: In device_map_psamplers(), only touch the sampler mapping for samplers that are used by the shader. wined3d: Get rid of the oneToOneTexUnitMap field. Hans Leidekker (4): pdh: Add public headers. pdh: Implement PdhOpenQuery{A, W} and PdhCloseQuery. pdh: Implement PdhAddCounter{A, W} and PdhRemoveCounter. pdh: Implement PdhCollectQueryData. Huw Davies (5): wineps.drv: Ignore ExtTextOut calls that occur before the job has started. oleaut32: Interfaces that derive from IDispatch should be marshaled as VT_DISPATCH. oleaut32: Implement marshaling of VT_BYREF interfaces. oleaut32: Handle marshaling of VARTYPE-less FADF_VARIANT safearrays. oleaut32: Extend _invoke to cope with more args. Jacek Caban (24): mshtml: Don't check out VT in exec_fontsize. mshtml: Move keypress event listener to separated object. mshtml: Move load event listener to separated object. mshtml: Get rid of no longer used nsIDOMEventListener interface in NSContainer. mshtml: Added nsIEmbeddingSiteWindow::SetFocus implementation. mshtml: Added nsIEmbeddingSiteWindow:[Get|Set]Visibility implementation. mshtml: Activate nsWebBrowser after creating document window. mshtml: Notify IOleControlSite about focus changes. mshtml: Set focus to FALSE in InPlaceDeactivate. mshtml: Added IOleControlSite tests. mshtml: Better test of QueryInterface. mshtml: Added IOleInPlaceUIWindow tests. mshtml: Added IHTMLDOMNode::get_nodeName implementation. mshtml: Added beginning DOM tests. mshtml: Added more QueryInterface tests. mshtml: Correctly handle delete key in editor mode. mshtml: Added IDM_DELETE support in QueryStatus. mshtml: Added Exec(IDM_DELETE) implementation. mshtml: Don't use dynamic allocation for connection points. mshtml: Store connection point as a list. mshtml: Move IConnectionPointContainer to the separated struct. mshtml: Make connection points container independent. mshtml: Added IConnectionPointContainer implementation to HTMLBodyElement. mshtml: Add IID_IPropertyNotifySink and DIID_HTMLTextContainerEvents connection points to HTMLBodyElement. James Hawkins (20): msi: Forward MsiApplyPatchA to MsiApplyPatchW. msi: Implement MsiApplyPatchW. msi: Patches are applied based on ProductCode, not ProductID. msi: Send the expected data to set_deferred_action_props. msi: Properly delete rows from the table, instead of zeroing out the row. ntoskrnl.exe: Add a stub implementation of KeInitializeTimer. msi: Fetch the volume name when getting disk info. msi: Add a stub implementation of MsiQueryComponentStateA. msi: Add tests for publishing and unpublishing products, features, and components. msi: Add tests for MsiQueryProductState. msi: Validate MsiQueryProductCode parameters. msi: If the user product key exists, the product's state is advertised. msi: Use the correct registry key when detecting a published product. msi: Any value of WindowsInstaller besides 0 means the product is installed. msi: If the UserData product key exists, but the user product key doesn't, the product is absent. msi: Set the WindowsInstaller value of the UserData product key when publishing the product. msi: Add support for remote handles. msi: Reference count the custom action data to avoid freeing the data by another thread. msi: Add tests that show '!=' is not a valid conditional expression operator. msi: Ignore invalid conditional expressions when checking the launch conditions. Jason Edmeades (11): cmd.exe: Add basic support for && and (...) syntax. cmd.exe: Pass command structure into WCMD_pipe, not command line itself. cmd.exe: Pass the command list through so it is available to built in commands. cmd.exe: GOTO throws away any preloaded multi part/line command. cmd.exe: Lines starting with REM ignore any multiline/part characters. cmd.exe: EXIT /b skips any residual commands. cmd.exe: Parse multipart FOR statements. cmd.exe: Correctly parse IF ELSE plus multipart/multiline. cmd.exe: Support IF..ELSE processing tolerate multiline/part lines. cmd.exe: Fix FOR so it works as 'well' as before. cmd.exe: for loop by default only matches files. Jason Green (1): winscard: Add extended stub for SCardEstablishContext. Jeff Latimer (3): hnetcfg: Stub implementation of the dll. crypt32: Fix possible dereference of NULL ptr. cabinet: Fix a potential NULL reference. Juan Lang (18): wincrypt: Add missing message flags and parameters. crypt32: Don't return fake HCRYPTMSG from CryptMsgOpenTo*. crypt32: Add basic tests for CryptMsg functions. crypt32: Add basic parameter checking to CryptMsgOpenTo*. crypt32: Add base message type and use it to implement CryptMsgDuplicate and CryptMsgClose. crypt32: Test CryptMsgOpenToEncode for data messages. crypt32: Test CryptMsgUpdate for data messages opened to encode. crypt32: Test CryptMsgGetParam for data messages opened to encode. crypt32: Stub CryptMsgOpenToEncode for data messages. crypt32: Add a get param function, use it to implement CryptMsgGetParam. crypt32: Add an update function, use it to implement CryptMsgUpdate. crypt32: Store stream info in message. crypt32: Add a finalized member to message. crypt32: Implement CryptMsgUpdate for data messages opened to encode. crypt32: Add a stub get param function for data messages and remove stub message from open function. crypt32: Add tests for data message encoding. crypt32: Implement getting bare content for data messages opened to encode. crypt32: Implement getting content for data messages opened to encode. Kai Blin (1): ws2_32: Return WSAEINVAL for unhandled address families in WSAStringToAddress. Ken Thomases (4): winecoreaudio: Extract loop, wodNotifyClient for WAVEHDRs in list, to separate function. winecoreaudio: Move a variable declaration to narrower scope, reduce whitespace. winecoreaudio: Move notify of completed WAVEHDRs to end of wodReset. winecoreaudio: Make wodReset fail if called on a closed device. Kirill K. Smirnov (1): winhelp: Fix popup window style. Konstantin Kondratyuk (2): uninstaller: Add Russian resources. programs/winefile: Add Russian resources. Kovács András (1): Add dwmapi.dll stub. Lei Zhang (6): riched20: Add tests for EM_FORMATRANGE. winex11.drv: Send WM_MOUSEACTIVATE before closing a window. winex11.drv: Reset focus if application does not want to be activated. comctl32: Reduce duplicate code between PropertySheetA/W. comctl32: Reduce duplicate code between PROPSHEET_CollectSheetInfoA/W. comctl32: Determine if PSH_PROPSHEETPAGE is set once. Maarten Lankhorst (8): winealsa: Finally get rid of the thread in alsa directsound acceleration. dsound: Give rougher estimates for fraglen to satisfy alsa. dsound: Simplify mixing by removing remixing support, and fix its waveout breakage. dsound: Tune some parameters for alsa waveout. winealsa: Optimize GetPosition() more in dsalsa. dsound/winealsa: Remove writelead for alsa directsound. winealsa: Silence buffer on allocation. dsound: Fix calcplayposition to handle mixed amount > buffer length better. Marcus Meissner (1): wined3d: Fixed pointer casting and additions. Michael Stefaniuc (34): msvcrt: Move definition of 2 static inline functions up and remove the forward declaration of those. Found by sparse. shlwapi: Do not use wide character constants. winspool.drv/tests: Specify the arguments of the function in the function. winmm: Do not dump the version info when loading drivers. shlwapi: Remove more wide character constants. riched20: Do not use wide character constants. setupapi: Do not use wide character constants. oleaut32: Do not use wide character constants. ole32: Do not use wide character constants. comctl32: Do not use wide character constants. dmloader: Do not use wide character constants. dsound: Fix missing unlock on an error path. Found by Smatch. winealsa.drv: Fix missing unlock on the error path. Found by Smatch. msvcrt: Do not use wide character constants. gdi32: Multi-character character constants aren't portable as their behaviour is compiler dependent according to the C standard. Found by sparse. ddraw: Fix missing unlock on an error path. Found by Smatch. winejack.drv: Fix missing unlock. Found by Smatch. msacm32: Replace malloc/free with HeapAlloc/HeapFree. winmm: Replace malloc with HeapAlloc. cmd: Remove superfluous casts of void pointers to other pointer types. quartz: Remove superfluous casts of void pointers to other pointer types. iccvid: Remove superfluous casts of void pointers to other pointer types. ole32: Remove superfluous casts of void pointers to other pointer types. oleaut32: Remove superfluous casts of void pointers to other pointer types. kernel32: Remove superfluous casts of void pointers to other pointer types. gdi32: Remove superfluous casts of void pointers to other pointer types. wined3d: Remove superfluous casts of void pointers to other pointer types. dbghelp: Remove superfluous casts of void pointers to other pointer types. wininet: Remove superfluous casts of void pointers to other pointer types. winedos: Remove superfluous casts of void pointers to other pointer types. janitorial: Remove superfluous casts of void pointers to other pointer types. winefile: Do not use wide character constants. winefile: Do not use the TEXT() macro on character constants. The implicit cast from char to WCHAR works as well in UNICODE mode. comctl32: Replace malloc() with HeapAlloc(). Misha Koshelev (20): shell32: Conform to native in SHELL_ArgifyW for unquoted %1 in registry keys. wine.inf: Quote %1 for Msi.Package shell actions per native. gdi32/tests: Add framework for tests of drawing functions in paths, add test for ArcTo in paths. gdi32: Fix ArcTo to use proper starting and ending points. gdi32: Set current position properly after ArcTo. gdi32: Allow arbitrary start entry types in PATH_DoArcPart, not just PT_MOVETOs. gdi32: Handle ArcTo in paths as native. gdi32/tests: Expand framework for tests of drawing functions in paths, add test for AngleArc in paths. gdi32: Emulate AngleArc using ArcTo. gdi32/tests: Fix test_widenpath to succeed on Win98. setupapi: Simplify code as native setupapi does not handle quoted paths. wine.inf: Fix path to rundll32.exe in inffile/shell/install/command subkey. winemenubuilder: Create/release semaphore only around call to wineshelllink. winemenubuilder: Wait for parent process to finish instead of creating RunOnce entry that may never run. winemenubuilder: Do not WINE_ERR in InvokeShellLinker if we are going to try again. shell32/tests: Allow individual tests in check_lnk to be todo_wine'd. shell32/tests: Add test for shell links to existing non-executable files. shell32/tests: Allow CoCreateInstance to return E_NOINTERFACE to pass on Win98; add skips and display return values. shell32/tests: Fix tests of IShellLinkA_SetPath to conform on both Windows 98 and XP. shell32: Fix shelllink creation to non-executable files and remove unnecessary code. Nigel Liang (1): winex11.drv: Remove call to XCreateFontSet. Paul Vriens (13): crypt32/tests: Don't crash on Vista. user32/tests: Only do the GetProcAddress once. mscms/tests: Don't crash on Vista. mscms/tests: Fix wrong test for failure. kernel32/tests: Don't crash on Vista. kernel32/tests: Don't crash (on Vista). wintrust/tests: Add tests for CryptCATAdminCalcHashFromFileHandle. advapi32/tests: Add some service related tests. advapi32/service: Use the correct registry key for the service account. advapi32/service: Fix wrong key. advapi32/service: Return (more) correct needed buffersize. advapi32/service: Make sure we fill all struct members. advapi32/service: Don't rely blindly on type. Pedro Maia (1): shell32: Update paths in Portuguese resource. Rob Shearman (37): rpcrt4: Implement encapsulated union NDR functions. widl: Implement pointer descriptions for all embedded pointer types. widl: Fix detection of structures with non-conformant strings. widl: Write out embedded pointers for the element type when writing out arrays. widl: Always write out pointers if the structure is a pointer structure. Pointer are optional for conformant varying structures. rpcrt4: Use the offset to array data in embedded pointer format descriptions. rpcss: Remove lazy timeout mechanism and use __wine_make_system_process instead. msi: Only use the long name for the file source if the file has one. mshtml: The SRC value returned from HTMLElement_getAttribute should be an absolute, not relative URL. mshtml: Implement HTMLElement_setAttribute. mshtml: Fix HTMLDocument3_get_documentElement to get the right nsIDOMNode. mshtml: Notify the Gecko stream listener that we stopped binding, if an error occurs in start_binding. advapi32: Always set the requested fields of the security descriptor according to the info flags in GetNamedSecurityInfoW. mshtml: Implement HTMLElement_get_children. rpcrt4: Don't use add on the sizes of array elements to an open-ended structure; use FIELD_OFFSET with the array index instead. rpcrt4: Add support for ServerAllocSize parameters. rpcrt4: Add a STUBLESS_FREE phase for freeing the allocated memory in the server function. rpcrt4: Return a fault packet if the interface/object pair in a request packet aren't registered. rpcrt4: Close the connection if a protocol error or certain other kinds of errors occur, instead of returning it to the connection pool. rpcrt4: Translate STATUS_ACCESS_VIOLATION exceptions caught whilst executing the stub function to ERROR_NOACCESS to prevent confusing exceptions occurring in the client. rpcrt4: When an exception is raised, return the stored exception code instead of the generic RPC_S_CALL_FAILED. rpcrt4: Store the assoc_group_id field returned from the bind_ack packet and use it when creating further connections in the association group. rpcrt4: Try a lot harder to resuse existing connections by comparing inside the RpcQualityOfService and RpcAuthInfo objects. rpcrt4: Set PointerBufferMark to the buffer location immediately after the non-pointer data in complex struct and array marshaling and unmarshaling to keep to the DCE/RPC specification. rpcrt4: Implement marshalling/unmarshalling for the range NDR type. rpcrt4: Implement marshalling, unmarshalling and buffer sizing for the context handle type. rpcrt4: Dereference the pointer passed to the marshaling/unmarshaling/sizing routines in complex types for interface pointers. msi: Implement MsiGetMode for MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT and MSIRUNMODE_ROLLBACK. msi: Check the return value of VerQueryValueW in msi_get_disk_file_version. msi: Free version after using lpVer in msi_get_disk_file_version as lpVer points inside of version. msi: Fix loading string tables for databases that use 3-byte string references and that have a non-zero codepage (i.e. != CP_ACP). msi: Fix bytes_per_column for binary types when the database is using 3-byte string references. msi: Fix transforms to work when the number of bytes per string reference differs to that of the database it is being applied to. rpcrt4: Remove the unused AuthInfo field from the RpcAssoc structure and Used from RpcConnection. rpcrt4: Make pointers to RPCRT4_BuildBindHeader and RPCRT4_BuildBindAckHeader const. rpcrt4: Store the assoc_group_id in the connections. wine.inf: Add the SystemDrive environment variable. Stefan Dösinger (26): d3d9: Hold the lock in IDirect3D9 methods. d3d9: Hold the lock in methods implemented in device.c. d3d9: Hold the lock in cubetexture methods. d3d9: Hold the lock in indexbuffer methods. d3d9: Hold the lock in Pixelshader functions. d3d9: Hold the lock in query methods. d3d9: Release the wined3d query when the d3d9 query is destroyed. d3d9: Hold the lock in stateblock methods. ddraw: Test for incorrect surface desc sizes in GetSurfaceDesc. d3d8: Convert fvfs to vertex declarations. wined3d: Remove the FVF codepath from drawprim. wined3d: Unload texture coords for all supported texture stages. wined3d: Emulate tracking of multiple material properties. ddraw: Add a test for incorrect surface desc sizes for Lock(). ddraw: Check for incorrect rectangles to DDrawSurface::Blt. wined3d: Depthfill blits are allowed between BeginScene and Endscene. d3d9: Hold the lock in suface methods. d3d9: Hold the lock in swapchain methods. d3d9: Hold the lock in Texture methods. d3d9: Hold the lock in Vertexbuffer methods. d3d9: Hold the lock in VertexDeclaration methods. d3d9: Hold the lock in VertexShader methods. wined3d: Move material applying to the state table. wined3d: Clamp material power to 128.0. wined3d: Skip the start offset to the source array in IWIneD3DVertexShaderImpl_SetLocalConstantsF. wined3d: Some point sprite fixes. Tim Schwartz (2): net.exe: Add NET STOP. net.exe: Add missing CloseServiceHandle(). Vitaliy Margolen (4): dinput: Remove duplicate code. dinput: Move parent dinput reference into base class. dinput: Combine all Release functionality into base class. dinput: Move key state array into object. Vitaly Budovski (1): winealsa: Fix incorrect callback private value. -- Alexandre Julliard julliard@xxxxxxxxxx