The Wine development release 1.1.41 is now available.

What's new in this release (see below for details):
  - A wide range of Direct3D improvements.
  - Support for SHA-256, SHA-384, and SHA-512 algorithms.
  - A number of MSHTML fixes.
  - Support for mp3 decoding on Mac OS X.
  - Various widl improvements.
  - More typelib fixes.
  - OLE storage improvements.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.1.41.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.1.41.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
repository. Check http://www.winehq.org/site/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.1.41:

  10479  Grass jumping around in S.T.A.L.K.E.R.
  10829  err:ntdll:RtlpWaitForCriticalSection when trying to use an SMS-sending program
  11827  Asterix et les jeux olympiques demo crashes in shdocvw component
  11842  abel370 crashes
  12200  error message in TREPCAD on project creation
  12896  kernel32: pipe.ok hangs in PC-BSD but not Linux
  13302  GetProcessMemoryInfo is unimplemented
  13555  Adobe Acrobat Pro 6 does not install
  14057  "Psalmen - Lieder des Lebens" fails to load
  14511  Discworld Noir: segfault crash regression upon startup
  14616  Dracula Origin Demo: Pixelshaders broken
  15283  Morrowind: Random, usually reproducible crashes when traveling by boat
  15324  gdi32: bitmap test fails in PC-BSD but not Ubuntu
  16137  If a Linux window is set to On Top, it will not be able to be on top of a Wine window set on top
  16215  Adobe Framemaker 8.0 prevented from installing due to invalid O/S version
  16684  cnsconf.exe fails to start
  17056  Team Fortress 2 launched from within steam loads, but crashes when launching any map
  17251  Torrents renaming each other
  17324  Lotus Notes Client 6.5.5 crashed
  17731  Profesor Henry 5.0 doesn't run - a black screen appears
  18572  TCP(iexplore.exe:23945): Application bug, race in MSG_PEEK.
  18585  Evil Genius crashes with page fault in d3d9
  18613  Hero Lab hangs with an invisible message box while loading Mutants & Masterminds RPG game
  18632  gklayout.dll compiled from mingw fails to load (.dll from Firefox)
  18997  Warcraft 3 1.23 crashes after remaining one minute in a Battle.net chat room.
  19627  IPersistFile_fnGetCurFile too stubby, some installers fail
  19798  IoReportResourceUsage is not implemented
  20079  WOW locks up at login screeen
  20299  AutoCAD 2008: No images on buttons from Quick Help Toolbar
  20360  Mouse cursor changes colour
  20376  Albumplayer craches with dotnet20 function
  20714  build fails on OpenSolaris: ifenum.c:322: error: structure has no member named `ifr_hwaddr'
  21300  Sony Vegas 5 fails with open a new mp3
  21310  motocross madness crashing
  21323  Spelunky 0.98.1 crashes after config screen
  21426  Fallout Tactics no longer works
  21581  GTA4 crashes during "Lure" mission
  21784  Pandaland does not work
  21869  Jazz Jack Rabbit 2: Black/flickering screen followed by page fault
  21903  gdiplus: graphics test crashing
  21938  Test tool breaks secured wireless on windows 7 x64
  21941  Alpha Prime crashes right after the intro
  21946  Pokémon Play It! v2 installer aborts
  21949  Verbose the d3d vertices processing code
  21951  3D Studio Max 2010 trial installer crashes in GdipCreateTextureIA
  21954  Blood Ties (Yahoo! Games) fails during the startup
  21971  Gecko-using help viewer crashes application
  21980  ImgBurn: no recognized drives
  21993  Lemmings Paintball: Crash when skipping intro video
  22001  datetime.c test fails when LC_CTYPE="ru_RU.UTF-8"
  22017  LiveUpdate can not connect via proxy
  22020  Page Fault in wine_utf8_wcstombs when running ToonTalk/AvrStudio
  22028  King's Bounty. Armored Princess - mouse doesn't work
  22035  After clicking a link in Steam program it crashes
  22043  Regression of VB6 string comparison bug 14703

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

Changes since 1.1.40:

Alexandre Julliard (17):
      krnl386.exe: Preload gdi and user when thunks are being used.
      makefiles: Don't recurse for the testclean target.
      kernel32: Abstract the key creation routine and move the key existence check to the top-level function.
      makedep: Append the separator if not found in an existing makefile.
      makedep: Output source dependency for bison files needed for parallel makes.
      makefiles: Remove the no longer needed explicit separators for dependencies.
      makefiles: Remove the no longer needed explicit dependencies for bison files.
      makefiles: Add more shell functions to generate the main makefile.
      kernel32: Don't try to open builtin exe files during CreateProcess, only check the path syntax.
      user32/tests: Add some tests demonstrating that SetCursor uses the thread input data.
      user32/tests: Add some tests for ShowCursor.
      user32/tests: Add some tests for GetCursorInfo.
      user32: Return fake global information in GetCursorInfo instead of thread-local values.
      gdiplus/tests: Create a window for graphics tests instead of painting over the desktop.
      winegcc: Force importing msvcrt when using the Unicode hack for a Windows build.
      oleaut32: Move variable declaration outside of the switch statement.
      shlwapi/tests: Avoid size_t in a trace.

Andrew Eikum (6):
      shlwapi: Improve error handling in UrlGetPart.
      hlink: Set hlink's location to NULL if the empty string is given.
      hlink: Split target at hash in HlinkCreateFromString.
      hlink: Implement IHlinkBrowseContext::GetBrowseWindowInfo.
      mshtml: Fix return value interpretation when navigating.
      shlwapi: Only skip 'localhost' in file URLs in UrlCanonicalize.

Andrew Nguyen (8):
      wine.inf: Add LSA key under the HKLM control key.
      dxdiagn/tests: Add tests for IDxDiagContainer.
      dxdiagn: Fix return and output behavior of IDxDiagContainer::EnumChildContainerNames.
      dxdiagn: Fix string copy behavior with an excessively short buffer in IDxDiagContainer::EnumChildContainerNames.
      dxdiagn: Initialize output pointer to NULL in IDxDiagContainer::GetChildContainer.
      dxdiagn: Fix dot parsing in IDxDiagContainer::GetChildContainer for the case of a lone dot terminator.
      dxdiagn: Fix return and output behavior of IDxDiagContainer::EnumPropNames.
      dxdiagn: Fix string copy behavior with an excessively short buffer in IDxDiagContainer::EnumPropNames.

André Hentschel (3):
      oleaut32/tests: Remove a todo_wine from a dead test.
      documentation: Keep README.de in sync.
      README.de: Sync german filesystem support section.

Aric Stewart (2):
      winemp3.acm: Support mp3 decoding on Mac OS/X Leopard systems.
      msctf: Add stub for ITfDisplayAttributeMgr.

Christian Costa (14):
      d3dxof: Fix tzip and bzip files tests on all windows platform.
      d3dxof: Avoid using strlen for specifying templates or objects size.
      d3dx9_36: Rename variables in D3DXGetShaderConstantTable(Ex) to match naming convention used in the file.
      d3dx9: Fix typo in ID3DXConstantTable_SetMatrixTranspose macro.
      d3dx9: Add some shader definitions.
      d3dx9_36/tests: Fix contant table header in ctab data.
      d3dx9_36: Add stub for D3DXCreateTextureFromFileInMemoryEx.
      d3dx9_36: Implement ID3DXConstantTableImpl_GetDesc + tests.
      d3dx9_36: Add missing GetSamplerIndex method to ID3DXConstantTable.
      d3dx9_36: Fix method name.
      d3dx9_36: Use %u to print unsigned integer.
      d3dx9: Add d3dx9effect.h include file.
      d3dx9_36: Add stub for D3DXCreateEffect.
      attrib.exe: Add stubbed command.

Damjan Jovanovic (4):
      setupapi: Stub out SetupDiRemoveDevice.
      ntoskrnl.exe: Implement IoIsWdmVersionAvailable.
      usbd.sys: Add stub usbd.sys.
      usbd.sys: Add USB descriptor parsing functions.

David Hedberg (3):
      wine.inf: Add key for approved shell extensions.
      shell32: SHCreatePropSheetExtArrayEx should check if the key itself contains the clsid of the shell extension.
      shell32: Initial support for the properties command in the IContextMenu for shellview.

Detlef Riekenberg (7):
      msvcr70: Add msvcr70.dll with forwards to msvcrt.dll.
      msvcr80: Add msvcr80.dll with forwards to msvcrt.dll.
      msvcr90: Add msvcr90.dll with forwards to msvcrt.dll.
      msvcr90: Implement _initterm_e.
      msvcr80: Forward _initterm_e to msvcr90.dll.
      msvcr90: Forward _malloc_crt to msvcrt.malloc.
      msvcr80: Forward _malloc_crt functions to msvcrt.malloc.

Dmitry Timoshkov (2):
      gdi32: Fix GDI locking in SetBitmapBits.
      user32: Restore special handling of monochrome bitmaps removed by c2202929ab4b6d1ce379865dfd8904186814f265.

Eric Pouech (14):
      dbghelp: Added full support for DW_FORM_data8 attributes, as well as primary support for DW_FORM_block* attributes.
      dbghelp: Added helper to free module's specific data (ELF, MSC...) upon removal.
      dbghelp: Store the file map in ELF's module specific data.
      dbghelp: Make the ELF mapping code easier to use.
      dbghelp: Extend the ELF image management to PE modules so we get a rather uniform interface to image manipulation.
      dbghelp: Create the notion of image (PE, ELF modules) to uniformize some handlings.
      dbghelp: Keep the file map around for every PE module, so that we can access image whenever we like to.
      dbghelp: Extend the image (ELF/PE) scheme to get the RVA out of a section.
      dbghelp: Let dwarf_parse decide on which sections it needs to map.
      dbghelp: Now that we can keep ELF sections around, don't copy the loclist section, just don't unmap it.
      dbghelp: Create new infrastructure to hold specific information for multiple file/debug formats in a single module, and use it to store dwarf2 stuff.
      dbghelp: Move the PE debug info to the newly define scheme.
      dbghelp: Moved the ELF's module information into the new scheme.
      dbghelp: Move the mach-o information into the modfmt structure.

Francois Gouget (2):
      include: Also define the WSAxxx error codes in winerror.h.
      server: Don't include winsock.h to avoid creating a dependency on generated headers.

Gerald Pfeifer (4):
      comdlg32: Removed unused parameters from PRINTDLG_WMInitDialogW and PRINTDLG_WMInitDialogA.
      comdlg32: Removed unused parameters from FILEDLG95_OnWMSize, FILEDLG95_OnWMCommand, and FD32_WMMeasureItem.
      comdlg32: Remove unused parameters from CFn_WMMeasureItem and CFn_WMDrawItem.
      ntdll: Avoid compiler warning in the default case in append_entry.

Henri Verbeet (43):
      server: Debugging our own process is disallowed.
      ddraw: Print unhandled vertex processing flags in IDirect3DExecuteBufferImpl_Execute().
      d3dx9_36: ID3DXBuffer is a base interface for ID3DXConstantTable.
      d3dx9_36: Not implementing an interface is not an internal error.
      wined3d: Kill pbuffer offscreen rendering support.
      wined3d: Don't partially initialize contexts in AddContextToArray().
      wined3d: Move device context array functions to device.c.
      ntdll: Fix the ProcessDebugPort information length in NtQueryInformationProcess().
      ntdll: Improve support for the ProcessDebugPort info class in NtQueryInformationProcess().
      kernel32: Implement CheckRemoteDebuggerPresent().
      wined3d: Use "gl_info" in some more places in context_create().
      wined3d: Add a separate function to set the pixel format in context_create().
      wined3d: Store the swapchain instead of the surface in the context.
      wined3d: Use the context's window handle in stretch_rect_fbo().
      wined3d: Use the context's window handle in IWineD3DSurfaceImpl_BltOverride().
      wined3d: The swapchain should always have a window handle.
      wined3d: Simplify a comparison in IWineD3DDeviceImpl_Reset().
      wined3d: Store the device window in the swapchain.
      wined3d: Implement SetDestWindowOverride() by simply making the context current on a different window.
      wined3d: Use "gl_filter" in the non-FBO path of swapchain_blit() as well.
      wined3d: Don't use filtering on textures that need complex fixups in swapchain_blit().
      wined3d: Don't use framebuffer blit for backbuffer formats with fixups in swapchain_blit().
      wined3d: Add missing checkGLcall's to buffer_Map().
      wined3d: Simplify context_apply_attachment_filter_states() flow a bit.
      wined3d: Simplify the IWineD3DDeviceImpl_ClearSurface() surface loading code.
      wined3d: Don't change the draw buffer in IWineD3DDeviceImpl_SetFrontBackBuffers().
      wined3d: Cleanup IWineD3DDeviceImpl_SetFrontBackBuffers().
      ddraw: Implement IDirectDrawImpl_GetSurfaceFromDC().
      ddraw: Fix IDirectDraw4Impl_GetSurfaceFromDC().
      user32/tests: Add a test for foreground windows on a different thread.
      d3d8/tests: Extend the window proc / focus window tests.
      d3d9/tests: Extend the window proc / focus window tests.
      wined3d: Make the focus window also the foreground window.
      ddraw: Acquire/release the focus window from the correct location.
      wined3d: Unify GLINFO_LOCATION in surface.c.
      wined3d: Add a quirk to rebind FBOs when one of their attached textures is updated.
      wined3d: Replace some VTRACEs with proper TRACEs.
      wined3d: Kill VTRACE.
      wined3d: Avoid some common invalid context accesses.
      wined3d: Simplify the generated GLSL for NRM.
      wined3d: Rename GlPixelFormatDesc to wined3d_format_desc.
      wined3d: Unify "gl_formats_template" naming with the other format info tables.
      wined3d: Add COMPLEX_FIXUP_NONE as value 0 to the complex_fixup enum.

Henry Kroll III (1):
      notepad: Don't prompt to save empty Untitled file.

Huw Davies (2):
      wineps.drv: Retrieve the full printer name to avoid truncation when the name is 32 characters or longer.
      dispex: Implement proxy and stub for IDispatchEx_InvokeEx.

Ilya Basin (1):
      shell32/tests: Add tests for the parser of SHELLEXECUTEINFO.lpFile.

Jacek Caban (21):
      mshtml: Fixed ref count leak.
      mshtml: Ignore EndLoad call if document is already detached.
      shdocvw: Use heap_alloc_zero to allocate DocHost objects.
      shdocvw: Store object passed in DOCHOST_DOCCANNAVIGATE command.
      shdocvw: Separate document state from control state.
      shdocvw: Pass post data as SAFEARRAY to on_before_navigate2.
      shdocvw: Use IHTMLPrivateWindow for navigation in navigate_hlink if available.
      shdocvw: Use IHTMLPrivateWindow for navigation in navigate_url if available.
      shdocvw: Added more navigation tests.
      mshtml: Ignore load event on detached documents.
      mshtml: Return S_OK from IHTMLDocument2::get_referrer.
      mshtml: Forward setting document.location to window object.
      mshtml: Use user agent string in IOmNavigator::get_appVersion.
      shdocvw: Fixed tests on some Windows.
      mshtml: Make sure that readState is READYSTATE_LOADING in read_stream_data.
      mshtml: Fire readystatechange event on document nodes.
      mshtml: Moved removing event target to separated function.
      mshtml: Added support for load event on all nodes.
      mshtml: Added IHTMLImgElement::onload property implementation.
      mshtml: Added IHTMLImgElement::onload tests.
      cmd: Added @or_broken@ handling to test templates and use it to fix tests on win2k.

Jeff Latimer (2):
      usp10: Change default glyph returned from 0xffff to 0.
      comctl32: cchTextMax needs to be set for LVS_OWNERDATA as it uses LVN_GETDISPINFO notifications.

Juan Lang (13):
      iphlpapi: Check for ifr_hwaddr member of struct ifreq.
      iphlpapi: Rename a function and variables to make it clearer they're related to IPv4 addresses.
      iphlpapi: Pass address family to adapterAddressesFromIndex.
      iphlpapi: Implement GetAdaptersAddresses for IPv6 addresses.
      rsaenh: Fix some test failures on Win9x/NT4.
      rsaenh: Add simple tests for SHA-256, SHA-384, and SHA-512.
      include: Add a few missing OIDs.
      wininet: Handle proxy entries of the form <proto>=<proxy>, and allow multiple proxies.
      rsaenh: Add support for SHA-256, SHA-384, and SHA-512.
      rsaenh: Add signature support for SHA-256, SHA-384, and SHA-512 hashes.
      crypt32: Add constants to support SHA-256, SHA-384, and SHA-512.
      crypt32: Switch to use the AES provider by default.
      crypt32: Add support for the anyPolicy certificate policy.

Julian Rüger (1):
      windowscodecs: Small spelling fixes.

Justin Chevrier (2):
      gdiplus/tests: Expand GdipImageGetFrameCount test coverage.
      gdiplus: Basic implementation of GdipImageGetFrameCount with updated tests.

Jörg Höhle (6):
      mciavi: Prevent deadlock when closing while playing or when paused.
      mcicda: Prevent crash when closing while playing.
      mciavi: Stubs should return a success code.
      mciseq: MCI Set Port allows to select the MIDI device.
      msvfw32: MCI Step is like Seek.
      midimap: Allow GetVolume by device identifier.

Maarten Lankhorst (9):
      dsound: Improve underrun behavior.
      mmdevapi: Implement property store.
      mmdevapi: Add IMMEndpoint to IMMDevice.
      mmdevapi: Implement some methods in IMMDevice.
      mmdevapi: Implement MMDeviceCollection methods.
      mmdevapi: Implement IMMDeviceEnumerator::GetDevice.
      mmdevapi: Pass a property bag to IBaseFilter in IMMDevice::Activate.
      midimap: Defer initialisation.
      winmm: Allow SND_ALIAS|SND_FILENAME in PlaySound.

Maciej Borsz (1):
      winhttp: Fix invalid behaviour of WinHttpCrackUrl.

Michael Stefaniuc (4):
      ddraw: Remove redundant memset.
      iphlpapi: Don't crash when enumerating PtP interfaces.
      oleaut32: Remove superfluous NULL check before HeapFree (Smatch).
      oleaut32: Plug some memleaks on error paths (Smatch).

Nicolas Le Cam (1):
      wine.inf: Define the Win64 DefaultInstall.Services section.

Nikolay Sivov (24):
      shell32/shellview: Improve error handling on some helpers, fix possible leak.
      shell32/shellview: Use W-calls for menu handling, same for SendMessage to ListView window.
      shell32: Initial test file for IShellView/IFolderView, implemented IFolderView::GetSpacing.
      shell32/shellview: Remove unneeded memset, release browser reference on failure.
      shell32/shellview: Implemented IFolderView::GetSelectionMarkedItem() with basic test.
      shell32/shellview: Implemented IFolderView::GetFocusedItem.
      shell32/shellview: Implement IFolderView::GetFolder() for IID_IShellFolder.
      shell32/shellview: Implement IFolderView::ItemCount for SVGIO_ALLVIEW flag.
      shell32/shellview: Don't crash on ::DragLeave called without droptraget.
      shell32: Add SHCreateFileExtractIconW stub.
      shlwapi: Partially implement SHGetObjectCompatFlags with tests.
      avifil32: Registry access calls don't return HRESULT codes.
      msi: Convert IWineMsiRemoteDatabase BSTR parameters to LPCWSTR to avoid typecast.
      shlwapi: Don't cast WCHAR string to BSTR.
      quartz: Don't cast WSTR to BSTR, convert properly instead.
      comctl32/datetime: Use user locale for format.
      msxml3: Treat input BSTR as general WCHAR string for ::loadXML().
      ole32: Turn FIXME to TRACE for CoGetTreatAsClass.
      ole32: Remove useless parameter check.
      urlmon: Add stub IUriBuilder interface.
      urlmon: Add CoInternetIsFeatureEnabled stub.
      shlwapi: Add a forward to DelayLoadFailureHook.
      shlwapi: Fix StrCpyNW to deal with null inputs better, and don't use lstrcpynW.
      shell32: Add IPersistFile::GetCurFile implementation for IShellLink.

Paul Chitescu (3):
      qedit: In SampleGrabber ReceiveConnection check early the format type, return VFW_E_INVALIDMEDIATYPE like native.
      qedit: SampleGrabber pins should enumerate a preferred format only after the input pin is connected and a fully defined format is known.
      qedit: Implement buffering in SampleGrabber.

Paul Vriens (13):
      msi/tests: Remove a key after running tests.
      advapi32/tests: Restore default cryptographic provider after the tests.
      oleaut32/tests: Don't add typelib information to the registry.
      shlwapi/tests: Fix a test failure on NT4.
      mshtml/tests: Fix some test failures on Win9x/WinMe by using a A-function.
      kernel32/tests: Run tests again on Win95.
      gdiplus/tests: Fix a test failure on Win98/WinMe.
      rsaenh/tests: Fix some test failures on XP (pre SP3).
      shlwapi/tests: Fix some test failures on XP/Vista.
      shlwapi/tests: Fix some test failures on Vista+.
      d3d8/tests: Fix timeouts on Win9x/WinMe.
      d3d9/tests: Fix timeouts on Win9x/WinMe.
      user32/tests: Fix timeouts on Win9x/WinMe.

Piotr Caban (16):
      oleaut32: Simplify ICreateTypeInfo2_SetTypeFlags implementation.
      oleaut32: Improve TypeInfos with changed TypeKind handling.
      oleaut32: Improve dual interfaces creation in typelib.
      oleaut32: Added ICreateTypeInfo2_SetFuncHelpContext implementation.
      oleaut32: Fix some reference leaks.
      oleaut32: Fix importinfo flags.
      oleaut32: Remove incorrect memid validation.
      oleaut32: Use QueryPathOfRegTypeLib in ICreateTypeInfo2_AddRefTypeInfo.
      oleaut32: Improved ICreateTypeInfo AddFuncDesc implementation.
      oleaut32: Improve ICreateTypeInfo_LayOut implementation.
      oleaut32: Set parameter to NULL in GetMops stub.
      oleaut32: Improve ITypeInfo2 GetTypeAttr implementation.
      oleaut32/tests: Make tests working on older systems, prevent crash on some wine boxes.
      oleaut32: Fix ITypeInfo GetImplTypeFlags for dispinterfaces.
      oleaut32: Improve ICreateTypeInfo2 AddImplType implementation.
      oleaut32: Improve ITypeInfo2 GetRefTypeOfImplType implementation.

Ričardas Barkauskas (2):
      wined3d: Fix ATI2N pitch and offset calculations.
      d3d9/tests: Test ATI2N pitch and locking offset behaviour.

Rob Shearman (16):
      widl: Remove some unused functions, definitions and types.
      widl: Make write_pointer_tfs more readable.
      widl: Simplify write_typeformatstring_var.
      widl: Write pointers in write_typeformatstring_var using write_pointer_tfs.
      widl: Don't use the return value of write_embedded_types to determine whether a type contains pointers or not.
      widl: Merge write_typeformatstring_var and write_embedded_types into one function, write_type_tfs.
      widl: Use typegen_detect_type to determine which types should be written for the pointer description in write_struct_tfs.
      widl: Pass current_structure into write_conf_or_var_desc in write_ip_tfs.
      widl: error_status_t isn't an allowed conformance type.
      widl: Fix the writing of expressions in un-typedef'd structures by using write_type_left to write out the type, which adds the "struct ..." if necessary.
      widl: Remove some FIXME comments and replace them with comments explaining why the current behaviour is correct.
      widl: Clean up array case in write_remoting_arg.
      widl: Simplify write_parameter_conf_or_var_exprs by making use of typegen_detect_type.
      widl: Remove a FIXME comment in write_function_stubs.
      rpcrt4: Add support for marshalling/unmarshalling complex arrays of pointers.
      rpcrt4: Add tests for a complex array of pointers.

Roderick Colenbrander (9):
      wgl: Add more OpenGL diagnosing checks.
      opengl32: Add OpenGL 3.3/4.0 extensions.
      wined3d: Extend surface_get_depth_blt_info with texture coordinate code from surface_blt_to_drawable.
      wined3d: Use surface_get_blt_info to compute texture coordinates for surface_blt_to_drawable.
      wined3d: Remove oversize texture support.
      wined3d: Add a helper function for drawing a textured quad.
      wined3d: Use draw_textured_quad in BltOverride.
      wined3d: Start moving paletted texture support to the blit_shader.
      wined3d: Get rid of d3dfmt_get_conv in RealizePalette.

Sandijs Ribaks (1):
      wined3d: Add surface conversion function from WINED3DFMT_YUY2 to WINED3DFMT_B8G8R8X8_UNORM.

Stefan Dösinger (11):
      d3d9: Fix test failures on Windows 7.
      wined3d: Don't DISCARD or NOOVERWRITE non-dynamic buffers.
      wined3d: Use glMapBuffer for 1:1 uploads in PreLoad.
      wined3d: Implement unfenced updates of double buffered buffers.
      wined3d: Check the alignment of mapped buffer pointers.
      wined3d: Merge two if conditions in buffer.c.
      wined3d: Make resources 16 byte aligned.
      ddraw: Use a D24X8 depth buffer.
      d3d9: Remove the double unlock test.
      d3d9: Windows 7 rejects invalid rectangles.
      d3d9: Remove old debug messages from the tests.

Trey Hunner (1):
      ping: Add skeleton ping command.

Vincent Povirk (19):
      ole32: Allow CopyTo to succeed in spite of already open source streams.
      gdiplus: Don't crash when creating a texture with NULL imageattributes.
      gdiplus: Add a test for GdipGetMetafileHeaderFromMetafile.
      gdiplus: Zero the MetafileHeader structure in GetMetafileHeader.
      include: Add definitions for IWICBitmap.
      ole32: Don't treat the header as a big block in StorageImpl_LoadFileHeader.
      ole32: Don't treat the header as a big block in StorageImpl_SaveFileHeader.
      ole32: Fix the big block offset calculation.
      ole32: Remove the unused BlockBits structures from BigBlockFile objects.
      ole32: Remove the BIG_BLOCK_SIZE define.
      ole32: Remove the NUM_BLOCKS_PER_DEPOT_BLOCK define.
      ole32: Remove knowledge of block sizes from the BigBlockFile object.
      ole32: Allow storage files with a block size of 4096 to open.
      oleaut32: Return type mismatch errors in ITypeLibComp_fnBind.
      oleaut32: Always use DISPID_PROPERTYPUT to fill in the last argument.
      winex11.drv: ReadSelectionData should fail if the import function fails.
      winex11.drv: Use CurrentTime to focus windows if we have no timestamp.
      include: Add definitions for IWICBitmapScaler.
      windowscodecs: Make component enumerators thread-safe.

Yann Droneaud (5):
      cmd: Fixed uninitialised field in WCMD_addCommand() (Valgrind).
      configure: Fixed <linux/ppdev.h> test.
      cmd: Added some expansion tests.
      cmd: Remove %CD% test.
      cmd: Add another expansion test.

--
Alexandre Julliard
julliard@winehq.org
