The Wine development release 1.3.22 is now available.

What's new in this release (see below for details):
  - Support for Indic text shaping.
  - Generation of stubless code in the IDL compiler.
  - Support for X files in D3DX.
  - 4- and 24-bit bitmap formats in the DIB engine.
  - Listview performance improvements.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.22.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.22.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 1.3.22:

    219  Programs refuse to run because of safedisc copy-protection
   7065  Get SecuROM copy-protection working
   9781  Endless loop in Wineconsole with user mode
  12500  jedi knight window is unmanaged, no title or borders
  12949  assassin's creed to slow to play
  14129  Warcraft III: Reign of Chaos can't find CD/DVD Drive (SecuROM 4.x)
  15713  widl generates incorrect format string for top level conformance
  16332  crash in file dialog if the previous selected folder is deleted
  17094  Mr. Robot graphics fail to render
  17544  Gothic does not start (black screen) due to ddraw error
  17908  TCSPC fails to install
  18326  Pharaoh/Cleopatra doesn't recognize CD-ROM drive (SecuROM 4.x)
  19278  Roller Coaster Tycoon 2 will not run without no CD modification (SecuROM 4.x)
  20166  NetLocalGroupGetInfo() returns success but no data buffer
  20286  minimap problem in Supreme Commander Forged Alliance
  21036  Persian Font Problem
  21130  'cmd/c echo.' should give a newline
  21147  SafeDisc v1.3x media validation fails/launcher crashes (secdrv.sys doesn't support WinVer > Win2000) (Rayman 2, Microsoft Flight Simulator 2000, ...)
  21552  Pathologic hangs on starting up
  21594  Bottom of windows cut of with KDE4 Dual-Head Setup
  21998  FIFA 2010 crashes on start
  22964  Launching Deus-Ex game from Steam no longer works
  23145  Opera 10.53 crashes on startup
  23240  "Ambient Lighting" sample D3D program crashes
  23861  Multiple apps crash on startup/exit due to cross-process OLE drag and drop bug (Adobe Acrobat 7.0, HTML-Kit, Albumplayer, TortoiseSVN)
  23965  Steam exits silently when querying system information (crash due to missing crypt32.dll PFXVerifyPassword stub)
  24239  IW2 Edge of Chaos loses sound every few milliseconds
  24433  MS-Word complains "Do you want to revert to the saved '<filename>' ?" at opening files
  24642  Tag: The Power of Paint crashes with unimplemented function d3dx9_36.dll.D3DXLoadMeshHierarchyFromXA
  24683  Upper left corner of Epicenter setup heading is corrupt.
  24686  Kleptocracy crashes without d3dx9_28.dll
  24694  Agamemnon's Curse crashes with d3dx9_36.dll.D3DXLoadMeshHierarchyFromXW
  24739  Bioshock 2 cannot pass release date check
  25192  'fatal error in gc: collecting from unknown thread' with Mono
  25219  Demoscene demo @party invitation crashes with unimplemented function d3dx9_36.dll.D3DXLoadMeshFromXInMemory
  25368  Age of Empires 3: mp3's don't play in gstreamer if a native codec is installed
  25785  King Arthur - The Role-playing Wargame: severe visual artifacts
  25942  Wine's implementation of d3dtypes.h does not work with ISO C++.
  25999  wine builtin IE crash while opening zero byte file (such as https://mybank.icbc.com.cn/indexicbc.htm )
  26674  OpenGL 2.0 Shading Language Terrain Texturing Demo crashes on unimplemented function msvcp100.dll.??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ
  26885  del /s crashes if it encounters a directory containing a space
  26931  Nvidia hdr sample wants d3dx9_36.dll.D3DXLoadMeshFromXW
  27016  Fallout 3: fails to start
  27079  Painkiller Black: black screen and crash at start
  27093  CadStd: Toolbar buttons are shifted to the left
  27108  windows 7 cmd.exe aborts with unimplemented function KERNEL32.dll.RegOpenKeyExW
  27143  metatrader 4 doesnt show news and emails
  27167  Eve: can't move windows in game, mouse sticks
  27222  dbghelp.dll.SymEnumSourceFilesW needed (ollydbg2)
  27225  Looking around with the mouse is uncontrolled
  27250  Prey receives a truncated hostname from hostname.exe ?
  27270  Unimplemented function ntoskrnl.exe.ObReferenceObjectByName called by Activex control of cebchina online bank
  27280  BHDCInstall_per can not install (unimplemented function cfgmgr32.dll.CM_Get_Device_ID_List_SizeA )
  27302  Star Fury doesn't detect 3D device correctly
  27317  Finereader not showing dialogs
  27337  Raw sockets aren't closed correctly in ICMP monitoring programs
  27338  Msi should provide detailed error if temporary row can't be inserted (MSIMODIFY_VALIDATE_NEW -> MSIDBERROR_DUPLICATEKEY support, Dirt3 installer fails)
  27339  improper last error code set by GetUserNameW
  27342  Iexplore can't open url regression
  27343  Perfect World Russian doesn't start, since wine-1.3.20
  27348  _snprintf overflows specified bounds
  27369  Office 2007 SP2 installer reports success but fails to install some components
  27400  SecuROM 4.x/5.x helper driver needs ntoskrnl.exe.IoSetThreadHardErrorMode stub
  27411  Dark Fall crashes on launch

----------------------------------------------------------------

Changes since 1.3.21:

Adam Martinson (1):
      ole32: Don't call IDropTarget::QueryInterface() in RegisterDragDrop().

Alasdair Sinclair (1):
      comctl32/tab: Fully initialize itemData to fix x64 test failure.

Alexandre Julliard (46):
      winapi: Support optional parameters for stubs.
      widl: Don't output callback conformances for non-interpreted functions.
      widl: Array dimensions have to be constants.
      iphlpapi: Close the socket in IcmpCloseHandle.
      winevdm: Print an error when trying to start a DOS app from the z: drive.
      widl: Support using custom handle types with the implicit_handle attribute.
      widl: Add a more generic way of determining the type of handle for a function.
      widl: Fix representation of context handles in the format string.
      widl: Always update the type format offset in write_type_tfs and not in callers.
      widl: Don't allow unions passed by value or floating point returns for interpreted functions.
      widl: Add a -O option to specify stub style.
      widl: Generate function headers in the proc format string for interpreted functions.
      widl: Use the pointer offset for arrays declared as pointer in the proc format strings of interpreted functions.
      include: Make CLIENT_CALL_RETURN definition platform-specific to handle the return type incompatibility in NdrClientCall.
      msvcp60: Synchronize the spec file.
      msvcrt: Comment out exports with a non-standard comment to prevent make_specfiles from trying to update them.
      rpcrt4: Add entry points for the old-style stubless Ndr calls.
      widl: Always use signed types in parameter formats.
      widl: Add support for generating old-style interpreted stubs for proxies.
      widl: Add support for generating old-style interpreted stubs for clients.
      widl: Add support for generating old-style interpreted stubs for servers.
      widl: Add support for new-style interpreted stubs in the proc format strings.
      widl: Add support for generating new-style interpreted stubs for clients.
      widl: Add support for generating new-style interpreted stubs for servers.
      widl: Generate thunks for callas functions using interpreted stubs.
      widl: Add support for generating new-style interpreted stubs for proxies.
      widl: In 64-bit mode, pass all arguments to NdrClientCall instead of a pointer to the first one.
      widl: Set a correct fpu parameter mask on 64-bit.
      widl: Don't generate old-style interpreted stubs on 64-bit.
      widl: Don't allow floating point parameters for interpreted functions.
      widl: Don't require inline stubs for functions that are never generated.
      kernel32: Fix the handling of CAL_ITWODIGITYEARMAX in GetCalendarInfo.
      widl: Add a helper function for generating a stub that uses NdrClientCall.
      widl: Pass a structure containing the parameters to NdrClientCall instead of accessing the stack.
      widl: Fix packing of parameter structures for arguments larger than a pointer.
      widl: Fix a typo in updating the type format offset for strings.
      rpcrt4/tests: Add a few more marshalling tests.
      msi: Create temp files in the destination directory instead of the root.
      dispex: Make sure we don't pass a NULL array to IDispatchEx_InvokeEx.
      advapi32: Fix the parameter checks in QueryServiceStatusEx.
      advapi32: Always pass valid buffers in the EnumServicesStatus requests.
      rpcrt4: Don't marshall out-only parameters in the old-style stubless marshaller.
      rpcrt4: Fix handling of arguments passed by value in the old-style stubless marshaller.
      rpcrt4: Fix parameter stack size computation in the old-style stubless marshaller.
      rpcrt4: Add support for the argument size of varying arrays.
      rpcrt4: Don't try to bind to a null handle.

Alistair Leslie-Hughes (1):
      dbghelp: Add stubs SymFromIndex, SymFromIndexW.

Andrew Eikum (4):
      winealsa.drv: Partially implement IAudioSessionManager2.
      wineoss.drv: Partially implement IAudioSessionManager2.
      winecoreaudio.drv: Partially implement IAudioSessionManager2.
      mmdevapi: Add support for IAudioSessionManager in IMMDevice::Activate.

Andrew Nguyen (20):
      ddraw/tests: Remove a superfluous skip check.
      ddraw: Add a NULL callback pointer check in the EnumDevices implementations.
      ddraw: Remove some unused structure definitions in the private ddraw header.
      d3d8/tests: Avoid a shift overflow in render_state_test_data_init.
      d3d9/tests: Avoid a shift overflow in render_state_test_data_init.
      d3d9: Drop a superfluous cast in IDirect3DDevice9Impl_CreateOffscreenPlainSurface.
      d3d9: Match temporary variables with UINT return types and fix a return value.
      advapi32/tests: Add tests for GetUserNameA/W.
      ddraw: Extend the lifetime of the EnumDevices strings beyond function scope.
      ddraw: Handle a callback cancellation attempt in d3d7_EnumDevices.
      hostname: Output a CRLF newline with the hostname string.
      advapi32: Fix last error value of GetUserNameA/W and output buffer handling in GetUserNameA.
      ws2_32: Free the asynchronous query structure if thread creation fails.
      ws2_32/tests: Properly destroy the async test window.
      ws2_32: Avoid a crash with an optional pointer in WSAAsyncGetServByPort.
      dbghelp: Implement SymEnumSourceFilesW.
      ws2_32/tests: Avoid casting a WSAAccept function pointer parameter in test_accept.
      ws2_32/tests: Fix some test thread procedure prototypes.
      d3d8: Increment the reference count of the IDirect3D8 parent when creating a device.
      d3d9: Increment the reference count of the IDirect3D9 parent when creating a device.

André Hentschel (12):
      ws2_32/tests: Initialize atmark (valgrind).
      include: Define FIBER_FLAG_FLOAT_SWITCH.
      documentation: Replaced CVS with Git.
      winedbg: Increase buffer for function names.
      mscoree/tests: Broken return value is a HRESULT_FROM_WIN32.
      mscoree/tests: Test more IStream Functions on a ConfigStream.
      include: Add PF_XSAVE_ENABLED.
      c2man: Better detect that the file is in use.
      include: Fix IOCTL_STORAGE_SET_HOTPLUG_INFO.
      include: Add more storage ioctls.
      include: Add ATA ioctls.
      mscoree/tests: Mark a weird w2k3 result as broken.

Aric Stewart (30):
      usp10: Handle new OpenType tags for Microsoft Indic fonts.
      usp10: Improve Sinhala shaping using Indic rules.
      usp10: Add Devanagari script.
      usp10: Add Bengali script.
      usp10: Add Gurmukhi script.
      usp10: Add Gujarati script.
      usp10: Add Oriya script.
      usp10: Add Tamil script.
      usp10: Add Telugu script.
      usp10: Add Kannada script.
      ups10: Add Malayalam script.
      usp10/tests: Add Devanagari shaping test.
      usp10/tests: Add Bengali shaping test.
      usp10/tests: Add Gurmukhi shaping test.
      usp10/tests: Add Gujarati shaping test.
      usp10/tests: Add Oriya shaping test.
      usp10/tests: Add Tamil shape test.
      usp10/tests: Add Telugu shaping test.
      usp10/tests: Add Malayalam shaping test.
      usp10: Correct indic vowel marker name.
      gdi32: Fall back on uniscribe for complex scripts.
      usp10: Don't return prematurely from Chaining Contextual Substitution.
      usp10: Do not over increment glyph index in Chaining Contextual Substitution.
      usp10: Gurmukhi has Ras but no Ralf. So do not treat them as a lex_Ra for reordering.
      usp10: Correct matra type for Oriya 0x0B57.
      usp10: Refine Ralf reordering location for Devanagari and Gujarati.
      usp10: Execute half after pstf.
      usp10: Bengali initial form is only applied to the beginning of words.
      usp10: Sinhala vowels are not fully decomposed. The Kombuva is simply split off.
      usp10: Strip dangling joiners for Sinhala.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Austin English (2):
      imm32: Add a stub for ImmEnumInputContext.
      ntoskrnl.exe: add a stub for IoSetThreadHardErrorMode.

Dan Kegel (2):
      cmd: WCMD_delete: move "Delete *.* ?" processing into WCMD_delete_confirm_wildcard.
      cmd: WCMD_delete: fix /s for dirnames containing spaces, add test.

Daniel Scharrer (2):
      include: Fix compile error in d3dtypes.h for c++ programs that define D3D_OVERLOADS.
      include: Include math.h in d3dvec.inl as it uses sqrt().

David Hedberg (3):
      crypt32: Add BCryptEnumAlgorithms stub.
      ole32: Add ManualResetEvent implementation.
      oleaut32: Don't crash in wrapper if variant resides in read-only memory.

Detlef Riekenberg (1):
      shdocvw: Add support for IOleInPlaceSiteEx.

Dylan Smith (17):
      include: Pack ACMDRVSTREAMHEADER since ACMSTREAMHEADER is packed.
      d3dx9: Respect the options parameter for mesh loading.
      d3dx9/tests: Add tests for D3DXLoadMeshHierarchyFromXInMemory.
      d3dx9: Add support for loading materials from X files.
      d3dx9: Generate effect instances from materials for mesh loading.
      d3dx9/tests: Test effect generation and material loading for X files.
      d3dx9: Add support for loading texture coords from X files.
      d3dx9: Add support for loading vertex colors from X files.
      d3dx9/tests: Add texture coordinates and vertex colors in X file.
      d3dx9: Implement D3DXLoadMeshHierarchyFromX.
      d3dx9: Implement D3DXLoadMeshFromXInMemory.
      d3dx9: Support optional parameters for D3DXLoadMeshFromXInMemory.
      d3dx9: Implement D3DXLoadMeshFromX and D3DXLoadMeshFromXResource.
      d3dx9/tests: Add tests for D3DXLoadMeshFromXInMemory.
      d3dxof: Remove unnecessary fields from IDirectXFileEnumObjectImpl.
      d3dxof: Factor out duplicated code for parsing X file header.
      d3dxof: Factor out parse template loops into a function.

Frédéric Delanoy (1):
      taskmgr: No need for translatable string for IDC_MEM_USAGE_HISTORY_GRAPH pushbutton.

Gerald Pfeifer (1):
      imm32: Simplify find_window where we do not need to consider the return value of EnumChildWindows.

Hans Leidekker (24):
      msi: Skip files from global assemblies in the RemoveFiles action.
      msi: Set the SystemComponent installation property if necessary.
      appwiz.cpl: Don't list system components.
      uninstaller: Don't list system components.
      winhttp: Don't change the verb if the server response is HTTP_STATUS_REDIRECT_KEEP_VERB.
      wininet: Don't change the verb if the server response is HTTP_STATUS_REDIRECT_KEEP_VERB.
      wininet: Consistently use the allocation macros.
      crypt32: GetUserName sets last error to ERROR_INSUFFICIENT_BUFFER if the buffer is too small.
      msi: GetUserName sets last error to ERROR_INSUFFICIENT_BUFFER if the buffer is too small.
      msi: Factor out common code to execute custom action commands.
      msi: Reorder dialog functions to avoid forward declarations.
      msi: Revert 8321276cd34486bc6bf1e07c0e99c73423288854.
      msi: Fully initialize the MSISTORAGESVIEW and MSISTREAMSVIEW structures.
      msi: Print a warning instead of an error if we're going to remove an installed file.
      msi: Add support for returning validation errors.
      msi: Handle disabled components properly in the ProcessComponents action.
      msi: Get rid of forward declarations for custom action handlers.
      msi: Avoid some AW conversions.
      msi: Get rid of some more forward declarations.
      msi: Add a stub implementation of MsiCreateTransformSummaryInfo.
      msi: Remove redundant function find_feature_by_name.
      msi: Implement and test MsiGetFeatureInfo.
      msi: Implement and test MsiSetFeatureAttributes.
      advapi32: Make sure lpDisplayName is initialized in EnumServicesStatusA.

Henri Verbeet (20):
      wined3d: Don't clamp vertex depth values.
      wined3d: Rename IWineD3DDeviceImpl_MarkStateDirty() to device_invalidate_state().
      wined3d: Rename Context_MarkStateDirty() to context_invalidate_state().
      d3d8: Just return the resource type in IDirect3DResource8::GetType() implementations.
      d3d9: Just return the resource type in IDirect3DResource8::GetType() implementations.
      wined3d: Get rid of wined3d_texture_get_type().
      wined3d: Just enable ARB_shader_texture_lod if it's available.
      wined3d: Use GL_DEPTH_COMPONENT as internal format for depth_blt_texture.
      wined3d: Rename IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt to wined3d_check_pixel_format_depth().
      wined3d: cfg can never be NULL in wined3d_check_pixel_format_depth().
      usp10: Fix a memory leak in GDEF_UpdateGlyphProps().
      usp10: Store the GDEF table in the script cache.
      wined3d: Rename IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt() to wined3d_check_pixel_format_color().
      wined3d: cfg can never be NULL in wined3d_check_pixel_format_color().
      wined3d: Rename IWineD3DDeviceImpl_LoadLogo() to device_load_logo().
      wined3d: Rename IWineD3DDeviceImpl_UpdateVolume() to device_update_volume().
      wined3d: Rename IWineD3DImpl_FillGLCaps() to wined3d_adapter_init_gl_caps().
      wined3d: Handle unpack row length inside surface_upload_data().
      wined3d: Get rid of a NULL check for surface_upload_data().
      wined3d: Move PBO handling mostly out of surface_upload_data().

Huw Davies (11):
      gdi32: Add support for 4 bpp dibs.
      gdi32/tests: Add tests for 4 bpp dibs.
      gdi32: Add support for 4 bpp brushes.
      gdi32/tests: Add tests for 4 bpp brushes.
      gdi32: Add support for 24 bpp dibs.
      gdi32/tests: Add tests for 24 bpp dibs.
      gdi32: Add support for 24 bpp brushes.
      gdi32/tests: Add tests for 24 bpp brushes.
      gdi32: Fix an error in the blue channel of the 32 -> 16 bpp conversion and update the tests to catch this.
      gdi32: Update pixel colours when the colour table changes.
      winex11: Move the code that checks for a colortable based dib to a separate function.

Jacek Caban (23):
      include: Added iextag.idl file.
      mshtml: Added support for accessing document elements by index.
      mshtml: Added IHTMLElement::get_offsetLeft implementation.
      mshtml: Added IOmNavigator::get_mimeTypes implementation.
      mshtml: Don't release plugins collection in OmNavigator destructor since it contains a weak reference.
      mshtml: Added IDispatchEx support to HTMLMimeTypesCollection object.
      mshtml: Added IHTMLMimeTypesCollection::get_length implementation.
      mshtml: Added IHTMLElement::get_offsetParent implementation.
      iextag.idl: Added ClientCaps coclass declaration.
      urlmon: Initialize PROTOCOLDATA structure before passing it to Switch.
      urlmon: Avoid accessing an uninitialized variable (valgrind).
      urlmon: Avoid accessing an uninitialized variable (valgrind).
      widl: Don't duplicate optarg and optind declarations in sources.
      mshtml: Added VT_ERROR printing to debugstr_variant.
      include: Added fltdefs.h from mingw-w64 project.
      iphlpapi: Added PfCreateInterface stub implementation.
      urlmon: Correctly handle empty files.
      urlmon: Added empty file binding test.
      wininet: Moved INTERNET_STATUS_REQUEST_COMPLETE notifications sending to separated function.
      wininet: Don't pass handle to INTERNET_REQUEST_COMPLETE unless the request is opened via InternetPoenUrl.
      wininet: Set content_length when we reach end of data in netconn_read.
      wininet: Added dwError of INTERNET_STATUS_REQUEST_COMPLETE notifications tests.
      wininet: A small netconn_secure_verify code clean up.

Juan Lang (2):
      crypt32: Support CERT_COMPARE_NAME_STR_A in CertFindCertificateInStore.
      setupapi: Make sure machine name is non-empty before failing.

Jörg Höhle (5):
      mmdevapi/tests: Fix wrong buffer unit and memory leaks.
      winealsa: Properly allocate the WAVEFORMATEXTENSIBLE returned by GetMixFormat.
      winecoreaudio: Properly allocate the WAVEFORMATEXTENSIBLE returned by GetMixFormat.
      wineoss: Properly allocate the WAVEFORMATEXTENSIBLE returned by GetMixFormat.
      winecoreaudio: mmdevapi's mixer format is 32bit floating point.

Louis Lenders (5):
      crypt32: Add stub for PFXVerifyPassword.
      netapi32: Fill the data buffer with something useful in NetLocalGroupGetInfo.
      netapi32/tests: Add small conformance test for NetLocalGroupGetInfo and LocalGroupGetMembers.
      netapi32: Improve stubbed NetGetJoinInformation function.
      netapi32/tests: Add small conformance test for NetGetJoinInformation.

Marcus Meissner (7):
      comdlg32: Mark one vtable as static.
      windowscodecs: Mark 3 vtables static.
      wineoss.drv: Mark internal symbols with hidden visibility.
      ntdll: Specify div to be divl.
      mpr: Added missing pointer dereference (Coverity).
      kernel32: Pass in a real string to SetLocaleInfoA, not a function pointer (Coverity).
      gdiplus: Convert and pass in 3 points, not 1 (Coverity).

Mariusz Pluciński (4):
      shell32/tests: Basic tests of IKnownFolderManager.
      shell32/tests: Basic tests of IKnownFolder.
      include: Add definition of inline function FreeKnownFolderDefinitionFields.
      shell32/tests: Test of IKnownFolder::GetFolderDefinition.

Marko Nikolic (10):
      comctl32/tests: Fixed variable type, removed sign comparison warning.
      comctl32/tests: Use unsigned constants to remove sign comparison warning.
      comctl32/tests: Removed sign comparison warning in tooltip tests.
      comctl32/tests: Removed sign comparison warning in toolbar tests.
      comctl32/tests: Removed sign comparison warning in status tests.
      comctl32/tests: Removed sign comparison warning in tab tests.
      comctl32/tests: Removed sign comparison warning in monthcal tests.
      comctl32/tests: Removed sign comparison warning in listview tests.
      comctl32/tests: Removed sign comparison warning in imagelist tests.
      comctl32/tests: Removed sign comparison warning in rebar tests.

Matteo Bruni (3):
      wined3d: Mark some texture formats as filterable.
      wined3d: Fix glDrawBuffers() optimization.
      wined3d: Simplify context_apply_draw_buffers() a bit.

Michael Stefaniuc (43):
      d3dxof/tests: Fix an ok() comment to match the tested value.
      shell32: COM cleanup in autocomplete.c.
      shell32: COM cleanup for the IDropTargetHelper iface.
      shell32: COM cleanup for the IShellFolder2 iface in cpanelfolder.c.
      shell32: Finish the COM cleanup in cpanelfolder.c.
      shell32: COM cleanup in shfldr_mycomp.c.
      infosoft/tests: COM cleanup in infosoft.c.
      shell32: COM cleanup in shfldr_netplaces.c.
      fusion: COM cleanup for the IAssemblyName iface.
      d3d10core: COM cleanup for the ID3D10Texture2D iface.
      d3d10core: COM cleanup for the ID3D10Texture3D iface.
      d3d10core: COM cleanup for the ID3D10DepthStencilView iface.
      d3d10core: COM cleanup for the ID3D10ShaderResourceView iface.
      d3d10core: COM cleanup for the ID3D10GeometryShader iface.
      d3d10core: COM cleanup for the ID3D10BlendState iface.
      d3d10: COM cleanup for the ID3D10EffectType iface.
      d3d10core: COM cleanup for the ID3D10DepthStencilState iface.
      d3d10core: COM cleanup for the ID3D10RasterizerState iface.
      d3d10core: COM cleanup for the ID3D10SamplerState iface.
      d3d10core: COM cleanup for the ID3D10Query iface.
      d3d10: COM cleanup for the ID3D10EffectPass iface.
      d3d10: COM cleanup for the ID3D10EffectTechnique iface.
      d3d10: COM cleanup for the ID3D10Effect iface.
      d3d10: COM cleanup for the ID3D10ShaderReflection iface.
      advapi32: Remove wrong "is NULL and error out" code (coccicheck).
      inetcomm: Rename a typedef to prevent it from being shadowed.
      inetcomm: COM cleanup for the IMimeInternational iface.
      shell32: Pass object pointers instead of ifaces to internal helpers.
      shell32: COM cleanup for the IContextMenu2 iface.
      dxgi: COM cleanup for the IDXGIOutput iface.
      dxgi: COM cleanup in the IDXGISwapChain iface.
      ddraw: COM cleanup for the IDirect3DMaterial2 iface.
      ddraw: COM cleanup for the IDirect3DMaterial iface.
      dxgi: COM cleanup for the IWineDXGIFactory iface.
      dxgi: COM cleanup for the IWineDXGIDevice iface.
      dxgi: COM cleanup for the IWineDXGIAdapter iface.
      dxgi: COM cleanup for the IDXGISurface iface.
      ddraw: COM cleanup for the IDirectDrawGammaControl iface.
      ddraw: Rename d3d_material_init() and have it allocate the object too.
      ddraw: Avoid "unsafe" IDirect3DMaterial3 to object casts.
      ddraw: COM cleanup for the IDirect3DMaterial3 iface.
      ddraw: COM cleanup for the IDirect3DLight iface.
      ddraw: Use unsafe_impl_from_IDirect3DLight() for application provided ifaces.

Owen Rudge (1):
      winemapi: Ensure address is valid before checking for 'smtp:'.

Peter Urbanec (2):
      ws2_32/tests: Use WSAGetLastError() when reporting errors.
      ws2_32/tests: Socket error handling and reporting tests.

Piotr Caban (8):
      msvcrt: Fix mingw compilation issues.
      msvcrt: Fix pclmap and pcumap for "C" locale.
      msvcrt: Improved tolower_l and toupper_l implementation.
      msvcrt: Fixed buffer overflow in snprintf functions family.
      comctl32: Improve LISTVIEW_MarqueeHighlight performance.
      comctl32: Fix listview horizontal scrolling.
      comctl32: Fix ListView_Scroll implementation.
      msvcrt: Fix broken exports in spec file.

Piotr Pawłow (1):
      wined3d: Set container of swapchain surfaces to WINED3D_CONTAINER_NONE in swapchain_init() error path.

Rico Schüller (4):
      d3dx9: Improve effect sampler parsing.
      d3dx9: Implement ID3DXBaseEffect::GetFloatArray().
      d3dx9: Implement ID3DXBaseEffect::GetIntArray().
      d3dx9: Implement ID3DXBaseEffect::GetBoolArray().

Ričardas Barkauskas (16):
      ddraw: Use unsafe_impl_from_IDirectDrawSurface3() for application provided interfaces.
      ddraw: Rename surface_from_surface3() to impl_from_IDirectDrawSurface3().
      ddraw: Use a This variable in the IDirectDraw3 methods that lack one.
      ddraw: Change IDirectDrawSurface3_vtbl to IDirectDrawSurface3_iface.
      ddraw: Use unsafe_impl_from_IDirectDrawSurface7() for application provided interfaces.
      ddraw: Pass an object instead of iface to helper function CreateSurface.
      ddraw: Separate conversion from IDirectDrawSurface7 iface to object and conversion to other iface.
      ddraw: Separate other conversion to IDirectDrawSurfaceImpl from conversions to ifaces.
      ddraw: Use impl_from_IDirectDrawSurface7() instead of casts.
      ddraw: Avoid IDirectDrawSurfaceX to IDirectDrawSurface7 casts.
      ddraw: Change lpVtbl to IDirectDrawSurface7_iface.
      ddraw: Use unsafe_impl_from_IDirectDrawSurface4.
      ddraw: Separate IDirectDrawSurface4 vtable.
      ddraw: Separate IDirectDrawSurface2 vtable.
      ddraw: Use unsafe_impl_from_IDirectDrawSurface() for application provided interfaces.
      ddraw: Separate IDirectDrawSurface vtable.

Sean Sube (1):
      d3d9/tests: Added unbound sampler test for pixel shaders.

Stefan Dösinger (3):
      wined3d: Don't check the FBO status if FIXMEs are off.
      wined3d: Set last_was_blit to FALSE in the if condition that checks for it.
      wined3d: Silence R16 and AL16 fourcc warnings.

Vincent Povirk (6):
      ole32: Avoid opening source storage in IStorage::CopyTo.
      user32/tests: Add test for flags on keyboard messages.
      user32/tests: Ignore paint messages in hotkey tests.
      user32/tests: Add test showing hotkeys change the async key state.
      user32/tests: Test registering the same hotkey hwnd/id pair twice.
      user32/tests: Do not check the last error on succeeding hotkey calls.

Vitaliy Margolen (1):
      dinput: Keyboard does not support DIPROP_RANGE property.

Łukasz Wojniłowicz (1):
      loader: Add Polish translation.

--
Alexandre Julliard
julliard@winehq.org
