Release 0.9.41.
[wine/multimedia.git] / ANNOUNCE
blob787c9880f3060b1163d880a72d8a54869f53e6f8
1 This is release 0.9.41 of Wine, a free implementation of Windows on Unix.
3 What's new in this release:
4   - A number of gdiplus functions.
5   - More complete pdh.dll implementation.
6   - Support for MSI remote calls.
7   - Messaging support in crypt32.dll.
8   - Lots of bug fixes.
10 Because of lags created by using mirrors, this message may reach you
11 before the release is available at the public sites. The sources will
12 be available from the following locations:
14   http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.41.tar.bz2
15   http://prdownloads.sourceforge.net/wine/wine-0.9.41.tar.bz2
17 Binary packages for various distributions will be available from:
19   http://www.winehq.org/site/download
21 You will find documentation on
23   http://www.winehq.org/site/documentation
25 You can also get the current source directly from the git or CVS
26 repositories. Check respectively http://www.winehq.org/site/git or
27 http://www.winehq.org/site/cvs for details.
29 If you fix something, please submit a patch; instructions on how to do
30 this can be found at http://www.winehq.org/site/sending_patches
32 Wine is available thanks to the work of many people. See the file
33 AUTHORS in the distribution for the complete list.
35 ----------------------------------------------------------------
37 Changes since 0.9.40:
39 Alexander Nicolaysen Sørnes (3):
40       comdlg32: fontdlg: Respect the CF_NOSCRIPTSEL flag.
41       wordpad: Disable copy/cut in menu when appropriate.
42       wordpad: Prompt for saving file changes.
44 Alexandre Julliard (41):
45       configure: Fix the strip command line for Mac OS.
46       configure: Export the shared library extension instead of hardcoding .so.
47       configure: Don't use a default soname if a library is not found, leave it undefined.
48       configure: Don't set LDPATH if not needed.
49       configure: Change WINE_GET_SONAME to allow it to be used as a replacement for AC_CHECK_LIB.
50       configure: Move the dll checks earlier in the file to make them available for library checks.
51       configure: Merge the libhal existence check with the soname check.
52       configure: Merge the libcurses existence check with the soname check.
53       configure: Merge the libcapi20 existence check with the soname check.
54       configure: Merge the libsane existence check with the soname check.
55       configure: Make the libcups soname check depend on the header check.
56       configure: Make the libjack soname check depend on the header check.
57       configure: Make the libfontconfig soname check depend on the header check.
58       configure: Make the libssl soname check depend on the header check.
59       configure: Make the libjpeg soname check depend on the header check.
60       configure: Added checks for libpng.
61       ntdll: Add check for null pointer in NtQuerySystemInformation(SystemModuleInformation).
62       configure: Merge the libGL existence check with the soname check.
63       configure: Merge the libXrandr existence check with the soname check.
64       configure: Merge the libXrender existence check with the soname check.
65       configure: Merge the libXinerama existence check with the soname check.
66       configure: Get rid of the no longer used check for libtxc_dxtn.
67       Maketest.rules: Add dependency on IDL headers for crosstest objects.
68       configure: Make the libXcursor soname check depend on the header check.
69       configure: Make the libXi soname check depend on the header check.
70       configure: Merge the libfreetype existence check with the soname check.
71       configure: Merge the libX11 and libXext existence check with the soname check.
72       configure: We no longer need the shared library extension.
73       aclocal: Add macros for logging messages about missing features.
74       configure: Move notices about missing features next to the corresponding checks.
75       configure: Add a few more notices for missing packages.
76       include: Add some definitions for manifest resources.
77       winedump: Add RT_MANIFEST resource type.
78       configure: Fix typo in liblcms notice check.
79       kernel32: Implemented GetTickCount64.
80       user32/tests: Flush messages more aggressively in a couple of tests.
81       msi/tests: Comment out call to function that is still a stub in Wine.
82       user32: Check both A and W proc for previously allocated winprocs.
83       user32: Allocate a dual A/W winproc for DefWindowProc.
84       dnsapi: Fix some potential infinite loops because of an unsigned loop counter.
85       wldap32: Fix some potential infinite loops because of an unsigned loop counter.
87 Anatoly Lyutin (1):
88       cmd: Use toupperW instead of toupper.
90 Andrew Talbot (10):
91       ole32: Constify some variables.
92       oleaut32: Constify some variables.
93       ole32: Constify some variables.
94       winelib: Cast-qual warnings fix.
95       ole32: Constify a variable (and fix a typo concerning its level of indirection).
96       ole32: Cast-qual warnings fix.
97       comdlg32: Cast-qual warning fix.
98       ole32: Cast-qual warning fix.
99       winedump: Cast-qual warnings fix.
100       winedump: Cast-qual warnings fix.
102 Aric Stewart (4):
103       imm32: Implementation of GCS_CURSORPOS.
104       include: Add a ddk header for imm.
105       imm32: Implement Locking/Unlocking IMC and IMCC functions.
106       imm32: Use the COMPOSITIONSTRING in hCompStr.
108 Ben Hodgetts (2):
109       ws2_32: Don't tell users to run Wine as root when sockets not creatable.
110       winecfg: Clean up Graphics tab and remove broken neutral translation.
112 Bernd Buschinski (1):
113       gdiplus: Fix test typo/compile error.
115 Chris Robinson (4):
116       winemp3: Check the right macro when defining TRUE.
117       winemp3: Use head_check to check for valid headers.
118       winemp3: Remove global mpstr pointer.
119       winemp3: Remove function declarations with no definition and unused macros.
121 Damjan Jovanovic (2):
122       shell32: DragQueryFile doesn't count the null terminator.
123       ntdll: Use the win16 current directory for win16 processes.
125 Detlef Riekenberg (4):
126       setupapi: Avoid crash in SetupCloseInfFile.
127       advpack+setupapi: Remove unneeded checks before SetupCloseInfFile.
128       ntdll: Avoid crash with WINEDEBUG=+snoop.
129       printui: Parse args for PrintUIEntryW.
131 Dmitry Timoshkov (4):
132       gdi32: Do not report an error if a requested to add font is already loaded.
133       include: Add HandleToUlong, UlongToHandle, UintToPtr, UlongToPtr compatibility macros.
134       ntdll: Remove an artificial limitation in NtQuerySecurityObject.
135       shlwapi: Fix some spec entry definitions.
137 Emmanuel Maillard (1):
138       winecoreaudio: MIDIIn_MessageHandler: Fix non-SysEx messages parsing.
140 Evan Stade (50):
141       oleaut32: Added support for decoding some PNG files.
142       oleaut32: Save load time format of pictures.
143       gdiplus: Use SaveDC, RestoreDC in GdipDrawLineI.
144       gdiplus: Call EndPath() in GdipDrawLineI in case there is an open path.
145       gdi32: Don't access DC in PolyDraw after releasing handle.
146       gdiplus: Added SetPenEndCap.
147       gdiplus: Rendering of linecaps.
148       gdiplus: Added linecap rendering for GdipDrawBezier.
149       gdiplus: Public declaration of GdipSetPenEndCap.
150       gdiplus: Added GdipAddPathLine2.
151       gdiplus: Added GdipClosePathFigure.
152       gdiplus: Added GdipClosePathFigures.
153       gdiplus: Added GdipGetPointCount.
154       gdiplus: Added GdipGetPathPoints.
155       gdiplus: Added GdipGetPathTypes.
156       gdiplus: Updated draw_pie to use SaveDC/RestoreDC.
157       gdiplus: Updated GdipDrawRectangleI.
158       gdiplus: GdipDrawCurve2 now uses SaveDC()/RestoreDC() and end caps.
159       gdiplus: Fixed a bug in helper function draw_polybezier.
160       gdiplus: Make LineCapArrowAnchor look more like it does in windows.
161       gdiplus: Added constructor and destructor test for gdiplus paths.
162       gdiplus: Fixed bug in GdipGetPathPoints().
163       gdiplus: Added a test for GdipAddPathLine2.
164       gdiplus: Changed calls to floor to floorf.
165       gdiplus: Moved two inline helpers to the header.
166       gdiplus: Added GdipAddPathArc.
167       gdiplus: Added GdipAddPathArc test.
168       gdiplus: Updated GdipDrawArc to use SaveDC()/RestoreDC()/line caps.
169       gdiplus: Updated GdipDrawLines to use SaveDC()/RestoreDC()/end caps.
170       gdiplus: Added GdipStartPathFigure.
171       gdiplus: Added GdipDrawPath.
172       gdiplus: Added draw_polybezier error checking.
173       gdiplus: Added draw_polyline error checking.
174       gdiplus: Added basic matrix implementation.
175       gdiplus: Added GdipTransformMatrixPoints.
176       gdiplus: Added GdipCreateMatrix2 test.
177       gdiplus: Added GdipTransformPath.
178       gdiplus: Added GdipGetPathWorldBounds.
179       gdiplus: Fixed memory leak in GdipDeletePath.
180       gdiplus: Added GdipTransformMatrixPoints test.
181       gdiplus: Added GdipGetPathWorldBounds test.
182       gdiplus: Changed the way the direction of the endcap is calculated to make LineCapArrowAnchor direction match Windows better.
183       gdiplus: Added GdipSetPenLineJoin.
184       gdiplus: Use passed pen in GdipAddPathWorldBound.
185       gdiplus: Added more GdipGetPathWorldBounds tests.
186       gdiplus: Improved GdipGetPathWorldBounds handling of both matrix and pen's effect on bounding box.
187       gdiplus: Added GdipGetPathFillMode.
188       gdiplus: Added GdipResetPath.
189       gdiplus: Added GdipAddPathPath.
190       gdiplus: Added GdipAddPathPath test.
192 Francois Gouget (3):
193       ddraw/tests: Fix compilation on systems that don't support nameless unions.
194       Assorted spelling fixes.
195       ddraw/tests: Fix compilation on systems that don't support nameless unions.
197 H. Verbeet (8):
198       wined3d: Call IWineD3DDeviceImpl_FindTexUnitMap for cards without support for NV_REGISTER_COMBINERS as well.
199       wined3d: Only call activate_dimensions() if the texture is used.
200       wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for supported units.
201       wined3d: In tex_colorop() & tex_alphaop(), only check the mapped stage against GL_LIMITS(textures) if the texture is used.
202       wined3d: Cleanup shader_glsl_load_psamplers().
203       wined3d: Implement dsx & dsy shader instructions.
204       wined3d: Advertise A32B32G32R32F render target support.
205       wined3d: Advertise VTF support.
207 Hans Leidekker (9):
208       dwmapi: Add a stub implementation for DwmIsCompositionEnabled.
209       pdh: Add tests for opening and closing queries.
210       pdh: Add an uptime counter source based on GetTickCount.
211       pdh: Add tests for Pdh{Add, Remove}Counter and PdhCollectQueryData.
212       pdh: Implement and test PdhSetCounterScaleFactor and PdhGetFormattedCounterValue.
213       pdh: Implement and test PdhGetRawCounterValue.
214       pdh: Implement and test PdhGetCounterInfo{A, W} and PdhGetCounterTimeBase.
215       pdh: Use GetTickCount64 instead of GetTickCount.
216       pdh: Fix two typos.
218 Huw Davies (6):
219       winex11.drv: Pass root_window to XCreatePixmap to avoid BadDrawable errors.
220       winex11.drv: Move the PictFormats into an array.
221       winex11.drv: Use global Pictures for the tiles.
222       gdi32: Using a bitmap font as the fallback sans serif is a very bad idea.
223       kernel32: Swap incorrect use of buffers.
224       kernel32: SetNamedPipeHandleState() is a stub, so for now don't check its return value.
226 James Hawkins (56):
227       msi: Implement MsiSourceListGetInfoA.
228       msi: Add tests for MsiSourceListGetInfo.
229       msi: Validate MsiSourceListGetInfo parameters.
230       msi: Return ERROR_BAD_CONFIGURATION if the SourceList key does not exist.
231       msi: Return ERROR_SUCCESS if the PackageName property is not present.
232       msi: Add the IWineMsiRemotePackage interface.
233       msi: Add the IWineMsiRemoteCustomAction interface.
234       msi: Handle remote calls to MsiGetActiveDatabase.
235       msi: Handle remote calls to MsiGetProperty.
236       msi: Handle remote calls to MsiSetProperty.
237       msi: pcchValue represents the length of szValue in TCHARS, not bytes.
238       msi: Add support for the MSICODE_PATCH option.
239       msi: Add tests to show when the SourceList is published to the registry.
240       msi: PackagePath must also include the package name.
241       msi: Delay publishing of the SourceList until the PublishProduct action.
242       msi: Unpublish the product when it is entirely removed.
243       msi: Only publish the product if at least one feature is to be installed.
244       msi: Set the WindowsInstaller value in RegisterProduct instead of PublishProduct.
245       msi: Add tests for MsiQueryFeatureState.
246       msi: Open the correct key and return INSTALLSTATE_ADVERTISED if it's missing.
247       msi: Return INSTALLSTATE_ADVERTISED if the component list is empty.
248       msi: Return INSTALLSTATE_BADCONFIG if we can't decode the first component.
249       msi: Read the components state directly from the registry.
250       msi: Handle remote calls to MsiProcessMessage.
251       msi: Handle remote calls to MsiDoAction.
252       msi: Handle remote calls to MsiSequence.
253       msi: Handle remote calls to MsiGetTargetPath.
254       msi: Handle remote calls to MsiGetSourcePath.
255       msi: Handle remote calls to MsiSetTargetPath.
256       msi: Handle remote calls to MsiGetMode.
257       msi: Handle remote calls to MsiSetFeatureState.
258       msi: Handle remote calls to MsiGetFeatureState.
259       msi: Handle remote calls to MsiGetComponentState.
260       msi: Handle remote calls to MsiSetComponentState.
261       msi: Handle remote calls to MsiGetLanguage.
262       msi: Handle remote calls to MsiSetInstallLevel.
263       msi: Fix use of BSTRs.
264       msi: Handle remote calls to MsiFormatRecordW.
265       msi: Forward MsiFormatRecordA to MsiFormatRecordW.
266       msi: Handle remote calls to MsiEvaluateCondition.
267       msi: Enable remote custom actions.
268       msi: Match the changes made by the hand-generated and API-generated transforms.
269       msi: Delete msifile after the tests.
270       msi: Test adding columns with data in a transform.
271       msi: Handle adding columns in transforms.
272       msi: Check for NULL transform, as there may be no transforms for the _Columns or _Tables tables.
273       msi: Fix current _Property table tests and add more tests.
274       msi: Add tests for adding properties in a transform.
275       msi: Add tests for adding properties with a transform during an install.
276       msi: Fix a copy and paste error.
277       msi: Reload properties as they may have been changed by a transform.
278       msi: Fix automation.c compile for MSVC.
279       msi: Fix three tests that were failing in Windows.
280       msi: Fix compilation in MSVC.
281       msi: Add a test for installing from different current working directories.
282       msi: Add a test for running an ADMIN install.
284 Juan Lang (44):
285       crypt32: Use skip to avoid failures where support is missing.
286       crypt32: Don't fail when CryptVerifyCertificateSignatureEx is missing, use skip (and get rid of unnecessary indenting).
287       crypt32: Accept OSS errors.
288       crypt32: Accept OSS errors as well.
289       crypt32: Accept ERROR_BADKEY in addition to ERROR_INVALID_HANDLE.
290       crypt32: Accept ERROR_INVALID_PARAMETER in addition to ERROR_PATH_NOT_FOUND (and remove no-longer-useful checkFileStoreFailure).
291       crypt32: Pass function pointers to CryptMsgBase_Init rather than rely on callers to initialize them.
292       crypt32: Add more tests for opening a data message for encoding.
293       crypt32: Make a copy of a passed-in stream info rather than assuming the pointer will live forever.
294       crypt32: Test that inner content OID is ignored for data messages.
295       crypt32: Add tests for streamed encoding of data messages.
296       crypt32: Test and fix CryptMsgGetParam for streamed messages.
297       crypt32: Add a stub decode message implementation.
298       crypt32: Implement getting the type of a decode message.
299       crypt32: Add some tests for updating decode messages.
300       crypt32: More decode message update tests.
301       crypt32: Implement CryptSIPLoad.
302       crypt32: Implement CryptSIPGetSignedDataMsg, CryptSIPPutSignedDataMsg,
303       rsaenh: Get rid of the hash idle state, native doesn't behave as though it has one.
304       crypt32: Make some encoding functions available outside encode.c.
305       crypt32: Implement streamed encoding of definite-length data messages.
306       crypt32: Add open tests for hash messages.
307       crypt32: Add tests for updating hash messages opened to encode.
308       crypt32: Test opening hash messages to encode with streaming.
309       crypt32: Add a stub hash message implementation.
310       crypt32: Add tests for getting hash message params.
311       crypt32: Implement getting a hash message's hash value.
312       crypt32: Simplify hash value tests.
313       crypt32: Test updating hash messages with NULL stream output function.
314       crypt32: Partially implement updating hash messages.
315       crypt32: Add more missing defines.
316       crypt32: Implement getting hash message version.
317       crypt32: Add tests for hash message encoding.
318       crypt32: Copy data in hash message update.
319       crypt32: Add a helper function to copy params.
320       crypt32: Don't check if msg is NULL, tests show native doesn't either.
321       crypt32: Detached hash messages don't contain the content, so don't make a copy of it.
322       crypt32: Add tests for retrieving the content of a non-finalized (detached) message.
323       crypt32: Introduce an algorithm id encoding function that encodes missing parameters as NULL
324       crypt32: Implement retrieving a hashed message's content.
325       crypt32: Relax a test, the specific error isn't so important.
326       crypt32: Change finalized from a boolean to a state and use it to simplify message updating.
327       crypt32: Introduce an updated state, and use it to remove boolean "begun".
328       crypt32: Update comments about hash message version numbers.
330 Julio E. Gonzalez P (1):
331       ntdll: Add PYT and PYST time zones.
333 Kai Blin (1):
334       ws2_32: Handle IPv6 in WSAStringToAddress.
336 Ken Thomases (6):
337       winecoreaudio: Enable DirectSound HEL mode for output.
338       winecoreaudio: Enable DirectSound HEL mode for input.
339       winecoreaudio: Improve safety of iterations when returning WAVEHDRs to client.
340       winecoreaudio: Correct the AudioBufferList allocated for input.
341       winecoreaudio: Protect against AudioUnitRender clobbering our buffer list.
342       winecoreaudio: Report format error on sample rate mismatch when opening wave-in device.
344 Kovács András (1):
345       d3d10: Add stub for d3d10.dll.
347 Lei Zhang (2):
348       start.exe: Put double quotes around arguments with spaces.
349       winex11.drv: Remove old dnd code.
351 Maarten Lankhorst (6):
352       winealsa: Silence the buffer warning more often.
353       dsound: Revert "dsound: Disable property sets if hardware doesn't support it.".
354       dsound: Clean up some unused variables.
355       dsound: Remove some more unused variables.
356       dsound: Fix division by zero in DSOUND_Calc3DBuffer.
357       dsound: Simplify IDirectSoundBufferImpl_GetCurrentPosition.
359 Mark Adams (2):
360       iphlpapi: Add support for GetTcpTable on Mac OS X.
361       iphlpapi: Fix byte ordering of Linux ports.
363 Markus Gömmel (2):
364       comctl32/datetime: Added a missing InvalidateRect to update display after WM_ENABLE.
365       user32: Center MessageBox dialogs to desktop, as Windows does.
367 Michael Stefaniuc (2):
368       ntdll: Fix missing unlock on error path. Found by Smatch.
369       msvcrt: Remove superfluous casts of void pointers to other pointer types.
371 Mikołaj Zalewski (2):
372       comctl32: toolbar: The iImage in TBN_GETDISPINFO should be initialized to -1.
373       comctl32: toolbar: We should send TBN_GETDISPINFOW even for ANSI controls (with testcase).
375 Misha Koshelev (7):
376       gdi32: Slightly simplify result handling in PolyDraw.
377       urlmon/tests: Make http protocol mime type test pass on native.
378       urlmon: Improve ObtainUserAgentString conformance to native.
379       urlmon/tests: Add tests for ObtainUserAgentString.
380       urlmon: Implement HttpProtocol.
381       urlmon: Fix HttpProtocol_Start and strndupW to work properly with native wininet.
382       urlmon: Make HttpProtocol conform with native wininet on wine.
384 Paul Vriens (29):
385       advapi32/tests: Add tests for OpenSCManagerA.
386       user32/tests: Use skip.
387       user32/tests: Use skip.
388       advapi32/tests: Use skip when we don't have enough rights.
389       advpack/tests: Create the temporary inf-file in a directory where we are allowed to write.
390       kernel32/tests: Use skip when functions are not available.
391       kernel32/tests: Don't crash on win98.
392       kernel32/tests 2/2: Use skip for not implemented function.
393       advapi32/tests: Use skip for not implemented function.
394       secur32/tests: Use skip when functions are not available.
395       advapi32/tests: Add tests for OpenServiceA.
396       advapi32/tests: Add tests for CloseServiceHandle.
397       ddraw/tests: Use skip instead of trace.
398       ddraw/tests: Use skip instead of trace.
399       kernel32/tests: Add a forgotten if statement.
400       advapi32: Handle to Service Control Manager is checked first.
401       advapi32: Create specific access rights for service control manager handles.
402       gdiplus: Don't use struct member before NULL check (Coverity).
403       advapi/service: Simplify DeleteService by using RegDeleteTree.
404       advapi/service: Fix possible handle leak.
405       advapi/service: First tests (and fixes) for CreateService.
406       advapi/service: Check if we have enough access rights to create a service.
407       advapi/service: Check for empty servicename and binaryname.
408       programs/cmd: Do the assignment after the return to avoid a missing free() (Coverity).
409       advapi/service: Create specific access rights for service handles.
410       advapi/service: Check servicetype and starttype.
411       advapi32/tests: Use skip instead of trace.
412       crypt32/tests: Skip test if we don't have enough rights.
413       mscms/tests: Skip tests if we don't have enough rights.
415 Pedro Araujo Chaves Jr (1):
416       winspool.drv: Fallback to the first found printer as default printer.
418 Peter Dons Tychsen (1):
419       winex11: Fix X11DRV_DIB_GetImageBits() when target bitmaps are larger than fetched.
421 Rob Shearman (9):
422       secur32: Don't free the password in InitializeSecurityContextW to enable the credentials handle to be re-used in further InitializeSecurityContextW calls.
423       secur32: Add tests for multiple use of a credential handle.
424       rpcrt4: Translate between NCA and RPC status codes.
425       rpcrt4: Call RPCRT4_Send directly from PKT_RECEIVE handler in server.
426       rpcrt4: Return a fault packet if the proc num exceeds the index of the last function available for the interface.
427       ntdll: The impersonation level in NtDuplicateToken should be taken from the SecurityQualityOfService member of ObjectAttributes if present.
428       rpcrt4: Make binding to an interface a function of RpcAssoc instead of
429       msxml3: Implement IXMLDOMNode::get_text for CDATA, processing instruction and comment nodes.
430       mshtml: Implement HTMLElement_insertAdjacentHTML and HTMLElement_insertAdjacentText.
432 Romain Iehl (3):
433       dsound: Fix bug preventing correct calculation of the sound parameters
434       dsound: Simplify the calculation of sound attenuation due to distance.
435       dsound: Correct field access.
437 Stefan Dösinger (19):
438       wined3d: rsq and rcp use the .w component if no swizzle is given.
439       wined3d: Select onscreen contexts based on the thread id.
440       wined3d: Create multiple contexts for onscreen render targets.
441       ddraw: Z buffers can be attached to offscreen d3d devices.
442       ddraw: Fix an incorrect iface->impl cast.
443       ddraw: Materials in the execute buffer are handles.
444       ddraw: D3DOP_BRANCHFORWARD includes the current instruction size.
445       ddraw: Read the world matrix correctly.
446       ddraw: Implement IDirect3DViewport3::TransformVertices.
447       wined3d: Offscreen rendering from foreign threads.
448       ddraw: Update the wined3d matrix if a current matrix handle is modified.
449       ddraw: Y coords are inversed.
450       wined3d: Do not set streamIsUP in DrawPrimitiveStrided.
451       wined3d: Implement high order patches.
452       wined3d: Initialize surfaces at creation.
453       wined3d: Print the fixed and unfixed vertex warning only when needed.
454       wined3d: Add CTXUSAGE_CLEAR context usage.
455       wined3d: Make ActivateContext a bit smaller.
456       wined3d: Store the last active thread.
458 Thomas Weidenmueller (2):
459       shell32: Set current directory when executing files in a shell view.
460       shlwapi: Use publicly defined structure DATABLOCK_HEADER instead of redefining it locally.
462 Tim Schwartz (1):
463       net.exe: Converted strings to resources.
465 Vitaliy Margolen (9):
466       dinput: Correct test - use appropriate mouse state structure.
467       dinput: Keep the list of all the dinput devices created for each IDIrectInput object.
468       dinput: Keep a list of all IDirectInput objects and check it instead of refcount to create/destroy hook thread.
469       dinput: Export Mouse and Keyboard GUIDs.
470       dinput: Handle multiple keyboard and mouse devices.
471       dinput: Rename set_dinput_hook and call it from the base class.
472       dinput: Clear static variables after releasing hooks.
473       dinput: Convert IDirectInput into multi-interface object.
474       dxdiagn: Add reporting of some display related information.
477 Alexandre Julliard
478 julliard@winehq.org