The Wine development release 1.1.24 is now available.

What's new in this release (see below for details):
  - Support for freedesktop file associations.
  - Support for exception handling on 64-bit.
  - Improved ARB shaders.
  - Fixes for the FBO mode.
  - Many listview improvements.
  - Various bug fixes.

The source is available from the following locations:

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

   2720  File open dialog crashes in Micrographic designer
   9042  Paradise Poker Client gives black desktop background - bug
  10551  When emulating Sprint-Layout the mouse doesn't catch obejects
  10981  Anti-Grain Geometry GDI Demo does not run
  11030  JIT fails to launch
  11942  Trouble with actor's shadow in "Journey to the Center of the Earth"
  12137  Test Drive: Unlimited slow performance
  12169  Supreme Commander: Black bar obscuring screen when fidelity >low
  12183  EVE Premium 4.10.51200 does not render correctly with shadows on
  12380  Support fd.o file type associations
  12405  Crash at starting WISO Sparbuch 2008
  13266  ArchiCad 11 installer: Crashes after extraction (Java related?)
  13705  keyboard does not work in Trackmania Nations Forever
  13917  Supreme Commander won't let me select high fidelity
  13922  configure script produces misleading warning about libhal
  14767  WGL_SWAP_METHOD_ARB attribute not implemented
  15206  Trouble with symbolic stack dumps and Chromium
  15371  HDR not rendered correctly (e.g. in Rainbow 6 Vegas)
  15377  1.1.5 breaks d3d game that worked in 1.1.4
  15457  Languages dialog is empty in inetcpl.cpl (IMultiLanguage2_GetRfc1766Info)
  15878  Dogfood:  Gimp 2.6 will not open images.
  15925  World of Warcraft: Extreme FPS drop since 3.0.2
  16115  jscript: field with has wrong type
  16195  GetKeyNameTextW returns a wrong length
  16267  Vista Winetest24112008 MSItest loop
  16331  inetcomm: possible null pointer dereferences
  16385  Photoshop CS4 interface doesn't load
  16506  some GUI feedback is needed when wine crashes
  16521  With separate x-screens, windowed applications in the secondary screen are limited to resolution of primary screen
  16609  Wine's XDnD should support text/uri-list lines not ending in \r\n
  16681  Adobe Photoshop CS4 fails to start, complains "Some of the application components are missing..."
  17433  Photoshop CS4 crash in unimplemented function gdiplus.dll.GdipMeasureDriverString
  17437  ATI and EVE Premium: no models display / crashes on startup
  17591  WISO MeinBuero 2009 trial segfaults in wintrust.dll
  17600  MSOffice installer (XP, 2003, 2007) : msi crash in custom action
  17681  mcm2 Help immediately exists (Motocross Madness 2)
  17914  Using \n rather then \r\n breaks HTTP RFC with HTTP_AddRequestHeadersW
  18202  Programs show unhandled exception dialog on every run
  18256  Quicktime 2 Unimplemented function olesvr32.dll.OleRevokeServer on exit
  18516  Goldwave 5.25 File Save dialog no longer has options for file format...
  18610  Quicken 2009 crashes
  18617  Regedit can't import registry from standard input
  18638  .NET 3.0 apps abort with: Call from to unimplemented function GDI32.dll.GdiEntry13, aborting
  18641  Adobe Lightroom 2.3 crashes on unimplemented function gdiplus.dll.GdipCreateHICONFromBitmap
  18735  Photoshop CS4 crash in unimplemented function GdipGetVisibleClipBoundsI
  18736  Photoshop CS4 crash in unimplemented function GdipDrawDriverString
  18742  WoW: Icons under d3d are incorrectly desaturated
  18797  CATIAV5R19: Fails to install on Wine higher than 1.1.18
  18798  Neuro-Programmer v2.5 unable to start
  18809  Dragon NaturallySpeaking 10 no longer installs
  18811  Lexware: wine crashes during .Net 2.0 SP1 Installation
  18824  Thief 3 crashes when starting a new game
  18841  Ghost Recon Installer Crashes
  18882  Allow windows links (.lnk) to be handled by Wine
  18895  Thief 3 crashes on closing.
  18900  Wineserver crashes starting Team Fortress 2
  18915  FAR Manager: crashes shortly after startup
  18916  Thief 2 crashes when bringing up in-game menu
  18925  OS X build broken

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

Changes since 1.1.23:

Alexander Nicolaysen Sørnes (1):
      regedit: Fix reading from stdin.

Alexandre Julliard (47):
      wininet: Always use a full URL for redirects, even with an absolute path.
      user32: Disable assert() for the mingw build since mingw gets confused trying to import MessageBoxA.
      kernel32: Fix handling of %ws format for Unicode.
      comctl32: Avoid repainting a NULL link.
      widl: Don't make the proxy virtual tables const if they use delegation.
      server: Avoid a crash when trying to wait on a disconnected pipe client.
      ole32: Get rid of line feeds and tabs in traces.
      kernel32: Forward RtlUnwindEx to ntdll for x86_64.
      winebuild: Properly restore %rax and %rbx in call_from_regs on x86_64.
      rpcrt4: Adjust the start of the proxy virtual table for stubless proxies.
      opengl32: Make the script default to version 1.1. Remove the glGetLevelParameter stubs.
      configure: Detect the appropriate form for the __ASM_GLOBAL_FUNC macro.
      configure: Add .cfi_startproc/endproc directives to assembly functions if supported.
      riched20: Move the textHostVtbl definition to work around Mac OS X breakage with __ASM_GLOBAL_FUNC.
      server: Restart at the head of the wait queue when we woke a thread, since this can modify the queue.
      configure: Make sure that gcc is recent enough for building 64-bit code.
      configure: Add a macro to define an stdcall suffix in assembly code.
      configure: Add a macro to define an stdcall function in assembly.
      msvcrt: Add appropriate stdcall decorations to assembly functions.
      riched20: Add appropriate stdcall decorations to assembly functions.
      rpcrt4: Add appropriate stdcall decorations to assembly functions.
      hal: Add appropriate stdcall decorations to assembly functions.
      ntoskrnl.exe: Add appropriate stdcall decorations to assembly functions.
      kernel32: Add appropriate stdcall decorations to assembly functions.
      ntdll: Add appropriate stdcall decorations to assembly functions.
      advapi32/tests: Avoid accessing an uninitialized pointer.
      advapi32: Fix self-relative security descriptor creation for 64-bit.
      ntdll: Fix handling of self-relative security descriptors for 64-bit.
      msvcrtd/tests: Fix calling convention for operator_new_dbg.
      libwine: Add unwind annotations to the stack switching functions for x86_64.
      ntdll: Add unwind annotations to the call_entry_point function for x86_64.
      winebuild: Add unwind annotations to all the generated functions for x86_64.
      ntdll: Handle x86_64 signals on a separate signal stack.
      winebuild: Implement a --large-address-aware flag.
      winegcc: Add support for the -Wl,--large-address-aware option.
      ntdll: Implement stack unwinding for x86_64 builtin modules based on the Dwarf data.
      include: Add a target address for unwinding for platforms that need it.
      ntdll: Add support for calling the TEB exception chain handlers on x86_64.
      server: The ptrace interfaces uses longs, not ints.
      kernel32: Fix the HGLOBAL header size for 64-bit.
      ntdll: Simplify the thread startup routine and make it CPU-specific.
      ntdll: Move all thread exit processing to exit_thread(), and make RtlExitUserThread() CPU-specific.
      configure: Don't accept mingw32 as target name, we need an explicit CPU specification.
      rpcrt4/tests: Fix the marshalling test for Win64.
      rpcrt4/tests: Fix the marshalling test for Win9x.
      rpcrt4: Fix memory sizes of marshalled pointers on 64-bit.
      urlmon/tests: Avoid comparing uninitialized structure data.

Anders Jonsson (8):
      ntoskrnl.exe: Stub for KeInitializeMutex.
      ntoskrnl.exe: Stub for KeWaitForSingleObject.
      ntoskrnl.exe: Stub for IoInitializeTimer.
      ntoskrnl.exe: Stub for IoStartTimer.
      ntoskrnl.exe: Stub for ExInitializeResourceLite.
      ntoskrnl.exe: Stub for ExInitializeZone.
      ntoskrnl.exe: Stub for PsTerminateSystemThread.
      ntoskrnl.exe: Stub for ExInitializeNPagedLookasideList.

Andrew Eikum (1):
      gdiplus: Test cases and parameter checks for GdipDrawCurve.

Andrew Talbot (8):
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comdlg32: Constify some variables.
      credui: Constify a variable.
      crypt32: Constify some variables.
      crypt32: Constify some variables.
      crypt32: Constify some variables.
      crypt32: Constify some variables.

André Hentschel (10):
      shell32/tests: Fix error messages.
      wordpad: Add German translation.
      shell32: Add German translation.
      setupapi: Add German translation.
      oleacc: Add German translation.
      winedbg: Fix comment header.
      cryptui: Add German translation.
      cryptdlg: Add German translation.
      cryptui: Improve German translation.
      documentation: Keep README.de in sync.

Aric Stewart (11):
      msctf: Framework for ITfCompartmentMgr.
      msctf: Define ITfCompartmentMgr for ThreadMgr.
      msctf: Add ITfComponentMgr to documentmgr.
      msctf: Define ITfCompartmentMgr for Context.
      msctf: Setup global CompartmentMgr.
      msctf: Implement ITfContext::GetDocumentMgr.
      msctf: Implement ITfThreadMgr::IsThreadFocus.
      msctf: Contexts have a default DocumentMgr of the one that creates them.
      msctf: Implement ITfCompartmentMgr::ClearCompartment.
      msctf: Implement ITfCompartmentMgr::EnumCompartments.
      comctl32: In COMBOEX_FindStringExact do not try to get text from invalid items.

Aurimas Fišeras (4):
      winemine: Add Lithuanian translation.
      wininet: Add Lithuanian translation.
      hhctrl.ocx: Add Lithuanian translation.
      oleacc: Add Lithuanian translation.

Austin English (10):
      mshtml: Make the wine-gecko warning more clear.
      winex11: Return correct length for GetKeyNameText.
      wine.desktop: Allow start to execute lnk files.
      kernel32: GetConsoleAliasW is a stub, make sure it acts like one.
      configure: Fix mach-o/dyld_images.h detection on OS X.
      configure: Add a note about missing dbus if libhal is missing.
      oleaut32: Fix a compiler warning for libjpeg includes.
      gphoto2.ds: Fix a compiler warning for libjpeg includes.
      wine.inf: Fix incorrect entry for hh.exe.
      wine.inf: Add placeholder exe for wordpad.exe.

Damjan Jovanovic (6):
      winemenubuilder: Generate icons for Wine's MIME types.
      start.exe: Add infrastructure to launch windows file open associations from freedesktop.
      wine.inf: Update file type associations on startup.
      shell32: Update file type associations when requested.
      winex11.drv: Fix file drops on KDE4 and XFCE.
      winemenubuilder: Log where freedesktop menu files are created, and provide an option to clean them up.

Detlef Riekenberg (12):
      mlang/tests: Fix failures with IE 5.5 and below.
      mlang: Implement IMultiLanguage2_GetRfc1766Info.
      mlang/tests: Add tests for IMultiLanguage2_GetRfc1766Info.
      mlang/tests: Fix a failure on win98 with mlang 4.72.
      mlang/tests: Store the expected results for GetRfc1766Info as Unicode.
      shlwapi: Forward DnsRecordSetCompare to dnsapi.
      mlang: Implement IMultiLanguage_GetRfc1766Info.
      urlmon/tests: Move SecurityManager and ZoneManager tests to a separate file.
      setupapi: Move IsUserAdmin to shell32.IsUserAnAdmin.
      urlmon/tests: Fix a typo in an ok message.
      mlang/tests: Some old IE versions truncate one character too short.
      mlang: Implement IMultiLanguage_GetNumberOfCodePageInfo, with test.

Dmitry Timoshkov (4):
      wine.inf: Add kernel32.48/kernel32.49 (ReleaseThunkLock/RestoreThunkLock) to the RelayExclude list.
      user32: Add support for SPI_GETFOCUSBORDERWIDTH and SPI_GETFOCUSBORDERHEIGHT.
      user32: Add a test for PeekMessage((HWND)-1), make it pass under Wine.
      user32: Invalidate button on WM_KILLFOCUS, like Windows does.

Eric Pouech (1):
      dbghelp: Improve speed of our hashtable implementation by remembering the last element added to every bucket.

Francois Gouget (19):
      cryptdlg & cryptui: Use SUBLANG_NEUTRAL for German.
      winedos: Move VGA_SetGraphicMode() up a bit and make it static. VGA_GetModeInfoList() is unused so remove it.
      winedos: DPMI_FreeInternalRMCB() is not used so remove it.
      winedos: DOSVM_GetTimer() is not used so remove it.
      gdi32/tests: Small indentation fix.
      msctf/tests: Make EditSession_Constructor() static.
      msctf: Make the CompartmentMgr functions static.
      gdiplus: Remove spaces before '\n's.
      winapi/c_parser: Remove some dead code.
      rpcrt4/tests: Replace malloc() with HeapAlloc().
      cmd: Introduce a WCMD_strsubstW() function to simplify string substitutions.
      cmd: Replace malloc() with HeapAlloc().
      comctl32: Extend the LVTILEINFO structure.
      winapi: Fix a $blevel / $plevel mismatch.
      wineesd.drv: Initialize the stream name before using it.
      winweesd.drv: Make sure esd_all_info is always initialized and freed when needed.
      wineesd.drv: Remove a redundant assignment.
      dmime: Remove patterntrack.c and tool.c as they are unused and don't correspond to objects.
      comctl32/tests: Make DummyCompareEx() static.

Frank Richter (1):
      d3d9: Fix bitmask for A2R10G10B10 format.

Frédéric Delanoy (1):
      documentation: Keep README.fr in sync.

Ge van Geldorp (1):
      advapi32: Set values to 0 in LsaEnumerateAccountRights.

Gerald Pfeifer (7):
      user32: Fix logic condition in SPY_DumpStructure().
      winmm: Use & instead of && for bit test in wave_out_test_deviceOut().
      wined3d: Use & instead of && for bit test in IWineD3DDeviceImpl_CreateSurface().
      wined3d: Fix (and simplify) the ATI case in IWineD3DImpl_FillGLCaps.
      d3d9: Use correct constant types (WINED3DPOOL_DEFAULT instead of D3DPOOL_DEFAULT and WINED3DRTYPE_SURFACE instead of D3DRTYPE_SURFACE).
      cmd.exe: Fix incorrect check in WCMD_HandleTildaModifiers().
      crypt32: Fix incorrect logic condition in test_decodePKCSAttribute().

Guy Albertelli (2):
      kernel32/tests: Fix tests when GetVolumeNameForVolumeMountPoint fails.
      kernel32/tests: Fix tests to pass on Win9x and WinME.

Hans Leidekker (5):
      msi: Add some reinstall tests.
      wintrust: Add stub implementations of HTTPSCertificateTrust and HTTPSFinalProv.
      wininet: Always create a URL cache entry.
      wininet: Don't fail if dwReserved is set in CreateUrlCacheEntryW.
      wininet: Implement InternetQueryOption(INTERNET_OPTION_CACHE_TIMESTAMPS).

Henri Verbeet (51):
      wined3d: Add support for the ARB_depth_buffer_float extension.
      wined3d: Use GL_DEPTH_COMPONENT32F for WINED3DFMT_D32F_LOCKABLE.
      wined3d: Use GL_DEPTH32F_STENCIL8 for WINED3DFMT_D24FS8.
      wined3d: Use context_attach_depth_stencil_fbo() to clear FBO depth attachments.
      wined3d: Set FBO stencil attachments for relevant depth stencil formats.
      wined3d: Avoid comparing shader compile args if the relevant shader isn't present.
      wined3d: Simplify some code in set_glsl_shader_program().
      wined3d: Don't modify the internal format in d3dfmt_get_conv().
      wined3d: Get rid of the silly pointers in WINED3DVOLUME_DESC.
      wined3d: Add some FIXMEs about blitting with unsupported fixups.
      wined3d: Set explicitly sized internal formats for color key conversion in d3dfmt_get_conv().
      wined3d: Check the correct extensions in d3dfmt_get_conv().
      wined3d: Round rows up to whole blocks for compressed surface blits in BltFast().
      wined3d: Store compression information about compressed formats.
      wined3d: Use the format info for doing compressed surface blits in BltFast().
      wined3d: Remove some redundant s3tc extension checks.
      wined3d: Improve some TRACEs in init_format_fbo_compat_info().
      wined3d: Use the format info to calculate compressed surface size in IWineD3DDeviceImpl_CreateSurface().
      wined3d: Use the format info to calculate compressed surface size in IWineD3DBaseSurfaceImpl_SetFormat().
      wined3d: Use the format info to calculate compressed surface pitch in IWineD3DBaseSurfaceImpl_GetPitch().
      wined3d: Use the compressed format info in IWineD3DBaseSurfaceImpl_LockRect().
      wined3d: Use WINED3DFMT_FLAG_COMPRESSED instead of checking for specific formats.
      wined3d: Remove the useless "resource_type" parameter from IWineD3DDevice::CreateSurface().
      wined3d: Respect the "srgb" parameter to IWineD3DSurfaceImpl_BindTexture().
      wined3d: Avoid checking depth/stencil and compressed formats in init_format_fbo_compat_info().
      wined3d: Introduce surface_cleanup().
      wined3d: Introduce surface_gdi_cleanup().
      wined3d: Introduce surface_init() to handle most of the surface initialization.
      wined3d: Introduce surface_calculate_size().
      wined3d: Get rid of the pointers in WINED3DSURFACE_DESC.
      shdocvw: Take the riid parameter to TaskbarList_Create() into account.
      shdocvw: Add SHDOCVW_LockModule()/SHDOCVW_UnlockModule() calls to ITaskbarList.
      d3d8: Do some more verification on handles.
      d3d8: Deleting an invalid pixel shader handle should return D3D_OK.
      d3d8: Add tests for deleting invalid shader handles.
      wined3d: Add format conversions for some depth stencil formats.
      wined3d: Fix a typo.
      wined3d: Fall back to backbuffer offscreen rendering if FBOs are unavailable.
      wined3d: Only initialize unused components of varyings that are read.
      wined3d: Avoid some unneeded depthstencil copies.
      wined3d: Avoid some unneeded rendertarget copies.
      wined3d: Make sure we have a context in stretch_rect_fbo().
      wined3d: Reuse the FBO for check_fbo_compat().
      wined3d: Remove some useless code in IWineD3DDeviceImpl_SetLightEnable().
      wined3d: Simplify IWineD3DSurfaceImpl_LockRect() a bit.
      wined3d: Remove a redundant ActivateContext() call in IWineD3DSurfaceImpl_UnlockRect().
      d3d8: Add WINED3DFMT_W11V11U10 <=> D3DFMT_W11V11U10 conversion.
      wined3d: Don't load a rendertarget just because alpha test is enabled.
      d3dx9_36: Implement D3DXGetDeclVertexSize().
      d3dx9_36: Add a test for D3DXGetDeclVertexSize().
      d3d9: Use color_match() in the fog test.

Hib Eris (1):
      msi: Fix a crash when freeing memory.

Huw Davies (6):
      widl: Add support for the lcid parameter attribute.
      widl: Fix typelib lcid fields to match those produced by midl.
      oleaut32: TLibAttr.lcid is read from the second lcid field in the header. Confirmed by manually editing a tlb file.
      oleaut32: Calling SetLcid with LOCALE_NEUTRAL is a special case which sets the first header lcid to US English and the second one to 0.
      tools/widl: Fix behaviour when both lcid and retval arguments are present.
      oleaut32/tests: Add some tests for [lcid] parameters.

Jacek Caban (2):
      wininet: Fixed gzip decoding on chunked stream.
      urlmon: Fixed test on IE8.

Jonathan Ernst (8):
      crypt32: Updated French translation.
      mshtml: Updated French translation.
      notepad: Updated French translation.
      regedit: Updated French translation.
      setupapi: Updated French translation.
      wordpad: Updated French translation.
      reg: Updated French translation.
      shell32: Updated French translation.

Joris Huizer (1):
      winemenubuilder: reg_get_val[AW]: Fix memory leak.

José Manuel Ferrer Ortiz (1):
      winecfg: Spanish resources update.

Juan Lang (3):
      wintrust: Only check the pgKnownSubject member if the struct includes it.
      wintrust: Check for the presence of required members of WINTRUST_BLOB_INFO rather than requiring callers to be compiled with the same SDK version.
      wintrust: Check for the presence of required members of WINTRUST_CERT_INFO rather than requiring callers to be compiled with the same SDK version.

Ken Sharp (6):
      gdiplus: Add stubs for GdipGetVisibleClipBoundsI, GdipDrawDriverString & GdipMeasureDriverString.
      olesvr32: Add OleRevokeServer stub.
      ntoskrnl: Add ObfReferenceObject stub.
      ntoskrnl: Add IoRegisterFileSystem stub.
      ntoskrnl: Add IoUnregisterFileSystem stub.
      ntoskrnl: Add FsRtlRegisterUncProvider stub.

Louis Lenders (1):
      gdi32: Add stub for GdiEntry13.

Marcus Meissner (2):
      widl: ifdef some not always present LANG_*.
      ddraw: Use correct union member.

Michael Abbott (1):
      wined3d: Remove division from inner loop.

Mike Kaplinskiy (4):
      msi: Store temporary rows in the same place as persistent rows, just with a flag.
      msi: Add a test to insert a null primary key temporary row and check its order.
      wininet: Make \r and \n valid header separators.
      wininet/test: Test malformed header separators.

Mikio Idneuma (1):
      appwiz.cpl: Update Japanese translation.

Nikolay Sivov (25):
      ntdll: Call NtCreateSection with NULL attributes loading native dll.
      comctl32/listview: Edit box should be destroyed on invalid index too (LVM_EDITLABEL).
      comctl32/listview: Test showing that Edit box should be positioned after LVN_BEGINLABELEDIT.
      comctl32/listview: Position edit box after notification.
      comctl32/listview: Defaulting to NFR_ANSI on query failure.
      comctl32/listview: Use LV_VIEW_* constants instead of style.
      comctl32/listview: Revert column scrolling recent change, it should be handled differently.
      comctl32/listview: Fix item count tests to be dpi aware.
      comctl32/listview: Remove outdated todo entries.
      comctl32/listview: Test for indentation callback.
      comctl32/listview: Implement callback functionality for item indentation.
      comctl32/listview: Update some ListView structures with recently added members.
      comctl32/listview: Make item width calculation not rely on column order for LV_VIEW_DETAILS.
      comctl32/listview: Don't use special value (1) for item width to represent both zero and one pixel width.
      comctl32/header: Update some Header flags and structures.
      comctl32/listview: Don't offset item box to item position on LVS_EX_FULLROWSELECT if item isn't in leftmost column.
      comctl32/listview: Fix some hittest problems on LVS_EX_FULLROWSELECT.
      comctl32/listview: Don't offset subitems on painting.
      comctl32/listview: Get rid of Header_* macros.
      comctl32/listview: Setting item text to callback stub value already having it raises item-change notifications.
      comctl32/listview: Block header items drag if LVS_EX_HEADERDRAGDROP isn't set.
      comctl32/listview: Forward HDN_DIVIDERDBLCLICK to parent.
      comctl32/listview: Convert forwarded header notifications to ANSI if NFR_ANSI is current format.
      comctl32/listview: Fix test crashes on comctl32 <5.80.
      comctl32/listview: Add ability to test comctl32 version 6. Add basic LVM_[G,S]ETVIEW test.

Paul Vriens (36):
      mshtml/tests: Correct a test and show a Wine bug.
      mshtml/tests: Use lstrcmpA in a helper function to make it work correctly on Win98.
      mshtml/tests: Correct another test.
      mshtml/tests: Use strcmp_wa instead of lstrcmpW to test correctly on Win98.
      kernel32/tests: Only report unimplemented functions once.
      winecfg: Fix Dutch translations.
      setupapi/tests: pSetupGetField returns A or W string depending on OS.
      msi/tests: Make sure we only create one logfile.
      riched32/tests: Fix some test failures on Win9x/WinME/NT4.
      riched32/tests: Fix a few test failures on Win9x, WinME and NT4.
      riched32/tests: Correct a test to better show the behavior.
      riched32/tests: Fix a few test failures on Win9x/WinME/NT4.
      riched32/tests: Cater for differences between platforms.
      riched32/tests: Fix test failures on Win9x, WinMe and NT4.
      mlang/tests: Fix a test failure on Win95.
      user32/tests: Skip some tests on Win9x/WinME.
      shell32/tests: Fix a test failure on some Win95 boxes and NT4.
      gdi32/tests: Fix several test failures on Win9x/WinME/NT4.
      gdi32/tests: Fix some test failures on NT4.
      gdi32/tests: Fix the last test failure on NT4.
      shell32/tests: Fix some test failures on NT4 (and some Win95 boxes).
      comdlg32/tests: Fix some typos.
      comctl32/tests: Fix some typos (copy-paste).
      shell32/tests: Fix a test failure on Vista.
      shell32/tests: Fix a test failure on Vista.
      shell32/tests: Fix a test failure on Vista and higher.
      shell32/tests: Fix some test failures on Vista and higher.
      wldap32/tests: Skip a test on older versions of wldap32 to prevent a crash.
      shell32/tests: Fix a test failure on Vista and higher.
      shell32/tests: Fix some test failures on Vista and higher.
      msi/tests: Fix test (logical || with non-zero constant).
      d3d8/tests: Fix some tests (logical || with non-zero constant).
      msi/tests: Fix some test failures on Win95 by using more A-functions.
      mapi32/tests: Don't run tests if ScInitMapiUtil() fails.
      mapi32/tests: Don't run tests if ScInitMapiUtil() fails.
      mapi32/tests: Don't run tests if ScInitMapiUtil() fails.

Piotr Caban (13):
      jscript: Added Date_getFullYear and Date_getUTCFullYear implementation.
      jscript: Added Date_getMonth and Date_getUTCMonth implementation.
      jscript: Added Date_getDate and Date_getUTCDate implementation.
      jscript: Added Date_getDay and Date_getUTCDay implementation.
      jscript: Added Date_getHours and Date_getUTCHours implementation.
      jscript: Fixed hour_from_time and week_day functions.
      jscript: Added Date_getUTCMinutes and Date_getMinutes implementation.
      jscript: Added Date_getUTCSeconds and Date_getSeconds implementation.
      jscript: Added Date_getUTCMilliseconds and Date_getMilliseconds implementation.
      jscript: Added Date_setUTCMilliseconds and Date_setMilliseconds implementation.
      jscript: Added Date_setUTCSeconds and Date_setSeconds implementation.
      jscript: Added Date_setUTCMinutes and Date_setMinutes implementation.
      jscript: Added Date_setUTCHours and Date_setHours implementation.

Rein Klazes (4):
      gdi32: Fix RectInRegion() if right < left or bottom < top.
      winedos: int21, function 32h returns data in DS:BX, not DS:DX.
      comdlg32: Delay setting the initial size of resizable file dialog until the CDN_INITDONE notification has been processed.
      comdlg32/tests: Fix file dialog resize failures on NT4 and with tiny desktops.

Rico Schüller (1):
      wined3d: Don't allow a negative lock_count in buffer_Unmap.

Robert Key (1):
      wined3d: Add missing HD 3400 renderer string.

Roderick Colenbrander (3):
      opengl32: Sync with the latest opengl 3.1 extensions and don't export opengl32 1.2 functions.
      opengl32: Get rid of glext.h.
      wgl: Get rid of glXQueryDrawable because officially it only works on GLXDrawables.

Stefan Doesinger (20):
      wined3d: Unroll loops in ARB if needed.
      wined3d: Implement break and breakc.
      wined3d: Implement IFC in ARB.
      wined3d: Use flags instead of bools to control shader_hw_sample.
      wined3d: Implement texldd in ARB.
      wined3d: Implement texldl in ARB.
      wined3d: Implement vpos and vface.
      wined3d: Use bitfields for reg_maps uses* members.
      d3d9: Accept an alternative oFog->ps_3_0 handling.
      wined3d: Fix texm3x3pad.
      wined3d: Add modifier support to tex and friends.
      wined3d: Implement D3DSPDM_PARTIALPRECISION support.
      wined3d: Deal with instructions that do not support _SAT.
      wined3d: Properly free srgb textures.
      wined3d: Properly load the y correction.
      wined3d: Handle SM 3.0 varyings in ARB.
      wined3d: Don't run out of varyings because of clipplanes.
      wined3d: Implement vertex texture fetch in ARB.
      wined3d: Emulate clipplanes in ARB if the NV extensions are not available.
      wined3d: Implement EvictManagedResources.

Stefan Dösinger (5):
       wined3d: Store the bumpmap ARB constants in ARB structures.
      wined3d: Implement loops with the NV extensions.
      wined3d: Implement dsy in ARB.
      wined3d: A small atifs bump map improvement.
      wined3d: Don't set unloaded arrays to zero.

Stefan Leichter (1):
      kernel32: Implement QueryFullProcessImageNameA.

Stefan Stranz (1):
      c2man: Add xml documentation creation.

Vincent Povirk (7):
      windowscodecs: Add stub dll.
      include: Add wincodec.idl.
      include: Extend TVITEMEX and add NMTVDISPINFOEX.
      comctl32: Use NMTVDISPINFOEX in the TVN_GETDISPINFO notification.
      kernel32/tests: Test waiting on a disconnected client pipe.
      gdiplus: Stub GdipSetPathGradientPresetBlend.
      include: Add definitions needed for image decoding to wincodec.idl.

Vladimir Pankratov (1):
      advpack: Add stub for ExtractFilesW.

Yann Droneaud (1):
      wined3d: Improved ATI Radeon HD 4xxx detection.

--
Alexandre Julliard
julliard@winehq.org
