This is release 0.9.24 of Wine, a free implementation of Windows on Unix. What's new in this release: - Support for multiple monitors using Xinerama. - Various MSI fixes and improvements. - A ton of memory leaks fixed. - Many common controls 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.24.tar.bz2 http://prdownloads.sourceforge.net/wine/wine-0.9.24.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.23: Alexandre Julliard (49): ntdll: More workarounds for more kernel bugs in VFAT ioctl mapping on x86-64. urlmon: Create a message window for each binding to make sure they are cleaned up properly. server: A window timer id should be an unsigned long. libuuid: Fixed typo in CLSID_SynchronizeContainer. makedep: Added support for generating dependencies of IDL client/proxy/server/iid files. Make.rules: Added support for building IDL client/proxy/server/iid files. configure: Don't define _WIN64 on the command line to avoid trouble with system headers. msi/tests: Make sure to delete the test data file. advapi32: Cast-qual warning fix. winex11.drv: Hack to work around an Xlib bug when XInitThreads is used. winex11.drv: Avoid X error with unsupported pen styles. Avoid usage of sizeof in traces that causes warnings on MacOSX. gdi32: Renamed the gdi directory to gdi32. winecoreaudio.drv: Win64 printf format fixes. wineaudioio.drv: Win64 printf format fixes. dnsapi: Avoid non-portable types. configure: Check for the Xinerama extension. winex11.drv: Preliminary support for Xinerama. user: Moved GetMonitorInfo and EnumDisplayMonitors to the display driver. user: Take multiple monitors into account when placing a popup menu. user: Take multiple monitors into account when placing a window. user: Take multiple monitors into account when placing a dialog. user: Fixed combo box drop position on multi-monitor setups. user: Maximize windows to the right monitor on multi-monitor setups. comctl32: Position the tooltip window correctly on multi-monitor setups. user: Adapt system metrics for multi-monitor setups. user: Fixed MonitorFromWindow behavior for an invalid window handle. user: Make sure the desktop window exists before calling monitor functions. notepad: Fallback to default position if saved position if off-screen. Revert "kernel32: Exit from initial thread with ExitThread not by ExitProcess." comctl32: Properly handle negative coordinates for mouse events. hhctrl.ocx: Properly handle negative coordinates for mouse events. msi: Properly handle negative coordinates for mouse events. shell32: Properly handle negative coordinates for mouse events. user32: Properly handle negative coordinates for mouse events. oleview: Properly handle negative coordinates for mouse events. regedit: Properly handle negative coordinates for mouse events. wineconsole: Properly handle negative coordinates for mouse events. winefile: Properly handle negative coordinates for mouse events. winemine: Properly handle negative coordinates for mouse events. winhelp: Properly handle negative coordinates for mouse events. user32: Fixed maximized window size on multi-monitor setups. server: Always ignore the root window position when computing coordinates offsets. winex11.drv: Offset X11 coordinates with the primary monitor position. kernel32: Close the directory handle in FindNextFile as soon as we reach the end of the directory. winedump: Avoid some dead code. wined3d: Fix a memory leak (spotted by Eric Pouech). wined3d: The WineD3D_GLContext structure doesn't need to be exported. wined3d: Simplify some uses of the WineD3D_Context object. Andrew Talbot (13): user: Dead code fix (Coverity). atl: Cast-qual warnings fix. dbghelp: Cast-qual warnings fix. cabinet: Cast-qual warnings fix. comctl32: Cast-qual warnings fix. comctl32: Cast-qual warnings fix. comdlg32: Cast-qual warnings fix. comdlg32: Cast-qual warning fix. crypt32: Cast-qual warnings fix. user: Remove superfluous shadow variable. crypt32: Cast-qual warnings fix. d3d8: Cast-qual warnings fix. crypt32: Cast-qual warnings fix. Andrey Turkin (2): mshtml: Insert missing "return" operator. ddraw: Add missing dereference operators. Aric Stewart (1): winex11.drv: Only create a fontSet if we are going to be using it in the XIC. Byeong-Sik Jeon (4): Korean: Use SUBLANG_NEUTRAL in Korean resources. winefile: Update Korean resources. oleview: Update Korean resources. notepad: Update Korean resources. Christoph Frick (1): gdi32: Add wglShareList to gdi32.spec. Cihan Altinay (1): shdocvw: Make sure BSTR is allocated before calling sink. Damjan Jovanovic (1): rpcrt4: Added support for RPC TCP servers. David Anderson (1): dbghelp: Avoid printing too many "What the heck" messages from winedbg. Detlef Riekenberg (8): localspl/tests: Another test for InitializePrintMonitor. localspl/tests: Get function pointers from the monitor. localspl: Implement InitializePrintMonitor. localspl/tests: Fallback to localmon.dll on NT4.0. localspl: Add version resource. localspl: Remember hInstance, needed for resources. user: Remove wrong comment. tools/wine.inf: Add default printer ports. Dmitry Timoshkov (8): setupapi: Fix a typo. user: Add a test for ShowWindow(SW_MAXIMIZE) called on an invisible maximized MDI child, make it mostly pass under Wine. wine.inf: Update RelayExclude and add RelayFromExclude filter in order to avoid not useful APIs in the traces. oleaut32: Add a test for QueryPathOfRegTypeLib. oleaut32: Make QueryPathOfRegTypeLib test pass under Wine. user32: Make the test pass for GetClassName called on a small buffer. kernel32: Exit from initial thread with ExitThread not by ExitProcess. kernel32: Exit from initial thread with ExitThread not by ExitProcess. Duane Clark (1): msvcrt: Fix fread on large buffers in ascii mode. Eric Pouech (14): ntdll: Plug a memory leak. advapi32: Plug a couple of memory leaks. ntdll: Added debug support for notifying block allocation / freeing. advpack: Plug a couple of memory leaks. winsock: Clear the held mask with the requested events so that they can be signaled. configure: Now that we have dwarf support for debug info, don't force stabs as debug info format. winedbg: Added a few more cases where we inspect if i386 instructions advapi32: Fixed a couple items from previous patch (spotted by G Pfeifer). winex11.drv: As the min keycode is always greater or equal to 8, we gdi32: Better error handling in enhanced metafile. msxml: Fixed list walking in xmlnodelist_get_length. ole32: CoUninitialize: No longer access an object after it's been freed. ole32: Fixed some wrong conditions in OleFlushClipboard. netapi32: Fix the size of allocation for the string returned from NetpGetComputerName. Francois Gouget (10): wined3d: Remove '\0's in traces. oleview: U(x) must be defined after winnt.h has had a chance to define NONAMELESSUNION. Fixes the compilation with gcc 2.95. msi: Remove spaces before '\n's. Assorted spelling fixes. Fix compilation with gcc 2.95. Add '\n's to Wine traces. wininet: HttpSendRequestW() returns ERROR_IO_PENDING when called on an async socket. But that does not mean that it failed. oleview: Fix compilation with gcc 2.95. msi/tests: Fix compilation with gcc 2.95. Don't include windows.h & co in the Wine sources. Frank Richter (14): mshtml: Update German translation. mshtml: Enlarge status text control ins some translated dialogs so all text is readable. mshtml: Left-align Gecko download information message for better readability. oledlg: Update German translation. clock: Update German translation. cmdlgtst: Update German translation. notepad: Update German translation. progman: Update German translation. regedit: Update German translation. taskmgr: Update German translation. winefile: Update German translation. gphoto2.ds: Add German translation. oleview: Add German translation. wineconsole: Update German translation. Hans Leidekker (6): wininet: Cast-qual warnings fix. riched20: Win64 printf format warning fixes. secur32: Win64 printf format warning fixes. winhelp: Cast-qual warnings fix. ntdll: Win64 printf format warning fixes. dnsapi: Add stubs for DnsWriteQuestionToBuffer_{UTF8,W}. Huw Davies (35): oledlg: Add resource ids for the paste special dialog. oledlg: Move the flag defines to under their respective structure definitions and remove some duplicates. oledlg: Add PS_MAXLINKTYPES. oledlg: Add the registered message name strings. oledlg: Move paste special dialog stubs to their own file. oledlg: Register a bunch of clipboard formats. oledlg: Debugging code to dump the OLEUIPASTESPECIAL structure. oledlg: Forward OleUIPasteSpecialA -> OleUIPasteSpecialW. oledlg: Paste special dialog resource. oledlg: Load the correct dialog template and add a skeleton dialog proc. oledlg: Initial management of private structure for dialog box control. oledlg: Use the clipboard if the user doesn't pass an IDataObject. oledlg: Set the user supplied caption. oledlg: Initialize the paste list. oledlg: Initialize the pastelink list. oledlg: Logic for initial selection of paste/pastelink radio buttons. oledlg: Copy the appropiate list to the display list. oledlg: Register a couple of messages. oledlg: Send the OLEUI_MSG_ENDDIALOG messsage when closing the dialog. oledlg: Post OLEUI_MSG_HELP when the Help button is pressed and hide the Help button if the app doesn't want it. oledlg: Add paste special string resources. oledlg: Update the result text. oledlg: Minimal 'As Icon' handling. Just disable for now. oledlg: Handle paste / link mode change. oledlg: Set initial focus to the display list. oledlg: Call the hook proc if present. oledlg: Retrieve names from the OBJECTDESCRIPTOR structure. oledlg: Set nSelectedIndex on exit. oledlg: Update the source text. oledlg: Return the appropiate value after the dialog is closed. oledlg: Remove the structure window property when we quit. oledlg: Only send the end dialog msg if the button is actually clicked. winex11.drv: Initialize data->xim to NULL if xim has been disabled. winex11.drv: Give XCloseIM another chance. winex11.drv: Only initialize static variables once per process. Hwang YunSong(황윤성) (4): wineconsole: Updated Korean resource. oledlg: Updated Korean resource. oledlg: Updated Korean resource. kernel32: Added winerr_kor.mc. Ivan Gyurdiev (6): wined3d: D3DLOCK: Use consistently in the WINED3D namespace. wined3d: Add D3DTADDRESS to the WINED3D namespace. wined3d: Add D3DVS_RASTOUT_OFFSETS to the WINED3D namespace. wined3d: Add D3DTA masks to the WINED3D namespace. wined3d: Add D3DBLEND to the WINED3D namespace. wined3d: Add D3DZBUFFERTYPE to the WINED3D namespace. Jacek Caban (18): mshtml: Don't crash in remove_doc_tasks if thread_data is not allocated. mshtml: Load page from moniker if AsyncOpen fails. shdocvw: Added IDocHostUIHandler2 test. shdocvw: Move common Navigate2 code to navigate_url. shdocvw: Use navigate_url in WebBrowser::Navigate. shdocvw: Added WebBrowser::Navigate implementation. mshtml: Fix debug traces. mshtml: Use mshtmcid.h defines where possible. mshtml: Don't return empty string in IHTMLSelectElement::get_name. mshtml: Added IHTMLElement::get_className implementation. wininet: Use HTTP_ADDHDR_FLAG_REPLACE flag in HTTP_HttpSendRequest to add Content-Length header. shdocvw: Fix windows style of windows without parents. urlmon: Added image/tiff mime filter. urlmon: Added video/avi mime filter implementation. urlmon: Code clean up. urlmon: Added video/mpeg mime filter. include: Added urlhist.idl. shdocvw: Added CUrlHistory stub implementation. James Hawkins (26): clusapi: Add the clusapi.h public header. include: Move cfgmgr32.h to include/ to match the SDK. msi: Also set the SOURCEDIR property in MSI_InstallPackage. mscoree: Add missing stubs to the spec file. mscoree: Add stub implementations of CorBindToRuntimeHost and GetCORVersion. msi: Revert "msi: Perform button control events in greatest to least order." msi: Run SetProperty events before all other events no matter what the order is. msi: Set the USERNAME and COMPANYNAME properties when initializing a package. msi: Add tests for the InstallServices action. msi: Implement the InstallServices action. msi: Use the ProgramFileDir reg value instead of ProgramFilesPath. msi: Only initialize a component's state if it is linked with a feature. tools/wine.inf: Add the ProgramFilesPath registry entry. msi: Allow more than one primary key in a table when importing a database. msi: Integer columns can have the 'NOT NULL' modifier too. msi: Add tests for integer column types. msi: Add support for localizable strings in MsiDatabaseImport. msi: Remove two unnecessary install tables. msi: Remove unused function pointer and definitions. msi: Allow more customization of install test files. msi: Add tests for installing from continuous cabinets. advpack: Fix the full path check. msi: Add tests for the UPDATE sql command. msi: Implement handling for the ErrorDialog and use it to change media. msi: Test the order in which cab files are handled in the Media table. msi: Extract cabinets based on DiskId, not LastSequence. Jeff Latimer (5): ole32: Remove dead code in errorinfo.c (Coverity). usp10: Fix dead code in ScriptItemize. tools: Add addtional help to runtest. usp10: Add tests for ScriptStringAnalyse and ScriptStringFree. usp10: Add tests for ScriptStringCptoX and ScriptStringXtoCp for activation in later patches. Jesse Allen (1): include: Fix out of place comment for DLGC_* codes. Jonathan Ernst (4): taskmgr: Fix an error in French translation. Use SUBLANG_NEUTRAL in French resources. wineconsole: Updated French translation. oledlg: Updated French translation. Kai Blin (4): secur32: Implement RFC2104 (HMAC) with MD5 for NTLMv2. secur32: Get rid of NEGO_* helper modes, they will never be used. Negotiate should not be done via ntlm_auth. secur32: Stop leaking the session key memory. secur32: Add include guard to hmac_md5.h. Karsten Elfenbein (3): wined3d: BltOverride: Make sure that the content of the source rect is wined3d: Correct the software cursor position if the app is running in windowed mode. wined3d: Fix the FrontBuffer content capturing. Kevin Krammer (1): winebrowser: Support for Portland Initiative scripts. Kirill K Smirnov (1): winhelp: Properly implement context help and JumpContext macro. Kirill K. Smirnov (3): winhelp: Use color specified in .hlp file for background, not just WHITE_BRUSH. winhelp: Window style has not been initialized. winhelp: Improved metafile support. Kovács András (2): mlang: Set fnIMLangFontLink_GetStrCodePages stub return values. wined3d: Implement D3DSIO_MOVA in ARB backend. Louis. Lenders (2): olepro32: Add version resource. msvcrt: Add stub for _getmaxstdio. Marcus Meissner (3): iphlpapi: NetBSD needs sys/param.h. wineoss: On non-OSS systems define MidiExit too. mshtml: Moved release of dom_window to right place. Markus Amsler (3): d3d8: Fix wrong function name in FIXME. d3d8: Backport d3d9 surface tests. msvcrt: Speed up new operator. Michael Ploujnikov (2): comctl32: Win64 printf format warning fixes. ole32/tests: Win64 printf format warning fixes. Michael Stefaniuc (7): setupapi: Win64 printf format warning fixes. imm32: Win64 printf format warning fixes. ntdll/tests: Win64 printf format warning fixes. janitorial: Remove redundant NULL checks before calling HeapFree wrappers. The Data1 member of the GUID struct needs to be an unsigned int too for Win64 compatibility. ole32: Win64 printf format warning fixes. comctl32/tests: Specify type of function argument and remove unused arguments. Mike McCormack (28): winetest: Avoid calling fclose twice on the same file (Coverity). msi: Add a test for summary information. msi: Add a test for modifying a table containing binary data. msi: Fix a memory leak. msi: Stream fields shouldn't be treated as strings. msi: Fix tables with binary data where the key is an integer. msi: Reset the column number for each new table in a transform. msi: Allow rows in the _Columns table to be unordered. msi: Fix an uninitialized variable causing random conformance test failures. msi: Initialize the summary information from a storage interface, not a db. msi: Only apply transforms that are valid for a database. msi: Add the column type INTEGER as an alias for INT. msi: Fix insertion of null integers into a table. user32: Add a test showing a problem in GetClassNameA. riched20: Make sure to use GlobalAlloc with GlobalFree. riched20: Create macro functions for allocating and freeing memory. msi: Split code to get a file's verion into a separate comment. comctl32: Create a point from index function and use it. msi: Create macro functions to set feature and component states. msi: Use msi_feature_set_state and msi_component_set_state where possible. msi: Fixed the UPDATE query to work with explicit values. msi: Remove some unused functions. msi: Update tables using records, not integer by integer. msi: Allow UPDATE queries without a condition. msi: Fix the join algorithm. comctl32: Move code assuming Nx1 into ImageList_CreateImage. msi: Remove redundant null checks before MSI_EvaluateCondition. msi: Avoid crashing if writeout_cabinet_stream fails. Mikołaj Zalewski (37): comctl32: toolbar: Change the dwData from DWORD to DWORD_PTR. comctl32: toolbar: Don't try to redraw buttons outside of the clipping rect. comctl32: toolbar: Use nHotItem not nOldHit for the hot item in MouseLeave. comctl32: toolbar: Test and improve TB_SETHOTITEM. comctl32: rebar: bUnicode and NtfUnicode should be the same. comctl32: header: Make all repaints pass through HEADER_Refresh. comctl32: header: Test and improve the custom draw and owner draw code. winetest: Don't start test programs with STARTUPINFO.wShowWindow = SW_HIDE. user32: Don't create timers with nEventId == 0 in TrackMouseEvent. user32: When calling TrackMouseEvent with TME_LEAVE the dwHoverTime may be uninitialized. comctl32: listview: Update the scroll bars after resizing the last column. user32: Send a WM_MOUSELEAVE even if another window calls TrackMouseEvent before the timer proc is called. comctl32: rebar: Don't return rectangles with negative width or height in NCCalcSize. comctl32: rebar: Use SM_CYEDGE for heights in NCCalcSize. comctl32: toolbar: Fix the tests and handling of TB_SETHOTITEM on a disabled button. wineconsole: Add usage message and more specific error messages. wineconsole: Change selection on WM_KEYDOWN not WM_KEYUP. wineconsole: Remove spaces from the ends of lines while copying to the clipboard. wineconsole: Allow making selections with a mouse also when not in the QuickEdit mode. wineconsole: Make most keys cancel the selection. wineconsole: WM_RBUTTONDOWN lParam is in client coordinates not window coordinates. oledlg: Add Polish translation. hhctrl.ocx: Add Polish translation. comdlg32: Pl.rc: Enlarge the Find dialog to show the whole radio buttons text. wineconsole: En.rc: Enlarge the "save console settings" dialog to avoid cropping of text. wineconsole: Check one of the radio buttons in the "Save settings" dialog. wineconsole: Fix Polish translation. notepad: Add a generic function for message boxes with a string parameter. notepad: Implement Find and Find Next. notepad: Fix ellipsis in menu items. shlwapi/tests: Make the string.c tests compile in Visual C++. shlwapi/tests: Enable the locale-dependent tests if the delimiters are correct. shlwapi/tests: Disable the StrFromTimeInterval tests as they are language-dependent. shlwapi: Test and fix StrRStrI[AW]. resources: Change German sublanguage code to SUBLANG_NEUTRAL. resources: Change Dutch sublanguage code to SUBLANG_NEUTRAL. comdlg32: Select the Filename edit box content after the user navigated to a directory by entering there the name. Oleg Krylov (3): comctl32: toolbar: Create tooltip on TB_GETTOOLTIPS message if not yet created. comctl32: statusbar: Create tooltip window with WS_POPUP and TTS_ALWAYSTIP style. comctl32: Create tooltip windows with WS_POPUP style. Paul Vriens (1): regedit: Initialize a variable (Coverity). Peter Oberndorfer (2): configure: Detect mingw cross compiler in gentoo. winedbg: Print frame address instead of duplicated bare address in backtrace. Pierre d'Herbemont (2): x11drv: Fix a typo in x11drv.h about X11DRV_GetTextExtentExPoint. quartzdrv: Add the quartz (Mac OS X) video driver to the build system. Rob Shearman (21): comctl32: Fix imagelist leak in tests. ole32: Fix some memory leaks in the marshal tests. oleaut32: Fix memory leaks after calling ITypeInfo::GetNames. oleaut32: Fix some reference count and memory leaks in the typelib marshaling code. oleaut32: Free allocated memory on typelib and typeinfo destruction. oleaut32: Rewrite MSFT_ReadName and MSFT_ReadString to need one less allocation and to fix a memory leak. oleaut32: Fix two more leaks on type info destruction. oleaut32: Fix a missing ITypeInfo::ReleaseTypeAttr in the typelib marshaling code. oleaut32: Initialise all members of the FUNCDESC structure in CreateDispTypeInfo. oleaut32: Fix a reference count leak in CreateDispTypeInfo. oleaut32: Fix a reference count leak in the typelib test. oleaut32: Free the array subscript memory for type descriptions when freeing the typelib. oleaut32: Fix a crash in dump_DispParms when running the typelib test with debug tracing on. rpcrt4: Move transport-specific server functions to rpc_transport.c. ole32: Always call IRpcChannelBuffer_GetBuffer in the class factory stub. ole32: Fix some memory leaks in the class factory proxy. oleaut32: Update comments at the top of typelib.c and remove "stub" from several traces that are in implemented functions. ole32: Fix a memory leak on the error path of dispatch_rpc. rpcrt4: Fix RPCRT4_Receive to accept authentication verifier data on any packets, not just bind packets. rpcrt4: Don't terminate the loop on the buffer becoming filled, but when we receive a packet with the RPC_FLG_LAST flag set. rpcrt4: The allocation hint in request and response packets is just that - a hint. Robert Shearman (6): rpcrt4: Create a server thread for each protseq. rpcrt4: Rename protseq_ops to connection_ops to reflect the fact that rpcrt4: Abstract out the way incoming connections are waited for so that we no longer need to wait on Win32 handles. rpcrt4: Convert the protseq list into a standard Wine list. rpcrt4: Add a critical section to protect the connection list in each kernel32: Add support for detecting the user locale preference from the system on Mac OS X. Roderick Colenbrander (6): wgl: Move wglGetCurrentContext to gdi32. wgl: Move wglGetCurrentDC to gdi32. wgl: Move wglShareLists to gdi32. wgl: Move wglDeleteContext to gdi32. gdi32: Add missing spec file entry for wglDeleteContext. wgl: Move part of wglGetProcAddress to gdi32. Stefan Dösinger (7): d3d8: Implement CopyRects with BltFast. ddraw: Make the surface list a standard wine list. ddraw: Use real handles for state blocks. ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTUREHANDLE. ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTUREADDRESS[U/V]. ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTURE[MIN/MAG]. ddraw: Forward the depth stencil buffer to wined3d. Vitaliy Margolen (5): dinput: Use dinput device as a base class for keyboard, mouse and joystick. dinput: Move SetEventNotification and associated event into base class. dinput: Move SetCooperativeLevel into base class. dinput: Add SetCooperativeLevel tests to keyboard. dinput: Add SetCooperativeLevel test for joystick. -- Alexandre Julliard julliard@winehq.org