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

What's new in this release:
  - Many copy protection fixes.
  - GLSL is now the default for Direct3D.
  - Lots of memory errors fixed thanks to Valgrind.
  - Support for TOPMOST windows.
  - Beginnings of an inetcomm dll implementation.
  - 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.49.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.49.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.48:

Alex Villacís Lasso (7):
      riched20: Fix test crash on WinXP-SP2.
      riched20: Allow for Win98 behavior for return value of EM_REPLACESEL.
      riched20: Fix detection of CFE_LINK on WinXP-SP2.
      riched20: EM_GETMODIFY should not report modification after WM_SETTEXT (fixes todo_wine).
      user32: Fix LB_ITEMFROMPOINT tests for listbox control.
      user32: Fix for failing tests of LB_GETTEXT on listbox on Win98.
      riched20: Fix test failure in test_WM_PASTE.

Alexander Dorofeyev (2):
      comctl32: Pass command id of button in wParam.
      comctl32: Fix broken detection of non-empty string.

Alexander Nicolaysen Sørnes (2):
      mscat32: Add stub dll.
      shell32: Update Norwegian Bokmål translation.

Alexandre Julliard (45):
      winealsa.drv: Avoid the alsa alloca macros that cause compiler warnings.
      oleaut32: Properly initialize the result variant in VarImp.
      mscat32: Forward calls to wintrust where possible.
      server: Remove failed ioctls from the queue as soon as the result is set.
      pdh: Fix a couple of race conditions in the thread handling.
      user32: Fix a slightly incorrect assert.
      server: Add the generated files missing from the last commit.
      msvcrt: Silence FIXME about an unknown parameter that isn't used.
      server: Also return the new extended style in the set_window_pos request.
      user32: Don't allow changing the WS_EX_TOPMOST style with SetWindowLong.
      user32: SetParent should not make the window topmost.
      server: Fix get_next/prev_window behavior for unlinked windows.
      server: Added support for HWND_TOPMOST and HWND_NOTOPMOST.
      winex11.drv: Set the WM_STATE_ABOVE hint on topmost windows.
      user32: Store the builtin class names in Unicode.
      server: Allow to send a name instead of an atom when creating a window class.
      server: Support using a name to destroy a window class too.
      user32: Properly handle integer atoms specified as strings in class names.
      user32: Cache the window class name on the client side.
      user32/tests: Don't test the contents of uninitialized buffers.
      server: Allow to specify the class name instead of the atom to create a window.
      server: Allow to specify the class name instead of the atom to find a window.
      user32: Fixed A<->W translations of CREATESTRUCTs that contain atoms.
      Make some variables static.
      Include objbase.h where need to get the DllRegisterServer prototype.
      comctl32/tests: Flush pending events before progress repaint tests.
      include: Moved AttachThreadInput prototype to winuser.h where it belongs.
      kernel32: Add spec entries for LocaleNameToLCID and LCIDToLocaleName.
      include: Add WINUSERAPI to the exported user32 functions.
      include: Add WINGDIAPI to the exported gdi32 functions.
      include: Add WINADVAPI to the exported advapi32 functions.
      include: Add WINBASEAPI to the exported kernel32 functions.
      include: Add NTSYSAPI to the exported ntdll functions.
      include: Only use DECLSPEC_IMPORT for Windows compilers in unicode.h.
      include: Mark imported functions with hidden visibility.
      wine.inf: Add APPDATA and LOCALAPPDATA environment variables.
      gdi32: Make all internal gdi functions hidden.
      user32: Make all internal user32 functions and variables hidden.
      user32: Removed unused NC_DrawGrayButton function.
      winebuild: Add a few nops to stub entry points to make Safedisc happy.
      libwine: Refuse to use a WINEPREFIX dir owned by a different user.
      wldap32: Always return WLDAP32 error values instead of redefining the ldap.h ones.
      server: Don't drop mouse messages that should go to a different thread input.
      ntdll: Increase the signal stack size to avoid crashes on nested signals.
      user32/tests: Fix access to an uninitialized variable.

Alistair Leslie-Hughes (2):
      msxml: Fix a memory leak.
      msxml3: Fix memory leak.

Andrew Talbot (10):
      shell32: Constify some variables.
      shell32: Constify some variables.
      shell32: Constify some variables.
      shell32: Constify some variables.
      shell32: Constify some variables.
      shell32: Constify some variables.
      snmpapi: Constify a variable.
      twain_32: Constify a variable.
      urlmon: Constify some variables.
      user32: Constify some variables.

Aric Stewart (1):
      msdmo: Fix to DMOEnum to properly enumerate the keys and properly respect the flag.

Chris Robinson (3):
      mshtml: Set IE version when installing wine gecko.
      mshtml: Fix hkey leak.
      setupapi: Add stub for SetupInstallServicesFromInfSectionW.

Chris Wulff (4):
      shdocvw: Implement OLEIVERB_HIDE.
      shdocvw: Add IPersistMemory interface stub.
      kernel32: Added a stub for FindVolumeMountPointClose.
      hal: Added stubs for KfAquireSpinLock, KfReleaseSpinLock, KfLowerIrql, KfRaiseIrql.

Christian Eggers (1):
      ctapi32: Added wrapper dll for ctapi (CardTerminal API).

Dan Hipschman (7):
      widl: Fix ExprEvalRoutines output.
      widl: Add a --local-stubs option.
      rpcrt4/tests: Initialize memory in the get_name test.
      rpcrt4: Initialize allocated pointers to NULL in PointerUnmarshall.
      widl: Handle pointers to conformant arrays (e.g., "[size_is(, n)] int **p; ").
      widl: Don't output a void conformance for NdrClearOutParameters.
      widl: Don't rely on type_memsize to return 0 for all conformant arrays.

Dan Kegel (5):
      advapi32/tests: Fix undefined memory references in registry.c.
      ntdll: NtAccessCheck: Only send used bytes to server.
      cabinet: FCIAddFile: Set defaults in case callback doesn't set some fields.
      cabinet: FCICreate: Initialize oldCCAB.
      msvcrt: Fix two buglets in heap test.

David Adam (35):
      d3dx8: Implement D3DX*Normalize.
      d3dx8: Implement D3DX*BaryCentric.
      d3dx8: Implement D3DX*Hermite.
      d3dx8: Implement D3DX*CatmullRom.
      d3dx8: Test the function D3DXVec3Cross really.
      d3dx8: Implement D3DX*Transform.
      d3dx8: Implement D3DX*TransformCoord.
      d3dx8: Implement D3DXTransformNormal.
      d3dx8: Implement D3DX*Vec4Cross.
      d3dx8: Fix the condition in D3DXMatrixIsIdentity.
      d3dx8: Implement D3DXMatrixfDeterminant.
      d3dx8: Implement D3DXMatrixMultiply.
      d3dx8: Implement D3DXMatrixTranspose.
      d3dx8: Implement D3DXMatrixScaling.
      d3dx8: Implement D3DXMatrixTranslation.
      d3dx8: Implement D3DXMatrixRotationX.
      d3dx8: Implement D3DXMatrixRotationY.
      d3dx8: Implement D3DXMatrixRotationZ.
      d3dx8: Implement D3DXMatrixRotationAxis.
      d3dx8: Implement D3DXMatrixRotationQuaternion.
      d3dx8: Implement D3DXMatrixRotationYawPitchRoll.
      d3dx8: Implement D3DXMatrixLookAtRH.
      d3dx8: Implement D3DXMatrixLookAtLH.
      d3dx8: Implement D3DXMatrixPerspectiveRH.
      d3dx8: Implement D3DXMatrixPerspectiveLH.
      d3dx8: Implement D3DXMatrixPerspectiveFovRH.
      d3dx8: Implement D3DXMatrixPerspectiveFovLH.
      d3dx8: Implement D3DXMatrixPerspectiveOffCenterRH.
      d3dx8: Implement D3DXMatrixPerspectiveOffCenterLH.
      d3dx8: Implement D3DXMatrixPerspectiveOrthoRH.
      d3dx8: Implement D3DXMatrixPerspectiveOrthoLH.
      d3dx8: Fix the number and the type of variables in d3dx8.spec.
      d3dx8: Uniformize the matrix format in the tests.
      d3dx8: Implement D3DXMatrixOrthoOffCenterRH.
      d3dx8: Implement D3DXMatrixOrthoOffCenterLH.

Detlef Riekenberg (6):
      include/winbase: Fix a typo.
      kernel32: Fix description for SetDefaultCommConfig.
      acledit: Add a stub for FMExtensionProcW.
      shdocvw: Print the unsupported args in a FIXME.
      winspool: Error check in add_printer_driver() was to strict.
      winspool: Use unsigned type to avoid a compiler warning.

Dmitry Timoshkov (7):
      shlwapi: Fix a typo in the previous patch. Spotted by Francois Gouget.
      include: Synchronize DEVMODE layout with PSDK.
      user32: Initialize more fields in the DEVMODE structure.
      winex11.drv: Add support for saving/reading display settings.
      version: Use GetModuleHandleEx to increment the module ref count.
      winex11.drv: Initialize buffer size.
      user32: Simplify some code.

EA Durbin (4):
      wininet: Return true for case INTERNET_OPTION_SECURITY_FLAGS.
      d3dxof: Fix some return values.
      ntoskrnl.exe: Add stub Implementation of IoAllocateWorkItem.
      ntoskrnl.exe: Add stub Implementation of IoAllocateMdl.

Francois Gouget (18):
      shell32: Pass the shutdown reason to ExitWindowsEx().
      wineboot: Make sure 'Cancel' has the focus and is the default button in the 'Do you want to kill all your applications' dialog.
      wineboot: Add a reminder that EWX_FORCEIFHUNG is not implemented.
      winetest: Add an option that shuts Windows down once the tests have completed.
      cryptnet: Fix compilation on systems that don't support nameless structs.
      crypt32: Better match the PSDK types and update win32.api to fix the winapi_check warnings.
      shlwapi: Fix the DeleteMenuWrap() forward.
      tapi32: Add prototypes for lineInitializeExA/W().
      d3dx8: Fix compilation on systems that don't support nameless unions.
      d3dx8: Make sure d3dx8math.inl compiles fine, whether nameless unions are supported or not.
      user32: Fix compilation on systems that don't support either nameless unions or nameless structs.
      winex11: Fix compilation on systems that don't support either nameless unions or nameless structs.
      kernel32: Fix the image size in a test to avoid a BSOD on Windows XP SP1.
      d3dx8: Fix compilation on systems that don't support nameless unions.
      gdi32/tests: Dynamically load GdiAlphaBlend() so the test runs on Win9x.
      user32/tests: Skip some tests when DdeClientTransaction() returns NULL. This avoids some crashes on Win9x.
      Assorted spelling fixes.
      winex11: Add C alternatives to the assembly bits in X11DRV_DIB_SetImageBits_8().

Gerald Pfeifer (8):
      shlwapi/tests: Remove overly aggressive const declaration for TEST_URL_UNESCAPE.
      oleaut32: Use -0.0 directly in test_VarBstrFromR4().
      shell32: Remove useless comparison >= 0 for unsigned variables.
      comctl32: Make parameters of expect_band_content() match the corresponding types of REBARBANDINFO and fix one format string.
      wined3d: Fix type of loop variable in IWineD3DCubeTextureImpl_Destroy().
      user32: Don't check unsigned types for >= 0.
      shell32: Avoid checking for <0 for unsigned variables.
      dinput: Fix type of loop variable in alloc_device().

Hans Leidekker (18):
      snmpapi: Fix memory allocation in SnmpUtilVarBindListCpy.
      wininet: Always return an error when a transfer is in progress.
      wininet: Always close the data connection before receiving a server response.
      wininet: Always send a content length header, even if there is no content.
      wininet: Use a single connection for all ftp tests.
      wininet: Don't release the parent object in FTP_Connect, the caller will do that.
      pdh: Remove or fix tests that fail on Windows.
      wininet: Correct several ftp server response to error code mappings.
      wininet: Implement and test FtpCommand{A, W}.
      ntdll: Fix calculation of tape position offsets.
      wldap32: Fix build against latest OpenLDAP release.
      mlang: Release EnumRfc1766 object.
      mlang: Free SCRIPTINFO structure embedded in EnumScript object.
      mlang: Fix buffer size calculation.
      usp10: Fix a memory leak.
      usp10: Fully initialize LOGFONT structure.
      usp10: Fix a test to not rely on uninitialized memory.
      usp10: Fix some more memory leaks.

Huw Davies (7):
      inetcomm: Add self-registration code.
      include: Add a few defines and fill out IMimeMessageCallback.
      inetcomm: Add a stub for MimeOleCreateVirtualStream.
      inetcomm: Add two missing member functions.
      include: Add a couple more interfaces.
      inetcomm: Add a test for MimeOleCreateVirtualStream.
      inetcomm: Add a stub implementation of the MimeSecurity object.

Hwang YunSong(황윤성) (4):
      credui: Updated Korean resource.
      progman: Updated Korean resource.
      user32: Updated Korean resource.
      winemine: Update Korean resource.

Jacek Caban (13):
      itss: Fixed tests on old IE.
      msimtf: Fixed typos.
      shdocvw: Move registration code to .inf file.
      mshtml: More test fixes.
      mshtml: AsyncOpen code clean up.
      iexplore: Added self-registration code.
      urlmon: Added https protocol class factory stub implementation.
      shdocvw: Fixed typos.
      mshtml: Store HTMLDocument pointer in BSCallback object.
      mshtml: More range tests and fixes.
      mshtml: Call Exec(CGID_ShellDocView, 84) in start_binding.
      mshtml: Added AcceptLanguage handling.
      mshtml: Added IDM_SETDIRTY implementation.

James Hawkins (39):
      msi: Test the MoveFiles standard action.
      msi: Implement the MoveFiles standard action.
      msi: Remove a duplicated function.
      msi: Properly register and unregister components.
      msi: Properly register features.
      msi: Only unpublish the features if the entire product is being uninstalled.
      msi: A feature's requested action does not depend on its installed state.
      msi: do_query is supposed to fail, so don't release a handle that is never initialized.
      msi: Implement MsiSourceListAddSourceExA.
      msi: Don't create the product source key when adding a source.
      msi: Add tests for MsiSourceListAddSourceEx.
      msi: Return the error from OpenSourceKey.
      msi: Validate the product code.
      msi: Append a slash to network and url sources.
      msi: An empty source is an invalid parameter.
      msi: The options must include a source type.
      msi: Reimplement MsiSourceListAddSourceEx to handle reordering the source list.
      msi: Handle the MSIINSTALLCONTEXT_USERMANAGED context.
      msi: szUserSid must be NULL if context is MSIINSTALLCONTEXT_MACHINE.
      msi: Fix the location used to read machine context source list info.
      msi: Initialize a handle in case MsiGetSummaryInformation fails.
      msi: Test and implement the MSIMODIFY_DELETE command.
      msi: Remove a legacy error check.
      msi: Fix the sign of an index variable.
      msi: Remove an unused parameter.
      msi: Remove an unused parameter.
      msi: MsiViewGetError returns MSIDBERROR, not UINT.
      msi: MsiQueryFeatureState and MsiUseFeatureEx return INSTALLSTATE, not UINT.
      msi: MsiQueryProductState returns INSTALLSTATE, not UINT.
      msi: Use a magic constant to silence signedness comparison warnings.
      msi: Remove an unused parameter.
      msi: Fix the location used to write the user's environment variables.
      msi: Don't update a table entry when applying a transform if the string value is the same.
      msi: Explicitly check the returned value against -1 as the variable is unsigned.
      msi: Implement the CCPSearch standard action.
      msi: Add a missing struct initialization.
      msi: Test the install states of removed features.
      msi: Process the ADDSOURCE property when setting feature states.
      msi: Test that the install state is dependent on the feature and component registration.

Juan Lang (52):
      crypt32: Fix a leak in the tests.
      crypt32: Fix another leak in the tests.
      crypt32: Get rid of an unneeded variable.
      crypt32: Set size when calling CryptDecodeObjectEx without CRYPT_DECODE_ALLOC_FLAG set.
      crypt32: Fix a leak during chain creation.
      crypt32: Fix leaked chains creating the root store.
      crypt32: Fix a leak building an alternate chain.
      crypt32: Use memmove rather than memcpy when addresses might overlap.
      crypt32: Initialize a variable.
      crypt32: Don't leak buffer when a unicode string contains an invalid character.
      crypt32: Fix a leaked key.
      crypt32: Set last error on alloc failure.
      crypt32: Free memory on all paths.
      crypt32: Use consistent error checking.
      url: Fix prototype of FileProtocolHandlerA.
      crypt32: Initialize a variable.
      crypt32: Don't store a redundant copy of data in the message store.
      crypt32: Don't define function pointers that are NULL (and unused).
      comdlg32: Implement OFN_CREATEPROMPT checking.
      comdlg32: Grammar fixes.
      wsock32: Correctly handle the case where a table size is 0 in IP_MIB_TABLE_ENTRY_ID.
      wsock32: Don't use HEAP_ZERO_MEMORY for memory that's fully initialized anyway.
      setupapi: Fix a leak.
      setupapi: Correct a return value.
      setupapi: Downgrade an ERR to a WARN.
      setupapi: Don't convert strings past NULL-terminator.
      wsock32: Check return value rather than returned size for error.
      rsaenh: Use helper function to persist keys.
      rsaenh: Use helper function to create a container's registry key.
      rsaenh: Use helper function to open a key container's registry key.
      rsaenh: Use helper function to delete a key container's registry key.
      rsaenh: Use helper function to read key pairs from registry.
      rsaenh: Use LocalFree to free memory return by Crypt(Un)ProtectData.
      rsaenh: Fix a comment.
      crypt32: Describe CryptProtectData data format more accurately.
      crypt32: Save alg IDs in CryptProtectData output.
      crypt32: Use SHA1 rather than MD5 to protect data.
      crypt32: Use the enhanced provider rather than the default (base) provider.
      crypt32: Pass key length to CryptDeriveKey.
      crypt32: Set correct bit lengths for algorithms.
      crypt32: Use 3DES to encrypt data.
      crypt32: Fix a leak.
      crypt32: Fail decoding a CRL entry if the serial number is empty.
      setupapi: Add stubs for CM_Get_Device_IDA and CM_Get_Device_ID_Size.
      cfgmgr32: Forward cfgmgr32 functions to setupapi.
      wininet: Fix typo.
      wininet: Fix another typo.
      wininet: Don't use HEAP_ZERO_MEMORY on memory that's fully initialized.
      crypt32: Fix a couple leaks in test.
      crypt32: Fix another leak in tests.
      crypt32: If a decoding function failed, free the memory allocated for it.
      wininet: Initialize length of values that aren't being requested.

Kai Blin (2):
      netapi32: Fix valgrind warnings.
      ws2_32: Map SO_REUSEADDR.

Klaus Layer (1):
      ntdll: Add missing FIXMEs for incomplete info classes in NtQuerySystemInformation.

Kovács András (1):
      dwmapi: Add DwmEnableComposition stub.

Laurent Vromman (2):
      gdi32: Add a test for CloseFigure.
      gdi32: Correct a test where the tested function was not called.

Lei Zhang (13):
      comctl32: Move tab test's createParentWindow() into START_TEST().
      comctl32: Add tab insert item / get focus test.
      comctl32: Add tab delete item / get focus test.
      comctl32: Set tab focus correctly.
      comctl32: Datetime should close its monthcal when the monthcal loses focus.
      comctl32: Fix uninitialized, unused variables.
      comctl32: Fix typo in rebar.
      wininet: Initialize ftp sockets.
      wininet: Skip strcmp() in a test if the returned value/len is wrong.
      sane.ds: Get number of options only once.
      sane.ds: Check return value from sane_control_option().
      sane.ds: Check return value from sane_get_option_descriptor().
      sane.ds: Fix a memory leak.

Lionel Debroux (2):
      mshtml: Fix memory leak (found by Smatch).
      credui: Fix memory leak (found by Smatch).

Maarten Lankhorst (6):
      include: Add a few speaker defines to ksmedia.h.
      dsound: Add support for WAVEFORMATEXTENSIBLE format.
      dsound: Add conformance tests for 24/32 bits buffers and waveformatextensible.
      dsound: Add support for 24/32 bits input sound buffers.
      dsound: Add mixing and normalization functions.
      dsound: Use a 2 stage mixing/normalization for sound.

Marcel Partap (1):
      include: Add winddiui.h header.

Marcus Meissner (1):
      winalsa.drv: Explicitly include assert.h.

Michael Stefaniuc (1):
      pdh: Fix two missing LeaveCriticalSection() on error paths.

Mikolaj Zalewski (2):
      msvcrt/tests: Loosen the mbctype test to pass under Windows 9x and NT 4.0.
      user32: Better fix how to handle GetWindowLongPtr[AW](..., GWLP_WNDPROC) for builtin winprocs.

Nigel Liang (1):
      wininet: Release object in HttpSendRequestExW before return on error.

Paul Millar (1):
      widl: Add support for overriding recorded time, allowing binary-identical compilation.

Paul Vriens (3):
      ntdll: Report FIXME only once.
      advapi32/tests: Make tests run on win98 again.
      dsound/tests: Fix test failures on WinXP and 2003.

Rob Shearman (36):
      urlmon: Add tests for BindToObject for URL monikers based on the existing tests for BindToStorage.
      server: Add the name length to the object_attributes structure so that other variable length data can be present after object_attributes.
      server: Pass the security descriptor into create_file, if one is specified, and set the initial mode for the file appropriately.
      advapi32: Implement CredWriteW.
      advapi32: Implement CredReadW and CredFree.
      advapi32: Implement CredDeleteW.
      advapi32: Implement CredEnumerateW.
      advapi32: Implement ANSI credential management functions.
      advapi32: Add tests for credential management functions.
      advapi32: Implement filter matching for CredEnumerate.
      server: Make sure to always initialise req_sd.owner_len and req_sd.group_len in the handler for the get_security_object call.
      ole32: Improve the error reporting in the marshal test when CreateProcess fails.
      ole32: Add tests for CoGetObjectContext.
      ole32: Implement CoGetObjectContext.
      ole32: Remove an incorrect comment.
      setupapi: Make the setupapi tests load on systems < Vista by providing a private implementation of RegDeleteTreeW.
      rpcrt4: Add a test for the pointers in [in,out] pointer structs not changing when the pointers aren't NULL.
      inetcomm: Add stub implementation of inetcomm.dll.
      include: Add imnact.idl and imnxport.idl.
      inetcomm: Add a framework for connecting to a server and sending/receiving data asynchronously with callbacks being called in the context of the original thread, using window messages.
      inetcomm: Use InternetTransport_ChangeStatus in InternetTransport_DropConnection so that the callback gets called.
      inetcomm: Call InternetTransport_RegisterClass and UnregisterClass on process attach and detach respectively, to register a window class and initialize Winsock.
      inetcomm: Add stubs for MimeOleSetCompatMode and MimeOleCreateMessage.
      include: Add mimeole.idl.
      inetcomm: Include mimeole.h and fix the type of MimeOleCreateMessage.
      inetcomm: Add a stub implementation of the IMimeMessage object returned from MimeOleCreateMessage.
      include: Take care to not declare CtxtHandle and PCtxtHandle more than once when including both sspi.h and wincred.h.
      rpcrt4: Add a small bit of documentation as to what NdrStubCall2 does.
      rpcrt4: Move some type definitions from ndr_stubless.c to ndr_stubless.h.
      rpcrt4: Factorise out the argument processing from NdrStubCall2 into two functions.
      include: Add a new header file: midles.h.
      include: Fix a typo in midles.h.
      rpcrt4: Handle FC_IGNORE in the base type functions.
      server: Don't do access checks on the security descriptors of newly created objects.
      rpcrt4: Add a stub for RpcErrorStartEnumeration.
      rpcrt4: Add stubs for RpcMgmtSetCancelTimeout and RpcCancelThread.

Roderick Colenbrander (14):
      wined3d: Use native shader limits instead of the maximum the driver can handle in software.
      wined3d: Add proper PS2.0 detection for older cards with GLSL support.
      wined3d: Print the correct pixel/vertex shader version in a debug trace.
      wined3d: Fix the amount of texture memory in the debug traces.
      wined3d: Detect vertex shader 2.0 support using a pixel shader 2.0 limit.
      wined3d: Default to GLSL. This is safe because we now have proper ps2.0/vs2.0 detection.
      wined3d: Fix glsl detection bug.
      wined3d: Fix LockedRect regression.
      wined3d: Only use p8 conversion on render targets.
      wined3d: UnlockRect regression fix.
      wined3d: Rewrite the draw buffer selection code.
      wined3d: Make sure the format of the render target is P8 too.
      wined3d: Make sure SFLAG_LOCKED is set at the start of LockRect as various functions called from LockRect depend on it (e.g. LoadTexture if called from LoadLocation).
      wined3d: Make sure the p8 shader is set to 0 after destroying the main render target.

Rok Mandeljc (6):
      wnaspi32: Print error when device cannot be opened.
      wnaspi32: Degrade ERR of not finding registry entry for a device to TRACE.
      wnaspi32: Call ASPI_GetNumControllers() only once.
      wnaspi32: Do the command dumping only after device has been verified.
      wnaspi32: Fix Controller -> H/C mapping.
      wnaspi32: Fix controller number validation.

Stefan Dösinger (58):
      wined3d: Move drawable->sysmem reading to UpdateLocation.
      wined3d: Add a comment explaining what LoadLocation does.
      wined3d: Move sysmem->drawable copying to LoadLocation.
      wined3d: Move texture loading to LoadLocation.
      wined3d: Honor pbos when downloading a compressed texture.
      wined3d: Move texture -> drawable blits to LoadLocation.
      wined3d: Move memory allocation into a separate function.
      wined3d: Reenable render target unlocking via textures.
      wined3d: Move a part of LockRect to the base class.
      wined3d: Allocate memory for default pool resources too.
      wined3d: Disconnect allocatedMemory and Heap allocation.
      wined3d: Make resource memory 32 byte aligned.
      d3d9: Silence a FIXME.
      wined3d: Remove an unneeded check.
      wined3d: Remove a wrong return.
      wined3d: Move sysmem->drawable specific blit code out of LoadLocation.
      wined3d: Move drawable->sysmem specific code to its special function.
      wined3d: Move texture->sysmem specific code into its special function.
      d3d8: Initialize the vertex decl when allocating it.
      wined3d: Don't test D3DDEVICE surfaces in dsurface tests.
      wined3d: Only glBindAttribLocation used attributes.
      wined3d: Make pixel shader input an array.
      wined3d: Pixel Shader varying indexing.
      wined3d: Add a max varyings member to the gl info structure.
      wined3d: Handle ps 3.0 varyings in a different way.
      wined3d: Shader Model 3.0 varying tests.
      wined3d: Set the main hwnd before setting up the screen.
      wined3d: Set the display mode before creating the context.
      wined3d: Refuse to create volumes and volume textures if not supported.
      d3d9: Use HAL devices in some tests.
      ddraw: Be less picky about float precision.
      ddraw: Fix a test for Vista.
      d3d9: Remove some spamy debug traces from the texture test.
      wined3d: Install a varying map.
      wined3d: Implement the varying map.
      d3d9: Initialize the test rectangle correctly.
      wined3d: Free the backbuffer array.
      wined3d: Fix the varying number comparison.
      wined3d: Remove the conditional from texdepth.
      wined3d: Relative addressing offsets are limited to [-64; 63] in arb.
      wined3d: Get rid of the conditionals in the glsl lit implementation.
      wined3d: mov to a0.x does a floor(), not a round to nearest.
      wined3d: Replace the position fixup mul-add-add with a MAD.
      wined3d: Avoid NOP additions.
      wined3d: Honor the driver's min point size.
      wined3d: Take care for client storage and pbos.
      wined3d: Get rid of the conditionals in shader_glsl_compare.
      d3d9: Be less picky in the D3DFMT_X8L8V8U8 test.
      wined3d: Pass surface dirtification to the container.
      wined3d: Implement a detection for the MacOS OpenGL implementation.
      wined3d: Fix for MacOS'es incomplete glsl uniform truth.
      wined3d: Hide NP2 textures support on R500 and earlier cards.
      wined3d: Store the special uniforms' locations in the linked program.
      wined3d: Store integer uniform locations.
      wined3d: Load GLSL sampler uniforms at shader link time.
      wined3d: Reinstall the projected texture disabling for generated coords.
      d3d9: Release the window after the visual tests.
      wined3d: Actually store the PS's vertex processing flag.

Stefan Leichter (3):
      advpack/tests: Print the unexpected result in function check_ini_contents.
      d3dx8: Fix number of parameter of functions D3DXVec4Cross and D3DXVec?CatmullRom.
      browseui: Print 64bit integers with wine_dbgstr_longlong.

Thomas Weidenmueller (1):
      shell32: Use SHStrDupW in IShellFolder2::GetDetailsOf to allocate returned string.

Tim Schwartz (2):
      netapi32: Add stub for NetUseEnum().
      net.exe: Lists existing NetUse connections.

Tom Brus (1):
      ntdll: Serial/COM code misinterpreted XON/XOFF direction.

Vijay Kiran Kamuju (1):
      include: Add missing defines for RC5, SHA and AES in wincrypt.h.

Vincent Hardy (1):
      oleaut32: Add TypeLib version for W2K, WXP, and Vista.

Vitaliy Margolen (3):
      dbghelp: Fix detection of ELF libs by their name.
      kernel32: Implement GetProcessHandleCount.
      dinput: Add stub for DIPROP_AUTOCENTER property.

--
Alexandre Julliard
julliard@winehq.org
