The Wine development release 1.1.43 is now available.

What's new in this release (see below for details):
  - A number of new icons.
  - Improved support for alpha channel in bitmaps.
  - Many Direct3D fixes and optimizations.
  - More complete msvcr80/90 implementations.
  - A wide range of 64-bit fixes.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.1.43.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.1.43.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.43:

   7436  Scroll bars don't scroll properly with thumb in Altium DXP2004 sch view
  10406  Missing surface textures in Titan Quest game v.1.3
  12611  Warcraft III world editor page faults when switching desktops / after restoring from minimization
  13976  Axis&Allies crashes after a long time of game-play ~1 hour
  14545  Baldur's Gate Trilogy: installation fails
  14558  DirectX : Missing sprite frames in Double Dragon Forever with OffscreenRenderingMode=fbo
  14795  amsn errors on startup
  15772  Victoria: An Empire Under The Sun: Crashes on loading screen
  16595  Scroll bars don't work on 4D 6.5.4
  16622  possible bashism in config.guess
  17359  Virtual Sailor 7.0 does not run properly due to bug in Direct3d emulation
  17503  Diablo 2 refuses to detect D3D device
  18652  Battlefield 2: Doesn't close cleanly
  19385  the 'wine start' launcher does not open MS Office documents that have spaces in their path
  20330  Buttons in The print show pro show up as blacked out and are not useable.
  20391  Word 2003 background of tab stops is wrong color
  20442  visio 2003 & 2007 crash after 2nd double click on element
  20598  Elements Do Not Appear in Patcher Dialogue Box in Perfectworld International
  20607  Machines Demo: loading screen is too dark
  20611  Unimplemented function d3dx9_36.dll.D3DXCreateEffectEx (Singularity)
  20761  Riven pallet error
  21285  Axis & Allies setup.exe crashes
  21352  odd behaviour with segmentation fault in openwatcoms DirectX sample (samples/directx/cpp/d3d/d3d.cpp)
  21356  Some icons are completely black in HTML-Kit
  21608  EVE Online ship icon rendering broken
  21819  Fiesta Online unplayable
  21847  Steam 2010 beta UI fails to draw
  21957  Solfege from Kogado Studio hangs when trying to playing video
  22070  Motocross madness shows wrong textures
  22088  Starcraft II loading screen bar is messed up
  22096  Starcraft II - crashes on launch if '-showfps=1' is used
  22098  Starcraft II has missing effects on main menu
  22108  Bloxx It's installer hangs
  22127  Control Spy: animation control displays incorrectly
  22197  PlayOnline viewer shows black screen
  22200  Dragon Age: Origins needs msvcr80.dll.__CxxFrameHandler3 implemented
  22209  Dragon Age does not start
  22225  CDBurnerXP's disc icon is completely black
  22235  mciqtz32: Add basic play capability causes regression in The Games Factory 2 demo
  22245  AVR Studio fails to install
  22248  Imperium Romanum: minimap is missing some stuff
  22257  AntiVir requests IE installation in a WoW64 setup
  22360  Icons in HTML-Kit lack transparency
  22365  .NET Framework 2.0 installer hangs

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

Changes since 1.1.42:

Alex Villacís Lasso (11):
      oledb32: Tests for OLEDB32 conversion to DBTYPE_STR, marked as todo_wine.
      oledb32: Implemented OLEDB32 conversion to DBTYPE_STR.
      oledb32: Add tests for DBTYPE_I4 to DBTYPE_WSTR/DBTYPE_STR conversion.
      oledb32: Add tests for DBTYPE_R4 to DBTYPE_WSTR/DBTYPE_STR conversion.
      oledb32: Add tests for DBTYPE_R8 to DBTYPE_WSTR/DBTYPE_STR conversion.
      oledb32: Add tests for DBTYPE_CY to DBTYPE_WSTR/DBTYPE_STR conversion.
      oledb32: Add tests for DBTYPE_I1/DBTYPE_UI1/DBTYPE_UI2/DBTYPE_UI4/DBTYPE_I8/DBTYPE_UI8 to DBTYPE_WSTR/DBTYPE_STR conversion.
      oledb32: Add tests for DBTYPE_GUID to DBTYPE_WSTR/DBTYPE_STR conversion as todo_wine.
      oledb32: Implement conversion from DBTYPE_GUID to DBTYPE_STR/DBTYPE_WSTR/DBTYPE_BSTR.
      oledb32: Added tests for DBTYPE_BYTES to DBTYPE_WSTR/DBTYPE_STR marked as todo_wine.
      oledb32: Implement conversion from DBTYPE_BYTES to DBTYPE_WSTR/DBTYPE_STR.

Alexandre Julliard (98):
      rpcrt4: Fix the pointer alignment macros for 64-bit.
      rpcrt4: Replace the alignment macros by inline functions.
      dpwsockx: Use standard Win32 types instead of the BSD ones.
      include: Try harder to redefine u_long, and avoid using it in headers as far as possible.
      d3dx9_36: Don't include the bison-generated header from the bison source file.
      mmdevapi: Include system headers before Wine headers.
      widl: Add a type_memsize_and_alignment function to make it explicit where the alignment is truly needed.
      widl: Alignment for complex arrays and structs is the buffer alignment, not the memory one.
      rpcrt4: Fix tracing of non-conformant strings.
      rpcrt4: Always skip the conformance format, even if conformance is not present in the buffer.
      rpcrt4: Add support for complex arrays in the generic array marshalling functions.
      rpcrt4: Add support for complex arrays in the generic array unmarshalling functions.
      user32/tests: Fix a test that was incorrectly skipped on non-Win9x platforms.
      tools: Improve error handling in the buildicon script.
      mmdevapi/tests: Remove some todos that succeed now.
      mmdevapi/tests: Mark some failing tests as todo.
      ole32: Don't use in-memory structure layouts to build the wire data, define wire-specific structures instead.
      winedbg: Save internal variables as proper DWORD values.
      rpcrt4: Clean up handling of enum16 types.
      rpcrt4: Add support for marshalling int3264 types.
      rpcrt4: Implement proxy/stub delegation for x86_64.
      include: Fix a couple of oaidl.idl definitions for 64-bit.
      ole32: Fix the free threaded marshaller data for 64-bit pointers.
      oleaut32: Fix a couple of typelib test failures on 64-bit.
      oleaut32: Fix some pointer conversion warnings on 64-bit.
      shlwapi/tests: Fix some pointer conversion warnings on 64-bit.
      msvcrt: Fix an unused variable warning.
      msvcr90/tests: Fix the calling convention of the initterm callbacks.
      winapi: Add some support for handling ifdefs, particularly ifdef _WIN64.
      winapi: Generate the 64-bit variant of structure size/alignment tests.
      winapi: Add a few more types to the ntdll generated tests.
      configure: Don't disable includes for the Wow64 build.
      crypt32: Fix computation of structure sizes in CRYPT_AsnDecodeSequence.
      winex11: Fix the calling convention of X11DRV_wglCreateContextAttribsARB.
      configure: Define WINE_CROSSTEST when building crosstests, and disable use of config.h in that case.
      include: Move the exception handling support functions to winecrt0 instead of having them inline.
      winecrt0: Add a trampoline function to align the stack on x86_64 before continuing an exception.
      urlmon: Forward the DllMain call to the dlldata.c generated function.
      inetcomm: Store an index instead of a handle for mime bodies to avoid pointer conversion warnings.
      inetcomm: Rewrite MimeMessage_FindFirst/Next to iterate correctly and avoid invalid pointer conversions.
      ntdll: Fix affinity mask check for 64-bit.
      oleaut32: Query the path of the correct kind of typelib when unregistering it.
      oleaut32: Use the x87 assembly code for rounding on x86_64 too.
      ntdll: Restructure x86_64 exception processing to treat all functions with missing exception data as leaf functions.
      wininet: Fix some pointer conversion warnings on 64-bit.
      user32: Avoid pointer truncation in SetSysColorsTemp.
      shell32: Convert the change notifications list to a standard list.
      shell32: Store an id in change notifications to avoid invalid pointer conversions.
      wined3d: Remove unused offset parameter in buffer_get_memory.
      tests: Use the correct format of varargs list when building with msvcrt.
      d3d8: Avoid using a pointer difference in a trace.
      secur32: Avoid using a pointer difference in a trace.
      ole32/tests: Avoid using a pointer difference in a trace.
      cmd/tests: Add casts to pointer differences in traces.
      hhctrl.ocx: Add casts to pointer differences in traces.
      jscript: Add casts to pointer differences in traces.
      ntdll: Build the virtual_release_address_space function on all platforms.
      gdi32: Avoid some rounding errors in AngleArc.
      msvcrt: Implemented setjmp for x86_64.
      winebuild: Add a wrapper function to output cfi directives.
      winebuild: Support for -fasynchronous-unwind-tables flag to enable/disable CFI generation.
      winegcc: Add support for the -fasynchronous-unwind-tables option.
      configure: Pass the -fasynchronous-unwind-tables flag to winegcc when supported.
      winebuild: Add cfi annotations to the import thunk for i386.
      winebuild: Add cfi annotations to the relay functions for i386.
      libport: Make cfi annotations optional for x86_64.
      libwine: Make cfi annotations optional for x86_64.
      ntdll: Make cfi annotations optional for x86_64.
      winmm/tests: Fix a pointer conversion warning on 64-bit.
      msvcrt: Make a few more exception handling functions i386-specific.
      msvcrt: Implement the missing exception constructor functions.
      msvcrt: Add support for VC7 and VC8 extensions to the C++ exception handler.
      msvcrt: Export a few more C++ functions that actually call standard C functions.
      user32: The Z-order of owned windows doesn't depend on them having the WS_POPUP style.
      libwine: Store more detailed information about characters direction.
      kernel32: Map the new detailed direction information back to the Windows constants.
      gdi32: Use the more detailed libwine information to classify bidi chars.
      usp10: Use the more detailed libwine information to classify bidi chars.
      include: Define some more NTSTATUS values.
      msvcrt: Implement support for version 4 exception tables.
      msvcrt: Implement _invalid_parameter and fix the handler definitions.
      msvcr90: Implement _invalid_parameter_noinfo.
      winex11: The source offset for mirrored Xrender blits must be scaled too.
      winex11: Add a separate helper function for Xrender mono->color blits.
      winex11: Use repeating instead of scaling when stretching a 1x1 source bitmap.
      winex11: Define a structure to hold coordinates information for BitBlt operations.
      winex11: Move logical to physical mapping into the BITBLT_GetVisRectangles helper function.
      winex11: Use the BITBLT_GetVisRectangles helper function for AlphaBlend too.
      winex11: Rewrite AlphaBlend to do everything on the server side, and support all types of source bitmaps.
      winex11: Add support for big-endian 32-bpp Xrender formats.
      configure: Don't disable 32-bit programs on Wow64 to support a future 32-bit compatibility mode.
      wine.inf: Register iexplore from the system directory so that the 32-bit version gets registered too.
      winex11: Mask out the alpha channel when converting from color to monochrome.
      msvcrt: Initialize exported common variables to fix the build on Mac OS.
      winex11: Set the NET_WM_ICON hint for 32-bpp icons.
      winex11: Fix 16-bpp cursor conversions.
      appwiz.cpl: Use the fancy new icon.
      ntdll: Report the correct processor architecture.

Alistair Leslie-Hughes (1):
      msxml4: Add Schema interfaces.

Anders Jonsson (1):
      wineboot: Update Swedish translation.

Andrew Eikum (5):
      mshtml: Return success in HTTPChannel::SetRequestMethod.
      mshtml: Implement HTTPChannel::GetRequestSucceeded.
      mshtml: Implement HTTPChannel::GetResponseHeader.
      mshtml: Always load URLs without a base URL through Wine.
      shlwapi: Check for NULL string in UrlIs.

André Hentschel (5):
      winemaker: Fix manpage.
      winedump: Update manpage.
      server: Add German translation of the manpage.
      winemaker: Add German translation of the manpage.
      ntdll: Use NULL for a pointer.

Aric Stewart (8):
      rpcrt4: Handle NULL pclsid in NdrDllRegisterProxy and NdrDllUnregisterProxy.
      rpcrt4: Improve NdrDllRegisterProxy parameter checking.
      rpcrt4/tests: Add NdrDllRegisterProxy tests.
      include: Include fMergeNeutralItems in the SCRIPT_CONTROL Structure.
      usp10: Improve ScriptItemize with a SCRIPT_CONTROL and SCRIPT_STATE set.
      ups10: Reimplement ScriptLayout to properly handle mixed runs.
      usp10: Have ScriptShape respect fLogicalOrder and fRTL when ordering glyphs.
      usp10/tests: Expanded tests for ScriptShape.

Austin English (1):
      imm32: Quiet ImmGetOpenStatus fixme.

Christian Costa (14):
      d3dx9_36: Add stub for D3DXCheckTextureRequirements.
      amstream: Fix AddRef calls.
      d3dx9_36: Add definitions for ID3DXBaseMesh and ID3DXMesh interfaces.
      d3dx9_36: Add stub for D3DXCreateBox.
      d3dx9_36: Improve FIXMEs and TRACEs for surface.
      d3dx9_36: Forward D3DXCreateTextureFromFileExW to D3DXCreateTextureFromFileInMemoryEx.
      d3dx9_36: Add stub for D3DXCreateTextureFromFileA.
      d3dx9_36: Fix indentation.
      d3dx9_36: Implement D3DXGetImageInfoFromFileInMemory using WindowsCodecs (based on work from Tony Wasserka).
      mciqtz32: Only call CoUninitialize when CoInitializeEx succeeds.
      d3dx9_36: Add support for 32-bit BGRA in D3DXGetImageInfoFromFileInMemory.
      d3dxof: Add support for mszip compressed files.
      d3dx9_36/tests: Move surface tests into surface.c.
      d3dx9_36: Check wnd just after CreateWindow. Remove useless wnd check before calling DestroyWindow.

Damjan Jovanovic (8):
      wdm.h: Define IoGetNextIrpStackLocation.
      ntoskrnl.exe: Use IoGetNextIrpStackLocation.
      wdm.h: Define KeResetEvent and KeSetEvent.
      ntoskrnl.exe: Stub out KeResetEvent and KeSetEvent.
      wdm.h: Declare IoCallDriver.
      ntoskrnl.exe: Implement IoCallDriver.
      usb.h: Add and fix some USBD_STATUS codes.
      ntoskrnl.exe: Stub out IoGetDeviceProperty.

Detlef Riekenberg (6):
      msvcr90: Run the tests again on w2k and below.
      msi: Display a MessageBox in MsiMessageBoxEx.
      urlmon/tests: Do not depend on user security settings in sec_mgr tests.
      urlmon/tests: Run the tests again on W95B (CoInternetParseUrl).
      urlmon/tests: Fix a failure on Win98.
      urlmon/tests: CoInternetGetSecurityUrl is not present on W95B.

Dmitry Timoshkov (5):
      gdi32: Fix some DC leaks in gdi32 bitmap tests.
      winex11.drv: Do not allow WM actions for windows with WS_DISABLED style set.
      comctl32: Do not use width of the passed to ImageList_Add bitmap as an icon width.
      user32: Button painting code always sets up the clipping, there is no need to duplicate it.
      user32: Do not ask DrawFrameControl() to modify the passed in rectangle.

Eric Pouech (16):
      dbghelp: Added support for DW_CFA_GNU_args_size.
      ntdll: On x86_64 systems (as on i386 ones), hw breakpoints must generate a EXCEPTION_SINGLE_STEP exception.
      winedbg: Simplify a bit the find_triggered_watch function.
      winedbg: Allow using 8-byte long hardware assisted breakpoints on x86_64 CPUs.
      server: Correctly set the DR0..7 registers on Linux for x86_64 architecture.
      dbghelp: When trying to enumerate locals & parameters with SymEnumSymbols, don't return a global or public symbol when the nearest symbol of the current context isn't a function.
      winedbg: Fix buffer size for 8-byte watchpoint.
      winedbg: Properly guard against setting a watchpoint against a variable stored in a register.
      winedbg: Describe pointer size in CPU backend structure.
      winedbg: Merge pointer deref and array index functions into a single one.
      winedbg: Use standard Wine lists for processes.
      winedbg: Use standard Wine lists for threads.
      winedbg: Add support for x86-64 in known CPUs while reading minidumps.
      winedump: Add support for x86-64 in known CPUs while reading minidumps.
      winedbg: Fix minidump support on 64bit OSes (don't clamp addresses out of 64bit minidumps).
      kernel32: Added proper support for GetSystemInfo on x86_64.

Frédéric Delanoy (3):
      manpages: Fix formatting errors.
      wineserver: Fix French manpage.
      loader: Fix French translation of wine manpage.

Hans Leidekker (7):
      include: Add some error codes.
      msi: Make the string reference count a short.
      msi: Make the string reference count a short.
      msi/tests: Run the RemoveODBC action to unregister the fake drivers.
      msi: Release summary information on error in msi_parse_patch_summary.
      msi: Move application of substorage transforms out of msi_parse_patch_summary.
      msi: Make the string reference count a short.

Henri Verbeet (41):
      wined3d: Add a separate function for wined3d object initialization.
      wined3d: Simply inline dumpResources().
      wined3d: Make some functions static.
      wined3d: Rename HW_VENDOR_WINE to HW_VENDOR_SOFTWARE.
      wined3d: Rename some GL vendors.
      d3d8/tests: Use color_match() in test_rcp_rsq().
      d3d8/tests: Clear with colors that are more obviously different from the expected value in test_rcp_rsq().
      wined3d: Don't use GLSL if the supported version isn't at least 1.20.
      wined3d: Capture the correct scissor rectangle.
      ddraw: Fix and clarify texture filter state mappings.
      quartz: Don't return a pointer to a stack variable in AMFilterData_ParseFilterData().
      wined3d: Pass the correct window to Present() in IWineD3DSurfaceImpl_BltOverride().
      wined3d: Pass the correct window to Present() in IWineD3DSurfaceImpl_Flip().
      wined3d: Pass the correct window to Present() in IWineGDISurfaceImpl_Flip().
      wined3d: Add a separate function for adding declaration elements in ConvertFvfToDeclaration().
      wined3d: Add an extensionless STATE_INDEXBUFFER handler.
      wined3d: Get rid of state_nogl().
      wined3d: Update shader constants on viewport changes.
      wined3d: Validate some more states.
      wined3d: Add a FIXME for predicated shader instructions.
      d3d9/tests: Add some depth buffer tests.
      d3d8/tests: Add some depth buffer tests.
      wined3d: Fix a GL extension prototype.
      wined3d: Don't write past the end of the buffer's conversion_map.
      winex11.drv: Allow OpenGL on minimized windows.
      wined3d: Add a separate function for rendertarget view initialization.
      wined3d: Add a separate function for palette initialization.
      wined3d: Disable strict draw ordering by default.
      wined3d: We always support at least a single modelview matrix.
      wined3d: Prune unsupported world matrix transform states.
      wined3d: Get rid of glRect from IWineD3DSurfaceImpl.
      wined3d: The currentDesc and pow2 width/height are the same for power of two textures.
      wined3d: Get rid of the width and height parameters to surface_allocate_surface().
      wined3d: Get rid of the width and height parameters to surface_upload_data().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_apply_attachment_filter_states().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_attach_surface_fbo().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_attach_depth_stencil_fbo().
      wined3d: Store render target attachments as IWineD3DSurfaceImpl pointers in struct fbo_entry.
      wined3d: Store the depth/stencil attachment as IWineD3DSurfaceImpl pointer in struct fbo_entry.
      wined3d: Remove some dead code from IWineD3DDeviceImpl_Uninit3D().
      wined3d: Allow offscreen depth/stencil clears again with FBOs.

Jacek Caban (6):
      mshtml: Fixed nsIHttpChannel::GetRequestSucceeded implementation.
      mshtml: Improved focus handling.
      mshtml: Use DOM designMode to switch to editor mode.
      mshtml: Use NSContainer HWND in handle_blur.
      jscript: Use special case for lastIndex<0 only for global regexps in run_exec.
      jscript: Fixed String.match implementation for non-global regexps.

Joel Holdsworth (29):
      configure: Maintainer mode requires icotool v0.29.0 or newer.
      configure: Maintainer mode requires imagemagick.
      tools: Installed new icon build script.
      user32: Replaced oic_winlogo.ico with Tango compliant icon.
      user32: Replaced oic_bang.ico with Tango compliant icon.
      user32: Replaced oic_hand.ico with Tango compliant icon.
      user32: Replaced oic_note.ico with Tango compliant icon.
      user32: Replaced oic_ques.ico with Tango compliant icon.
      user32: Replace oic_sample.ico with Tango compliant icon.
      shell32: Replaced folder.ico with a Tango compliant icon.
      shell32: Replaced document.ico with a Tango compliant icon.
      shell32: Replaced cdrom.ico with a Tango compliant icon.
      shell32: Replaced delete.ico with a Tango compliant icon.
      shell32: Replaced desktop.ico with a Tango compliant icon.
      shell32: Replaced drive.ico with a Tango compliant icon.
      shell32: Replaced floppy.ico with a Tango compliant icon.
      shell32: Replaced folder_open.ico with a Tango compliant icon.
      shell32: Replaced mycomputer.ico with a Tango compliant icon.
      shell32: Replaced mydocs.ico with a Tango compliant icon.
      shell32: Replaced netdrive.ico with a Tango compliant icon.
      shell32: Replaced netdrive2.ico with a Tango compliant icon.
      shell32: Replaced printer.ico with a Tango compliant icon.
      shell32: Replaced ramdisk.ico with a Tango compliant icon.
      shell32: Replaced shortcut.ico with a Tango compliant icon.
      shell32: Replaced trash_file.ico with a Tango compliant icon.
      notepad: Replaced icon with a Tango compliant icon.
      appwiz: Replaced program icon with a Tango compliant icon.
      wordpad: Replaced program icon with a Tango compliant icon.
      taskmgr: Replaced program icon with a Tango compliant icon.

Johan Gill (1):
      ddraw/tests: Added todo_wine test to verify resizing of fullscreen windows.

Jörg Höhle (7):
      msvidc32: Fix "Unknown message: 400e".
      msacm32: Fix nesting in acmFilter/FormatTagEnum.
      winmm: MCI system commands are not eligible for auto-open.
      winmm: Improve MCI A/W mapping.
      msvidc: Fix 16bit VIDEO-1/CRAM decompression.
      winmm: Prepare transition of MCI parser to 64bit.
      winmm: MCI_SYSINFO dwRetSize counts characters, not bytes.

Maarten Lankhorst (11):
      mmdevapi: Add uuid include.
      configure: Change openal detection.
      mmdevapi: Add alext.h for openal support.
      mmdevapi: Add dependency on openal.
      mmdevapi: Use openal to enumerate devices.
      winealsa.drv: Ignore unused bytes in wave headers.
      mmdevapi: Blacklist alsa hw devices.
      winmm: Remove timeGetTime.
      mmdevapi: Add OSS to blacklist on linux.
      mmdevapi: Don't load openal on older openal-soft versions.
      mmdevapi: Fix wrong blacklist test.

Marcin Baczyński (1):
      makedep: Silence unused result warnings.

Marcus Meissner (1):
      msvcrt: Implement findfirst64 and findnext64.

Mikhail Maroukhine (1):
      winedump: Fix compiler warnings with flag -Wcast-qual.

Nikolay Sivov (6):
      shell32: Add stub shell folder for CLSID_Printers.
      user32: Block TrackPopupMenu if menu is already active.
      user32: Set WM_EXITMENULOOP wParam same way as for WM_ENTERMENULOOP.
      gdi32: Use supplied hdc for DIB_RGB_COLORS if it's valid.
      shell32: Add IPersistFolder2 stub for printers folder.
      shell32: Support IShellView in ::CreateViewObject() for printers folder.

Paul Vriens (9):
      ddrawex/tests: Don't crash on Windows 95.
      rsaenh/tests: Run tests again on Windows 95.
      msi/tests: Remove temporary files.
      rsaenh/tests: Fix some test failures on NT4 and lower.
      oleau32/tests: Fix test failures on Win9x/WinMe by using more A-functions.
      ntdll/tests: Make sure we can enumerate the directory.
      ntdll/tests: Enumerate one by one.
      ntdll/tests: We need a bigger buffer for NtQueryInformationFile.
      ntdll/tests: Prevent test failures on Windows.

Piotr Caban (18):
      msvcrt: Added implemenatation of _create_locale and _free_locale.
      msvcrt: Added _iswalpha_l implementation.
      msvcr80: Fix typo in msvcr80.spec.
      msvcr90: Forward ?_open@@YAHPBDHH@Z calls to _open.
      msvcr90: Added __clean_type_info_names_internal stub.
      msvcrt: Added memmove_s and memcpy_s implementation.
      msvcr90: Forward _calloc_crt to calloc.
      msvcr90: Forward _iswalpha_l calls to msvcrt.
      msvcrt: Change _create_locale implementation so generated structure is easier to modify.
      msvcrt: Change implementation of setlocale.
      msvcrt: Add helper function that returns current locale.
      msvcrt: Added _configthreadlocale implementation.
      msvcrt: Move locale string interpretation to MSVCRT_locale_to_LCID.
      msvcrt: Added multiple locales parsing to _create_locale.
      msvcrt: Make setlocale working with per thread locales.
      msvcrt: Use per thread locale in many functions.
      msvcrt: Change localeconv implementation.
      msvcrt: Fix locale initialization.

Qingchuan Wang (1):
      amstream: Expose also IMultiMediaStream which is the base interface of IAMMultiMediaStream.

Rico Schüller (4):
      d3d10: Fix an ERR message in parse_fx10_body().
      d3d10: Move the effect shader input signature into a separate struct.
      d3d10: Implement ID3DEffectVariable::GetInputSignatureElementDesc().
      d3d10: Implement ID3DEffectVariable::GetOutputSignatureElementDesc().

Roderick Colenbrander (35):
      wined3d: Move palette uploading code over to arbfp blit_shader.
      wined3d: Move EXT_PALETTED_TEXTURE code over to ffp_blit.
      wined3d: Disable paletted texture support. It was only offered on a few cards, so can be missed.
      wined3d: Disable framebuffer to texture blitting.
      wined3d: Move the arbfp p8 fixup to the format table and get rid of the d3dfmt_get_conv override.
      wined3d: Due to code rewrites is_color_fixup_supported is not needed anymore in RealizePalette.
      wined3d: Turn blit_shader color_fixup_supported into blit_supported.
      wined3d: Remove redundant gl format/type code from d3dfmt_get_conv since it is already in the table.
      wined3d: Only apply float R16G16F/R32G32F fixup when ARB_texture_rg isn't around and remove redundant code.
      wined3d: Remove remaining redundant code from d3dfmt_get_conv.
      wined3d: Let d3dfmt_get_conv return a wined3d_format_desc.
      wined3d: Move srgb checks away from d3dfmt_get_conv.
      wined3d: Start moving texture format fixups to the formats table.
      wined3d: Move Q8W8V8U8 conversion to the format table.
      wined3d: Move X8L8V8U8 surface conversion to the format table.
      wined3d: Add an initial fbo_blit_supported implementation.
      wined3d: Add an initial implementation of arbfp_blit_surface.
      winex11: Add support for 32-bit DDBs.
      wined3d: Move L6V5U5 conversion to the formats table.
      wined3d: Move D24FS8 to formats table.
      wined3d: Move D24X4S4 to the formats table.
      wined3d: Move D15S1 over to the formats table.
      wined3d: Move R32G32F convertion to the formats table.
      wined3d: Move G16R16/R16G16F conversion to the formats table.
      wined3d: Move A4L4 conversion to the formats table.
      wined3d: Separate detection of D3D10+ and D3D9 Nvidia GPUs.
      d3d9: Add an initial ColorFill regression test.
      wined3d: Improve FBO support in ClearSurface.
      wined3d: Add BLT_OP_COLOR_FILL to blit_supported and use it in BltOverride.
      wined3d: Remove temporary conv_byte_count fixup from d3dfmt_get_conv.
      wined3d: Remove call to d3dfmt_get_conv from read_from_framebuffer_texture.
      wined3d: We don't need color keying for sysmem->drawable uploads.
      wined3d: Remove paletteOverride from BltOverride offscreen->render_target blit.
      wined3d: Separate AMD Radeon HD2300 from other HD2xxx/HD3xxx GPUs since it is D3D9 instead of D3D10.
      wined3d: Separate AMD GPUs in D3D9 and D3D10 models, this allows for a more correct fall back when the GPU table isn't up to date.

Stefan Leichter (2):
      ws2_32: In setsockopt implement IPV6_ADD_MEMBERSHIP and IPV6_DROP_MEMBERSHIP only when supported.
      setupapi: Implement SetupGetInfFileListA.

Vincent Povirk (27):
      ngen.exe: Add stubbed command.
      mscoree: Use the mono embedding api instead of invoking mono.exe.
      oleaut32: Limit the number of arguments traced.
      gdiplus: Print the GdipCreateHalftonePalette FIXME only once.
      gdiplus: Print the GdipGetFamilyName FIXME only once.
      windowscodecs: Add locking to StreamOnMemory.
      windowscodecs: Make IWICStream thread-safe.
      windowscodecs: Set the threading model of ImagingFactory to Both.
      windowscodecs: Combine the bitmap decoder and bitmap decoder frame objects.
      windowscodecs: Add locking to the BMP decoder.
      windowscodecs: Add locking to the PNG decoder.
      windowscodecs: Add locking to the format converter.
      windowscodecs: Add locking to the GIF decoder.
      windowscodecs: Add locking to the ICO decoder.
      windowscodecs: Add locking to the JPEG decoder.
      ole32: Create storage files with 4096-byte blocks when asked.
      windowscodecs: Add locking to the PNG encoder.
      windowscodecs: Fix uninitialized variable use in StreamOnMemory_Write.
      gdiplus: Ensure GdipGetGenericFontFamilySansSerif returns a truetype font.
      gdiplus: Do not create FontFamilies for bitmap fonts.
      gdiplus: Use UnitPixel for metafile bounds when creating from HMETAFILE.
      gdiplus: Use a helper function to draw image data from bitmaps in software.
      gdiplus: Transform bitmaps to non-rectangular parallelograms in software.
      gdiplus: Correct the coordinate transform for non-rectangular parallelograms.
      gdiplus: Implement color remapping.
      gdiplus: Always use software to draw bitmaps to bitmaps.
      gdiplus: Add fixmes for unimplemented imageattributes features.

Wolfram Sang (1):
      tools: Upgrade the config.guess/config.sub scripts.

--
Alexandre Julliard
julliard@winehq.org
