Wine release 0.9.39
julliard at winehq.org
Fri Jun 15 10:09:45 CDT 2007
This is release 0.9.39 of Wine, a free implementation of Windows on Unix.
What's new in this release:
- Many MSHTML improvements.
- Several improvements to the sound support.
- A number of Winsock fixes.
- Several new supported constructs in the IDL compiler.
- Many Direct3D threading 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:
Binary packages for various distributions will be available from:
You will find documentation on
You can also get the current source directly from the git or CVS
repositories. Check respectively 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.38:
Alex Villacís Lasso (6):
oleaut32: Support for VT_DISPATCH in VarAbs.
oleaut32: Support for VT_DISPATCH in VarNot.
oleaut32: Support for VT_DISPATCH in VarFix.
oleaut32: Support for VT_DISPATCH in VarInt.
oleaut32: Support for VT_DISPATCH in VarNeg.
oleaut32: Support for VT_DISPATCH in VarRound.
Alexander Nicolaysen Sørnes (12):
wordpad: Split code into set_caption function.
wordpad: Store file name globally.
wordpad: Add file saving support.
wordpad: Improve file reading code.
wordpad: Convert open file dialog to Unicode.
wordpad: Add file saving dialog.
wordpad: Add missing dots to Open menu item.
wordpad: Fix potential buffer overflow.
wordpad: Allow toggling of toolbar.
wordpad: Allow toggling of statusbar.
wordpad: Split toolbar into tool- and formatbar.
wordpad: Use Unicode functions in more places.
Alexandre Julliard (39):
ws2_32: Reimplement WSASendTo along the lines of NtWriteFile.
ws2_32: Call the I/O completion routine as a user APC.
ws2_32: Simplify the async shutdown handling, and remove a bunch of no longer used code.
ntdll: Queue an intermediate user APC routine to free the async info.
server: Remove the extra apc_arg parameter now that user APCs all require the same arg as the kernel APC.
ws2_32: Queue a proper user APC also on immediate success in WSARecvFrom/WSASendTo.
server: Run async I/O APCs from the SIGUSR1 handler.
ntdll: Get rid of the num_async_io counter in the TEB.
kernel32: Rewrite GetOverlappedResult for the new async I/O behavior.
ws2_32: Rewrite WSAGetOverlappedResult for the new async I/O behavior.
advapi32: Convert the service list to a standard list.
server: Add support for system processes, that can be signaled to exit when all non-system processes are done.
explorer.exe: Mark explorer as a system process.
advapi32: Mark service processes as system processes, and exit when all user processes are done.
winedevice: Accept the shutdown service control.
widl: Get rid of the SIGSEGV handler, this only makes things harder to debug.
winmm: Fix computation of sleep time until next timeout.
winmm: Get rid of the WINE_MM_IDATA global structure, there's only one instance anyway.
cmd.exe: Silence a FIXME.
msvcrt: Set the correct ebp value before calling the local unwind handler.
include: Add DO_NO_IMPORTS ifdefs where needed.
libwine: Set install name to an absolute path for the installed library on Mac OS.
configure: Replace some obsolete macros to avoid warnings.
tools: Upgrade the config.guess/config.sub scripts.
msxml: Don't use VariantClear on an uninitialized variant.
winmm: Convert the timer list to a standard Wine list.
winmm: Maintain the timer list sorted by expiration time.
winmm: Initialize the timer critical section statically.
shell32: Fix contents of string returned in load_path.
shell32: Remove a redundant include.
winecfg: Fix potential null pointer access (spotted by Yaroslav Skorokhodov).
winex11.drv: Glyph width is rounded to 32 bits, make sure to provide enough null data.
comctl32: Remove useless pointer check.
wintrust/tests: Fix the WintrustGetRegPolicyFlags to work right the first time.
widl: Add typecasts for user marshalling routines to avoid compiler warnings.
localspl: Make some functions static.
server: Enable kqueue support on Mac OS >= 10.5 now that it's fixed.
ntdll: Implemented reading of the CDROM TOC on Mac OS.
user32/tests: Avoid strlen in trace.
Anatoly Lyutin (2):
cmd.exe: Update Russian translation.
user32: tests:msg Add test for switching MDI children.
Andrew Talbot (7):
msi: Constify some variables.
oleaut32: Fix some typos.
wined3d: Void functions should not return a value.
msi: Constify a variable.
msi: Constify some variables.
msi: Constify some variables.
msrle32: Constify some variables.
Andrey Turkin (4):
pdh: Stub implementation of pdh.dll.
ntdll: Stub and document IoCompletion APIs.
kernel32: Factor out all kernel32 timeout-conversion snippets to one helper functions.
kernel32: Implement IO completion functions on top of the NT IoCompletion API.
Aric Stewart (1):
ole32: Implementation of state bits for IStorage.
Chris Robinson (3):
wined3d: Add a few missing checkGLcall calls.
quartz: Don't return S_FALSE for failed connections.
wined3d: Add missing table entry value.
Christian Costa (3):
wineoss.drv: Mark every buffer being added.
winealsa.drv: Use correct tests for synthesizer/port enumeration order.
winealsa.drv: Fix compilation with old alsa headers.
Damjan Jovanovic (1):
ws2_32: getsockname should fail on unbound socket.
Dan Hipschman (14):
list.h: Add macros for reverse iteration.
widl: Replace get_name with a field reference.
widl: Represent arrays with type_t.
widl: Implement conformant structure handling.
widl: Check for NULL in set_tfswrite.
widl: Fix incomplete struct/union typedef bug.
widl: Simplify correlation descriptor code.
widl: Handle wire_marshal types.
widl: Test structure argument marshalling.
widl: Handle wire_marshal pointer attributes.
widl: Handle embedded interface pointers.
widl: Handle encapsulated unions.
widl: Factor the output functions.
widl: Fix a write_parameters_init bug.
Detlef Riekenberg (4):
include/winspool: Add more flags for printer drivers.
winspool: Implement AddPortEx.
winspool: Remove outdated comment.
localspl: Implement AddPortEx.
Dmitry Timoshkov (4):
include/msvcrt: Make sure that __int64 is properly defined on a 64-bit platform.
user32: Do not hardcode cp1252 for an icon/title font.
gdi32: Make BITMAPINFOHEADER biSize check match what other parts of code do.
msi: Simplify the code.
Evan Stade (9):
gdiplus: Added public headers.
gdiplus: Added beginnings of memory and startup functions.
gdiplus: First pen implementation.
gdiplus: First pen test.
gdiplus: Added first GDI+ graphics implementation.
gdiplus: Implemented GdipDrawLineI.
gdiplus: Implemented GdipDrawRectangleI.
gdiplus: Brush implementation.
gdiplus: Brush tests.
Francois Gouget (28):
ws2_32: Improve the prototypes Win64 compatibility by replacing long with LONG.
winspool.drv: Fix the AddPortExA/W() export to match the implementation.
programs/cmd: Add missing '\n' to Wine trace.
wined3d: Fix spelling of the state_separateblend() function.
Assorted spelling fixes.
ntdll: Improve the prototypes Win64 compatibility by replacing long with LONG.
winapi_check: Also warn about 'unsigned long's Win64 compatibility problems.
advapi32: Update win32.api to fix the winapi_check warnings.
wined3d: Pass the D3DCB_CreateAdditionalSwapChain() error code to the upper layers (needed for d3d9).
gdiplus: Add missing '\n' in Wine trace.
winapi_check: .exe and .ocx files can also export APIs.
hhctrl.ocx: winapi_check expects the module name to be all uppercase in the documentation.
msdmo: dmoreg.h should include mediaobj.h.
msdmo: Improve the prototypes Win64 compatibility by replacing long with LONG.
secur32: Update win32.api to fix the winapi_check warnings.
Add API documentation stubs to make winapi_check happy.
wintrust/tests: Simplify the code and improve consistency by removing unneeded function typedefs.
wintrust/tests: Fix checks to be more informative when they fail.
gdiplus: Add missing '\n' to ok() calls, Wine traces.
regedit: Move PerformRegAction() and get_file_name() around to eliminate forward references. Make them static.
crypt32: Add missing '\n' to ok() call.
regedit: Remove setAppName() as the application name is hardcoded anyway.
regedit: Remove cruft and make functions static, reordering where necessary to avoid forward declarations.
regedit: If the data for a given value is in an unknown format, then print an error and don't modify the value.
regedit: Make the dword and binary data parsing both more flexible and stricter.
regedit: The registry functions return standard error codes, not HRESULTs.
regedit: Having garbage after the dash in '"foo"=-' is not valid.
regedit: Modify getRegClass() to avoid dubious comparisons and casts between HKEYs and error codes.
Glenn Wurster (1):
sfc_os: Add stub implementation for SfcIsKeyProtected.
H. Verbeet (15):
wined3d: Return WINED3DERR_INVALIDCALL in DrawIndexedPrimitive if no index buffer is set.
d3d9: Add a test for calling DrawIndexedPrimitive with a NULL index buffer.
wined3d: TRACE the Color parameter in IWineD3DDeviceImpl_Clear.
wined3d: Rename IWineD3DDeviceImpl_SetBasevertexIndex to IWineD3DDeviceImpl_SetBaseVertexIndex.
wined3d: Make sure the color buffer is not modified by depth_blt().
wined3d: Get rid of the BaseVertexIndex parameter to IWineD3DDeviceImpl_SetIndices, use SetBaseVertexIndex instead.
wined3d: Add IWineD3DDevice_GetBaseVertexIndex to retrieve the base vertex index.
wined3d: Get rid of the pBaseVertexIndex parameter to IWineD3DDeviceImpl_GetIndices, use GetBaseVertexIndex instead.
wined3d: Turn off filtering for FBO attachments, update the texture's states array.
wined3d: Fix GLSL definitions.
wined3d: Pass NULL for the stateBlock parameter to shader_get_registers_used() in IWineD3DVertexShaderImpl_SetFunction.
wined3d: For ps_2_0 and higher, call shader_get_registers_used() in IWineD3DPixelShaderImpl_SetFunction.
wined3d: Take the texUnitMap into account when loading shader_glsl_load_psamplers().
wined3d: Call IWineD3DDeviceImpl_FindTexUnitMap() when activating the context.
wined3d: Add wined3d vertex sampler definitions.
Hans Leidekker (3):
mlang: Implement IMultiLanguage::GetLcidFromRfc1766.
wininet: More lenient parsing of the passive mode server response.
gdi32: Add some tests for BITMAPINFOHEADER biSize checks.
Huw Davies (4):
mshtml: Don't release the factory if we failed to get it.
oleaut32: Fixes for the PICTYPE_UNINITIALIZED case.
riched20: Don't mess with the caret if we don't have focus.
winex11.drv: XRenderCompositeText has a problem with 0x0 glyphs, so we'll pretend they're 1x1.
Hwang YunSong(황윤성) (2):
credui: New Korean resource.
shell32: Updated Korean resource.
Jacek Caban (58):
urlmon: Don't pass query part of URL to CreateUrlCacheEntryW.
mshtml: Added support for coexisting different Gecko versions installation.
mshtml: Switch to Wine Gecko 0.1.0.
mshtml: Fix debug trace.
mshtml: Added command table for CGID_MSHTML commands.
mshtml: Move IDM_FONTSIZE, IDM_FONTNAME and IDM_FORECOLOR to edit state command table.
mshtml: Move more commands to command table.
mshtml: Move more commands to editor command table.
mshtml: Move remaining commands to tables.
mshtml: Use command table for IDM_COPY, IDM_CUT and IDM_PASTE query.
mshtml: Move justify queries to command table.
mshtml: Move edit command queries to the command table.
mshtml: Move remaining status queries to command tables.
mshtml: Make [get|set]_font_size static.
mshtml: Move setup_ns_editing to nsembed.c.
mshtml: Forward all IsDirty implementations to one function.
mshtml: Don't crash in load_stream if Gecko is not available.
mshtml: Don't do anything in exec_editmode if edit mode is already set.
mshtml: Use IOleCommandTarget::Exec to implement context menu.
mshtml: Call UpdateUI and Exec(OLECMDID_UPDATECOMMANDS) from timer callback.
mshtml: Move Exec(OLECMDID_SETTITLE) call to separated function and use it in on_timer.
mshtml: Call update_doc in exec_editmode.
mshtml: Added test of callbacks called from document timer.
mshtml: Pump messages of all windows in test_download.
mshtml: Improve IDM_JUSTIFYLEFT query status.
mshtml: Push TASK_PARSECOMPLETE in load event if Gecko is available.
mshtml: Set FALSE useCapture for editor's keypress event listener.
mshtml: Don't check out variant type in exec_fontname.
mshtml: Set default fontname to 'Times New Roman'.
mshtml: Added Exec(IDM_FONTNAME) tests.
mshtml: Added more command tests.
mshtml: Call update_doc in editor commands.
mshtml: Call update_doc in init_editor.
mshtml: Store editor controller in NSContainer.
mshtml: Added editor mode up key implementation.
mshtml: Added editor mode down key implementation.
mshtml: Reimplement editor mode right key using command controller.
mshtml: Reimplement editor mode left key using command controller.
mshtml: Set default scrollbar preferences.
mshtml: Added IDM_RESPECTVISIBILITY_INDESIGN command stub implementation.
mshtml: Silence invalid FIXME for ELEMENT_DOCUMENT_FRAGMENT_NODE in nsnode_to_nsstring_rec.
mshtml: Added COMMENT_NODE implementation in nsnode_to_nsstring_rec.
mshtml: Added IHTMLStyle::get_fontFamily implementation.
mshtml: Added IDM_COMPOSESETTINGS implementation.
mshtml: Added semi stub IsDirty implementation.
mshtml: Added IsDirty tests.
mshtml: Added edit mode IDM_COPY implementation.
mshtml: Added edit mode IDM_PASTE implementation.
mshtml: Added edit mode IDM_CUT implementation.
mshtml: Call Exec(CGID_ShellDocView, 37) in exec_editmode.
mshtml: Move createing URL moniker to separated function.
mshtml: Move Exec(CGID_ShellDocView, 37) call to match native.
mshtml: Store current moniker in HTMLDocument.
mshtml: Added GetCurMoniker implementation.
mshtml: Don't crash in set_font_size if range_cnt is 0.
mshtml: Added get_URL implementation.
mshtml: Use IOleInPlaceSiteEx if available.
mshtml: Added IOleInPlaceSiteEx tests.
James Hawkins (8):
msi: Use fetch_int to reduce code duplication and access to table data.
msi: Reduce the amount of code that directly accesses table data.
msi: Represent table data as bytes instead of shorts.
msi: Add support for large string tables.
msi: Set the MsiNetAssemblySupport property.
msi: Protect custom actions with a structured exception handler.
msi: Fixed the WriteEnvironmentStrings action.
msi: Set the UserSID and ProductCode properties for deferred custom actions.
Jason Edmeades (10):
cmd.exe: Move English constants into NLS files.
cmd.exe: Move writing to console into a single function.
cmd.exe: Handle command line as Unicode.
cmd.exe: Convert cmd to Unicode.
cmd.exe: Fix 'help garbage' command post-unicode support.
cmd.exe: Fix handling of malformed environment variable expansion.
cmd.exe: Change from main to wmain.
cmd.exe: Fix dir /w.
xcopy.exe: Convert from main to wmain.
cmd.exe: Add support for cmd.exe /u (Unicode from internal pgms).
Jeff Latimer (2):
shell32: Fix possible dereference of NULL ptr.
msi: Use the langbuff len rather than the versionbuff len when allocating the langbuff.
John Klehm (1):
include: Allow port.h to build on gcc4.
Juan Lang (10):
comdlg32: Initialize file dialog controls before creating dialog.
comdlg32: Check file dialog's FOIShellView before accessing it.
crypt32: Add CryptMsg* stubs.
crypt32: Implement CERT_AUTHORITY_KEY_ID2_INFO encoding/decoding.
crypt32: Implement PKCS_CONTENT_INFO encoding/decoding.
crypt32: Separate set encoding into a separate function.
crypt32: Implement PKCS_ATTRIBUTE encoding/decoding.
crypt32: Use CRYPT_EncodeEnsureSpace to allocate memory when necessary.
crypt32: Implement PKCS_ATTRIBUTES encoding/decoding.
crypt32: Implement PKCS7_SIGNER_INFO encoding/decoding.
Kai Blin (1):
ws2_32: Add mapping for STATUS_OBJECT_TYPE_MISMATCH to WSAENOTSOCK.
Kolbjørn Fredheim (1):
winex11.drv: Echo the video mode requested in the error message when not finding a matching mode.
Lei Zhang (7):
wined3d: Various spelling fixes.
include: Add missing definitions to shlobj.h.
shell32: Start implementing BIF_USENEWUI.
user32: Improve cut/copy/paste behavior of password edit boxes.
comdlg32: Move file dialog resizing code into its own function.
user32: Remove a unused variable from ES_PASSWORD test.
comctl32: Make modal property sheets modal.
Louis Lenders (1):
shell32: Add stub for SHUpdateRecycleBinIcon.
Maarten Lankhorst (8):
dsound: Fix buffer caps.
dsound: Recalculate 3d buffer on SetVolume.
dsound: Disable property sets if hardware doesn't support it.
winmm: Use unix fd's instead of win32 events to sync internal events in timer.
dsound: Unset variable on failure in IKsBufferPropertySetImpl_Create.
rsaenh: Allow CRYPT_NEWKEYSET and CRYPT_VERIFYCONTEXT at same time when acquiring context.
winealsa: Detach directsound implementation from waveout implementation.
dsound: Use TIME_KILL_SYNCHRONOUS on sound timer.
Marcus Meissner (1):
quartz: Added some error checking on failure to CreateClassEnumerator.
Markus Goemmel (1):
comctl32/listview.c: Ownerdraw font problem during focus change fixed.
Michael Stefaniuc (8):
wingdi.h: Multi-character character constants are implementation specific according to the C standard. Use a hex number instead.
capi2032: Fix non-ANSI function declaration. Found by sparse.
gphoto2.ds: Fix non-ANSI function declaration. Found by sparse.
wrc: Fix non-ANSI function declaration. Found by sparse.
winedos: Fix printf format warnings introduced by the TEB change in thread.h.
psapi: GetPerformanceInfo() calls down to the wrong ntdll function. Found by sparse.
psapi: GetWsChanges() calls down to the wrong ntdll function. Found by sparse.
wrc: Fix redundant checks for NULL before free(). Found by Smatch.
Mikołaj Zalewski (2):
kernel: Fix clearing of memory in LocalReAlloc16(..., LMEM_ZEROMEMORY).
comctl32: listview: Make LVM_GETCOLUMNWIDTH query the header control instead of using cached data.
Misha Koshelev (29):
msi: automation: Remove duplicate error messages on unknown dispid.
msi: automation: Add missing operand for evaluation.
msi: msiserver.idl: Maintain spacing as spaces, not tabs.
msi: automation: Remove redundant VariantClear(pVarResult).
msi: automation: Database::SummaryInformation is a propget, not a method.
msi/tests: automation: Add tests for SummaryInfo::Property, get.
msi: automation: Fix SummaryInfo::Property get to conform to native.
msi/tests: suminfo: Add tests for MsiSummaryInfoGetProperty for unknown property values.
msi: suminfo: Return ERROR_UNKNOWN_PROPERTY as native.
msi: automation: SummaryInfo::Property, remove all specific instances to PIDs.
msi/tests: automation: Add test for Installer::OpenDatabase.
msi: automation: Add MsiOpenDatabaseMode enum.
msi/tests: automation: Add tests for SummaryInfo::Property, put.
msi: automation: Implement SummaryInfo::Property, put.
msi/tests: automation: Add tests for SummaryInfo::PropertyCount.
msi: automation: Implement SummaryInfo::PropertyCount.
widl: Add support for vararg attribute.
oleaut32/tests: Add tests for IDispatch::Invoke of vararg function.
oleaut32: Add support for vararg functions in ITypeInfo::Invoke.
winebrowser: Add DDE support.
wine.inf: Use DDE for winebrowser as native.
shell32/tests: Simplify DDE thread and message loop.
shell32/tests: Save threadid from CreateThread as required by winme/98/95.
shell32/tests: Use ShellExecuteEx with SEE_MASK_FLAG_DDEWAIT and SEE_MASK_FLAG_NO_UI for DDE tests.
shell32/tests: Expand default DDE application name tests to conform to win98.
shell32/tests: Allow testing for arbitrary number of command line arguments in DDE tests.
shell32/tests: Add test for unquoted %1 in command and ddeexec keys.
setupapi/tests: Add basic tests for InstallHinfSectionA/W command line processing.
setupapi: Handle unquoted paths in InstallHinfSection as native.
Nigel Liang (1):
shell32: Conformance tests for unicode filenames and fix a bug for file deletion.
Paul Vriens (6):
wintrust/tests: Start of some crypt tests for wintrust.
wintrust/tests: Use A instead of W-calls.
comdlg32/tests: Skip some not implemented functions on win98.
crypt32/tests: Skip tests if we don't have enough rights.
crypt32/tests: Skip tests if we don't have enough rights.
crypt32/tests: Vista uses a different error code.
Phil Costin (6):
wined3d: Add GL_EXT_texture_sRGB constants and corresponding CheckDeviceFormat query.
wined3d: Extend the D3DFMT table to include gamma corrected formats.
wined3d: Add support for loading gamma corrected textures.
wined3d: Enable the loading and reloading of gamma corrected textures.
wined3d: Add gamma linerization support for D3DFMT_A4R4G4B4.
wined3d: Remove a duplication in device.c.
Ralf Beck (1):
winealsa.drv: Mark every sysex buffer being added.
Rob Shearman (6):
wininet: Send the correct callbacks during InternetReadFileExA calls.
wininet: Implement NTLM support for proxy authentication.
uuid: Add hlink CLSIDs.
mshtml: Add some error handling to hlink_frame_navigate.
mshtml: Use the implementation of IHlink in hlink.dll instead of duplicating it.
include: Add HTMLTextContainerEvents dispinterface and necessary dispids.
Stefan Dösinger (31):
wined3d: Do not enable GL_APPLE_client_storage for the dummy textures.
ddraw: Hold the lock in IDirect3DDevice methods.
ddraw: Hold the lock in IDirectDrawClipper methods.
ddraw: Hold the lock in IDirectDrawGammaControl methods.
ddraw: Hold the lock in IDirect3DMaterial methods.
ddraw: Hold the lock in IDirectDrawPalette methods.
ddraw: Hold the lock in IDirect3DLight methods.
ddraw: Hold the lock in IDirect3DTexture methods.
ddraw: Hold the lock in IDirect3DVertexBuffer methods.
ddraw: Hold the Lock in IDirect3DViewport methods.
d3d8: Add a dll global critical section.
d3d8: Hold the DLL lock in IDirect3D8 methods.
wined3d: Store the gl information in a per adapter structure and initialize it only once.
wined3d: Store the adapter driver and description in the adapter.
wined3d: Find possible fbconfis on dll load time, use them in CheckDepthStencilMatch.
d3d8: Hold the lock in IDirect3DDevice8 methods.
wined3d: Some render target->texture blit context handling.
wined3d: Do not set the dynlock flag on all created surfaces.
d3d8: Hold the lock in cubetexture methods.
d3d8: Hold the lock in IDirect3DIndexBuffer8 methods.
d3d8: Hold the lock in IDirect3DSurface8 methods.
d3d8: Hold the lock in swapchain methods.
d3d8: Hold the lock in IDirect3DVertexBuffer methods.
d3d8: Hold the lock in volume methods.
d3d8: Hold the lock in IDirect3DVolumeTexture8 methods.
d3d8: Hold the lock in IDirect3Dtexture8 methods.
wined3d: Only swap system memory resources of front and back buffer if they have the same size.
wined3d: Implement vertical refresh sync.
wined3d: Present does not clear the depth stencil.
wined3d: DDraw surfaces are QWORD aligned.
d3d9: Add a dll global critical section.
Stefan Leichter (3):
crypt32: Replace CRYPT_RecurseDeleteKey with RegDeleteTreeW.
qcap: Replace DeleteEntireSubKey with RegDeleteTreeW.
winspool.drv: Replace WINSPOOL_SHDeleteKeyW with RegDeleteTreeW.
Ulrich Czekalla (2):
ole32: Remove stack-based string buffer inFileMonikerImpl_DecomposePath.
opengl: Use get_glxdrawable to grab the drawable.
Vedran Rodic (1):
winmm: Fix PlaySound so it doesn't block when another sound is already playing.
Vitaliy Margolen (3):
dinput: Make sure to unacquire device before freeing it.
dinput: Acquire device only if specified window has focus in foreground coop level.
atl: Use CallWindowProc instead of calling old window proc directly.
julliard at winehq.org
More information about the wine-announce