The Wine development release 1.1.29 is now available.

What's new in this release (see below for details):
  - Improved Gecko integration by using Wine's network layers.
  - Use of external libmpg123 for mp3 decoding.
  - Support for JPEG and PNG formats in WindowsCodecs.
  - Many regression test fixes for Win64 and Windows 7.
  - Various bug fixes.

The source is available from the following locations:

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

    231  winemaker: Issue the warnings directly in the source
   5625  Wine does not handle internet proxy settings conveniently
   7854  VB 3.0: Installation fails
   9294  Crash when loading Vampire - The Maquerade - Redemption
  10397  CSS crashes when trying to accept option change
  11345  Wrong button vertical position
  11618  Wineinstall blocks midway through
  13125  Fahrenheit (Indigo Prophecy) broken in newer versions of Wine.
  13411  setup_exception_record stack overflow in Teach2000
  13945  subversion fails to Initial network when using http protocol
  14110  Adobe Audition 1.5: does not install in Hardy Heron
  14198  Achieve planner crashes after entering data
  14206  Achieve planner freezes when clicking the 'finished' tab
  14784  SetWindowHookEx fail to inject DLL containing the HookProc if...
  14907  TntMPD: Install procedure stopped working between 0.9.61 and 1.0.0
  14998  BioShock demo dose not start at all
  15056  Graphical glitches in the menu of The longest journey demo
  15112  Prey crashes with Segmentation fault
  15181  IBM Client Access Terminal Emulator crashes on startup
  15563  AVG Free 7.1 fails due to missing or broken DLLs
  15744  Microsoft Money 2001 can't open saved files
  16153  F1 Challenge, incorrectly renders rear view
  16249  mspaint does not render PNG files correctly
  16292  Activeworlds client 4.2 update fails with "reason 13"
  16677  World of Warcraft WotLK crashes randomly after login
  16844  3dmark2001 Point Sprites test rendered incorrectly in wine >= 1.1.12
  17150  Achieve Planner 1.9.0 (XP version) aborts with "failed to load resources from resource file"
  17227  PAF 5 help window text is blank
  17394  Chip view window is not displayed properly
  17408  ASPI crashes randomly
  17428  Taskmgr: blank process names in Process list.
  17482  Paint.NET doesn't install anymore
  17783  steamcommunity.com certificate not recognised
  17897  OpenAL installer thinks it is AMD-64
  17898  DM Evidence application freezes
  18275  Snail Mail crashes during startup
  18519  eMule crashes scrolling files
  18525  Adobe Reader 9.10 upgrade fails
  18989  Trackmania Nations Forever does not run
  19086  Front Panel Designer: crashes when trying to load saved files
  19185  Word Viewer crash at the end of the installation
  19266  POD and Caldari shuttle bad render
  19318  Word Viewer 2003 - installs extra files? (appinstall)
  19392  Runes of magic : crash while entering world
  19472  EVE Online avatar rendering sometimes crashes Wine
  19631  Multiple application installations fail after BadMatch error
  19721  Dragon NaturallySpeaking 10S training text grays-out too fast
  19778  cmd set "FOO=bar" does the wrong thing; breaks firefox build script
  19822  many fullscreen apps loose focus in a virtual desktop when leaving it
  19826  .Net 2.0 Listview isn't updated properly and causes program to hang
  19839  Access violation when closing ImgBurn 2.5.0.0 if its 'Disc Layout Editor' window has ever been opened.
  19854  Oblivion crashes constantly if music is enabled
  19875  64-bit wine build broken

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

Changes since 1.1.28:

Akihiro Sagawa (8):
      uninstaller: Add Japanese translation.
      appwiz.cpl: Update and refine Japanese translation.
      reg: Update Japanese translation.
      comctl32: Update Japanese translation.
      regedit: Update Japanese translation.
      shell32: Update Japanese translation.
      csetupapi: Update Japanese translation.
      winecfg: Update Japanese translation.

Alexandre Julliard (44):
      server: Define an architecture-independent structure for process startup info.
      winebuild: Add win32/win64 generic architectures in addition to specific CPUs.
      ntdll: The large integer functions are 32-bit only.
      msvcrt: The floating point adjust functions only make sense on i386.
      user32: The LongPtr functions are only exported on 64-bit.
      shell32: Move the IQueryAssociations implementation from shlwapi to shell32.
      winemp3: Include wine/port.h.
      libwine: Determine the bin directory independently from the lib directory if possible.
      ntdll/tests: Make sure buffer alignment is correct.
      comctl32/tests: Fix tab control test failures on older Windows versions.
      comctl32/tests: Fix tooltips test failures on older Windows versions.
      riched20: Make sure we have a valid ITextHost vtable for all platforms.
      ntdll: Correctly jump to the modified context after an exception on x86_64.
      tools: Take into account the executable extension when looking for tools in the path.
      ntdll: Fix handling of the duplicate MxCsr entry in the x86_64 context.
      ntdll: Fix a couple of system information structures for 64-bit.
      ntdll: Return the expected length in NtQueryInformationProcess.
      ntdll: Define correct address space limits for x86_64.
      setupapi: Fix a structure size check for 64-bit.
      ws2_32/tests: Fix test failures on Vista.
      ntdll: Move the abort_thread() function to the CPU-specific files to allow redefining it.
      ntdll: Unwind the stack before calling exit/abort_thread.
      ntdll: Add support for unwinding the signal stack on x86_64.
      ntdll: Add support for Dwarf expressions in call frame information.
      ntdll: Route the process startup through the platform-specific thread startup code.
      ntdll: Use a more drastic (and simpler) method for unwinding the stack on thread exit.
      configure: Check for mpg123_feed function since we require it.
      kernel32: Fix the GetThreadPriorityBoost return value.
      comctl32/tests: Fix some toolbar test failures on older Windows versions.
      comctl32/tests: Fix status test failures on older Windows versions.
      tools: Copy 16-bit font definitions to avoid including 16-bit headers.
      configure: Fix remaining instances of mpg123_init check.
      winex11: Bytes per line is signed so make it an int instead of a DWORD.
      user32: Don't send focus change messages if foreground window didn't change.
      user32: Bring SwitchToThisWindow a bit more in line with the now documented behavior.
      libport: Added an interlocked_cmpxchg128 function for 64-bit.
      ntdll: Implemented the SList functions for Win64.
      msxml3: Move typelib definitions out of #ifdef HAVE_LIBXML2.
      server: Disable large files for procfs on Solaris.
      msvcrt: Fix the strtol/strtoul definitions.
      configure: Add a .exe extension to the tools dependencies when building on Windows.
      setupapi: Fix a compiler warning.
      kernel32/tests: Avoid size_t in traces.
      windowscodecs/tests: Avoid size_t in traces.

Alistair Leslie-Hughes (9):
      mshtml: Implement HTMLCurrentStyle_get_borderRightWidth.
      mshtml: Implement IHTMLCurrentStyle_get_borderBottomWidth.
      mshtml: Implement IHTMLCurrentStyle_get_borderTopWidth.
      mshtml: Implement IHTMLCurrentStyle_get_color.
      mshtml: Implement IHTMLCurrentStyle_get_backgroundColor.
      mshtml: Implement IHTMLCurrentStyle_get_overflow.
      mshtml: Implement IHTMLCurrentStyle_get_borderWidth.
      mshtml: Implement IHTMLCurrentStyle_get_margin.
      mshtml: Implement IHTMLStyle get/put letterSpacing.

Andrew Eikum (9):
      ole32: Don't read past the end of the stream when converting block types.
      gdiplus: Support regions of more than one rectangle in GdipCreateRegionHrgn.
      user32/tests: Fix input test failures on NT4.
      gdiplus: Implement GdipIsVisibleRegionPoint.
      gdiplus: Implement GdipIsVisibleRegionRect.
      gdiplus: Add utility function get_visible_clip_region.
      gdiplus: Implement GdipIsVisiblePoint.
      gdiplus: Implement GdipIsVisibleRect.
      ole32: Overwrite previous CompObj instead of failing.

Andrew Nguyen (2):
      user32/tests: Fix a test failure on Win9x.
      comdlg32: Fix the copyright year for the Esperanto translation.

André Hentschel (4):
      wcmd: Ignore start and end quotes.
      winemaker: Fix dll compiling in project files.
      winemaker: Update usage text.
      winetest: Mute an annoying message box.

Aric Stewart (11):
      msacm32: If a driver load fails and it does not give us another error set the error to MMSYSERR_NODRIVER.
      msacm32: In acmDriverDetails if we are unable to load the driver then return MMSYSERR_NOTSUPPORTED as windows does.
      msacm32/tests: msacm32 can enumerate drivers that cannot be loaded or have their details queried. Deal with this properly.
      winemp3.acm: Link to system libmpg123.so.
      msctf: Define ITfSourceSingle.
      msctf: Stub implementation of ITfSourceSingle for ITfContext.
      msctf: Hook up ITfTextEditSink::OnEndEdit.
      msctf: Hook up ITfLanguageProfileNotifySink::OnLanguageChange.
      msctf: Correct handling if NULL for pdimFocus in ITfThreadMgr::SetFocus.
      msctf: Implement ITfThreadMgr::AssociateFocus.
      msctf/tests: Test ITfThreadMgr::AssociateFocus.

Austin English (9):
      dxdiag: Add stub implementation.
      dnsapi: Add a stub for DnsFlushResolverCache.
      ole32: Add a stub for CoGetCurrentLogicalThreadId.
      dxdiag: Make dxdiag a Unicode rather than ANSI program.
      dxdiag: Add basic command line parsing.
      ntdll/tests: Fix a compiler warning on PowerPC.
      winscard: Add a stub for SCardListCardsA.
      oleaut32: Avoid a NULL pointer dereference.
      ole32: Fix build on Power PC.

Benjamin Kramer (1):
      ntdll: Fix build on MacOSX.

Chris Robinson (1):
      winemp3.acm: Fix reading/decoding loop.

Damjan Jovanovic (1):
      sti: Add self registration.

Davide Pizzetti (2):
      regedit: Italian translation update.
      winhlp32: Italian translation update.

Detlef Riekenberg (5):
      ws2_32: Use only the lower 16 bit as level when calling [g|s]etsockopt from 16 bit.
      ws2_32: Set WSAEINVAL on invalid levels in set+getsockopt.
      ws2_32/tests: Add tests for getsockopt with invalid levels.
      ws2_32/tests: Add tests for setsockopt with invalid levels.
      regedit: Do not write junk after the LastKey value.

Dylan Smith (7):
      makedep: Handle non-overwriting rename for Windows.
      winedbg: Prevent syntax errors for list command due to the lexer.
      winedbg: Fixed listing source of function in file.
      tools: Detect windows platform with _WIN32 instead of _WINDOWS.
      taskmgr: Finish partial unicode conversion of process page.
      winedbg: Extract address from expression for listing source at address.
      winedbg: Resolve typedefs when checking for user defined type.

Eric Pouech (9):
      configure: Check for large filesystems support.
      winmm: Correctly check for the installed default ioProcs.
      services: Correctly store the service's PID upon startup.
      Remove a couple of superfluous casts.
      ole32: Fix various missing Release calls on monikers.
      kernel32: Handle the case where wineconsole isn't properly started.
      shell32: In shell view, use the expected value for the effect in Drag & Drop operation.
      msvcrt: Correctly handle the error cases in strtol and strtoul.
      winedbg: Fix backend prototypes for PowerPC and Alpha.

Francois Gouget (21):
      wrc: Add a '\n' to a parser_warning() call.
      ntoskrnl.exe: Remove a space before a '\n'.
      windowscodecs/tests: Make some functions static.
      riched20: Make ME_SetCursorToEnd() static.
      mshtml: Remove the create_nsstream() prototype.
      jscript: Make Arguments_value() static.
      jscript: Add a trailing '\n' to a FIXME().
      windowscodecs/tests: Fix compilation on systems that don't support nameless unions.
      rpcrt4/tests: Fix compilation on systems that don't support nameless unions.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      d3drm/tests: Fix compilation on systems that don't support nameless unions.
      windowscodecs: Fix compilation on systems that don't support nameless unions.
      d3d10core/tests: Fix compilation on systems that don't support nameless unions.
      rpcrt4: Fix compilation on systems that don't support nameless unions.
      iphlpapi: Fix compilation on systems that don't support nameless structs or unions.
      d3d10core: Fix compilation on systems that don't support nameless unions.
      wintrust/tests: Fix compilation on systems that don't support nameless unions.
      d3dx9_36: Fix compilation on systems that don't support nameless unions.
      ddrawex: Fix compilation on systems that don't support nameless unions.
      dplayx/tests: Fix compilation on systems that don't support nameless unions.
      iphlpapi/tests: Fix compilation on systems that don't support nameless unions or structs.

Ge van Geldorp (21):
      netapi32/tests: Fix tests on Win7.
      shlwapi/tests: Prevent buffer overflow.
      ntdll/tests: Fix info tests on Win7.
      ntdll/tests: Add acceptable status codes for Win7.
      shlwapi/tests: Remove test that crashes on Win7.
      ntdll/tests: Pass properly aligned buffers.
      crypt32/tests: Remove test that crashes on Win7.
      advapi32/tests: Add acceptable error codes for Win7.
      advapi32/tests: Fix tests on Win7.
      kernel32/tests: Remove test that crashes on Win7.
      user32/tests: Fix test failure on Win7.
      msi/tests: Create only a single restore point.
      netapi32/tests: Add acceptable error codes for Win7.
      comctl32/tests: Adjust message sequences for Win7 (monthcal).
      comctl32/tests: Adjust message sequences for Win7 (updown).
      comdlg32/tests: Fix test on Win7.
      comctl32/tests: Adjust message sequences for Win7 (trackbar).
      kernel32/tests: Fix locale tests on Vista and higher.
      shell32/tests: Fix tests on Vista+.
      gdiplus/tests: Fix test on Win7.
      msvcrt/tests: Add acceptable error codes for W2K8+.

Hans Leidekker (5):
      mscms: Use correct standard color space constants in GetStandardColorSpaceProfileW.
      mscms/tests: Remove code that mixes up color space IDs and standard color space IDs.
      msi: Set REINSTALL property when the product is already installed and the command line is empty.
      msi: Add a partial implementation of MsiDetermineApplicablePatchesW.
      wininet: Destroy authorization info on failure in HTTP_DoAuthorization.

Henri Verbeet (40):
      wined3d: Properly check if an attribute is used in loadVertexData().
      wined3d: Properly check if an attribute is used in loadTexCoords().
      wined3d: Properly check if an attribute is used in buffer_check_attribute().
      wined3d: Properly check if an attribute is used in drawStridedSlowVs().
      wined3d: Properly check if an attribute is used in state_colormat().
      wined3d: Properly check if an attribute is used in drawStridedSlow().
      wined3d: Properly check if an attribute is used in streamsrc().
      wined3d: Properly check if an attribute is used in find_conversion_shift().
      d3d8: Remove stray tabs.
      d3d8: Use a wined3d cs for wined3d locking.
      wined3d: Properly check if an attribute is used in transform_texture().
      wined3d: Properly check if an attribute is used in state_normalize().
      wined3d: Properly check if an attribute is used in remove_vbos().
      d3d9: Remove stray tabs.
      d3d9: Use the wined3d cs for wined3d locking.
      wined3d: Properly check if an attribute is used in drawStridedInstanced().
      wined3d: Get rid of a redundant memset() in device_stream_info_from_declaration().
      d3d10: Add the ID3D10EffectScalarVariable interface.
      d3d10: Add the ID3D10EffectVectorVariable interface.
      wined3d: Remove trailing spaces.
      d3d10: Add the ID3D10EffectStringVariable interface.
      d3d10: Add the ID3D10EffectShaderResourceVariable interface.
      d3d10: Add the ID3D10EffectRenderTargetViewVariable interface.
      d3d10: Add the ID3D10EffectDepthStencilViewVariable interface.
      d3d9: Remove trailing spaces.
      d3d10: Add the _D3D10_EFFECT_SHADER_DESC struct.
      d3d10: Add the D3D10_NAME enum.
      d3d10: Add the D3D10_REGISTER_COMPONENT_TYPE enum.
      dxdiag: Make the "cmdline" parameter const.
      d3d8: Remove trailing spaces.
      d3d10: Add the _D3D10_SIGNATURE_PARAMETER_DESC struct.
      d3d10: Add the ID3D10EffectShaderVariable interface.
      wined3d: Add support for ARB_depth_clamp.
      wined3d: Only warn about using Lod sample functions in fragment shaders is ARB_shader_texture_lod isn't supported.
      ddraw: Remove trailing spaces.
      d3d10: Add the ID3D10EffectBlendVariable interface.
      d3d10: Add the ID3D10EffectDepthStencilVariable interface.
      wined3d: Release the GL lock on IWineD3DImpl_FillGLCaps() error paths.
      wined3d: Properly check for ARB program compile errors.
      wined3d: Print a warning when an ARB program exceeds the native resource limits.

Hongbo Ni (1):
      user32: Fix DLL injection problem using LOAD_WITH_ALTERED_SEARCH_PATH.

Huw Davies (15):
      msdaps: Implement IDBInitialize_Initialize proxy and stub.
      msdaps: Implement IDBProperties_SetProperties proxy and stub.
      msdaps: Implement IDBCreateSession_CreateSession proxy and stub.
      msdaps: Implement ISessionProperties_SetProperties proxy and stub.
      widl: Add separate --win32-align and --win64-align options.
      msdaps: Use 2 byte structure packing for win32 code.
      msdaps: Implement ICreateRow_CreateRow proxy and stub.
      msdaps: Implement IDBCreateCommand_CreateCommand proxy and stub.
      msdaps: Implement IBindResource_Bind proxy and stub.
      include: Add msdaguid.h.
      include: Add msdadc.idl.
      msdaps: Implement IDBDataSourceAdmin_CreateDataSource proxy and stub.
      oledb32: Add a stub oledb32.dll.
      oledb32: Add a stub implementation of the conversion library class.
      wine.inf: Register msdaps.dll.

Hwang YunSong (1):
      winecfg: Updated Korean resource.

Ismael Barros (1):
      dpwsockx: Stub implementation.

Jacek Caban (60):
      urlmon: Fixed tests on IE older than 8.
      mshtml: Wrap nsIHttpChannelInternal interface.
      mshtml: Treat wyciwyg protocol as Gecko special protocol.
      mshtml: Don't return Gecko interfaces implementation from nsChannel::QueryInterface.
      shdocvw: Return succes in bind status callback functions.
      wininet: Don't free gzip_stream in HTTPREQ_CloseConnection.
      urlmon: Call OnStopBinding before Terminate.
      mshtml: Use URL moniker to load http documents.
      msxml3: Get rid of not used aggregation support in domelement.
      mshtml: Get rid of handling post data in IPersistMoniker::Load hack.
      mshtml: Remove no longer used create_nsstream.
      mshtml: Wrap nsIURL interface.
      mshtml: Update wine_url in nsIURL::SetQuery.
      jscript: Fixed parsing regexps starting with '='.
      jscript: Don't require semicolon after function declaration.
      jscript: Throw an exception when evaluating invalid identifier instead of on lookup failure.
      jscript: Return "undefined" type for invalid references.
      jscript: Create undeclared values to script_disp instead of var_disp.
      jscript: Added RegExp.lastIndex implementation.
      jscript: Added RegExp.exec implementation.
      jscript: Added RegExp.test implementation.
      jscript: Use proper VARIANT_BOOL values in bool literals.
      jscript: Create Array objects from proper constructor.
      jscript: Get script_ctx_t as to_object arguments.
      jscript: Added 'instanceof' keyword implementation.
      jscript: Create arguments object as a seaprated class inheriting from Object.
      jscript: Added Function.call implementation.
      jscript: Added Function.apply implementation.
      jscript: Make Array.push generic.
      msxml3: Moved IDispatchEx implementation from domdoc to xmlnode.
      msxml3: Use IXMLDOMSelection as a main queryresult interface.
      msxml3: Added more IDispatchEx tests.
      shdocvw: Added IPropertyNotifySink stub implementation.
      shdocvw: Move OnObjectAvailable implementation to dochost.c.
      mshtml: Always call OnStartRequest before OnStopRequest.
      shdocvw: Use IPropertyNotifySink to track ready state and complete notification.
      shdocvw: Added IWebBrowser2::get_ReadyState implementation.
      mshtml: Fixed script tests on IE8.
      mshtml: Added support for DISPID_VALUE.
      mshtml: Added DISPID_VALUE implementation for HTMLLocation object.
      mshtml: Added IOmNavigator::toString implementation.
      mshtml: Added IHTMLWindow2::toString implementation.
      dispex.idl: Added SID declarations.
      mshtml: Move ITypeInfo::Invoke call to separated function.
      mshtml: Moved dynamic_data allocation to separated function.
      mshtml: Added function object implementation.
      mshtml: Added function object tests.
      mshtml: Properly release DispatchEx data.
      jscript: Code clean up.
      jscript: Code clean up.
      jscript: Added String.lastIndexOf implementation.
      jscript.idl: Added IActiveScriptDebug declaration.
      mshtml: Fixed script tests on IE6 and IE7.
      jscript: Added to_primitive on hosting objects test.
      jscript: Make Array.slice generic.
      jscript: Added Array.unshift implementation.
      mshtml: Fixed tests on IE8.
      mshtml: Added http loading test.
      mshtml: Added IHTMLDocument::writeln implementation.
      mshtml: Added IOmNavigator::get_userAgent implementation.

Jan de Mooij (1):
      comctl32/propsheet: Update position of hidden buttons too.

Jeff Zaroyko (1):
      kernel32: sLanguage is LOCALE_SABBREVLANGNAME.

Jesse Allen (1):
      dinput: Add DISEQUENCE_COMPARE macro.

Juan Lang (5):
      comctl32: Return the number of characters copied in WM_GETTEXT even if the buffer is too small.
      crypt32: Fix a test failure on Windows 7.
      quartz: Don't crash if sample allocation fails.
      include: Define IPPROTO_IPV6.
      ws2_32: Add a fixme for IPPROTO_IPV6.

Jörg Höhle (1):
      wined3d: Delete meaningless UNIX GL driver version parsing.

Louis Lenders (3):
      shdocvw.inf: Add default registry key "HKCU\Software\Microsoft\Internet Explorer\Settings.
      dbghelp: Add version resource.
      psapi: Add version resource.

Michael Stefaniuc (16):
      ntdll: Fix a memory leak on an error path (Smatch).
      winefile: Get rid of the #ifndef UNICODE code paths.
      winefile: Don't use _tsplitpath().
      winefile: Use the explicit SendMessageW form.
      winefile: Use the explicit W-form of the string functions.
      winefile: Use the explicit W-form for the *Window* functions.
      winefile: Use the explicit W-form of the Load*() functions.
      winefile: Use the explicit W-form for the file IO related functions.
      winefile: Convert the rest of the functions to use the explicit W-form.
      winefile: Replace TCHAR with WCHAR.
      winefile: Replace the TSTR types with WSTR.
      winefile: Use the explicit W-form for the rest of the types.
      winefile: Compile with -DWINE_NO_UNICODE_MACROS.
      d3d8: Release the lock instead of locking a second time (Smatch).
      user32: Remove a stray ';' that produces an empty if condition.
      jscript: Check the correct variable for the error condition (Smatch).

Mike Kaplinskiy (1):
      ws2_32/tests: Fix failure on NT4.

Nikolay Sivov (5):
      comctl32/tests: Move message testing helpers to header.
      comctl32/listview: Call default handler for WM_PAINT disabled by WM_SETREDRAW.
      comctl32/trackbar: Fix tic count calculation.
      comctl32/trackbar: Cache window style.
      comctl32/trackbar: Reduce parameter count for some helpers.

Paul Vriens (1):
      user32/tests: Run tests again on Win95.

Piotr Caban (5):
      jscript: Fixed keywords handling.
      jscript: Fixed Function method's lengths.
      jscript: Added String.substr implementation.
      jscript: Throw 'Object expected' error in call_expression_eval.
      jscript: Added JSGlobal_unescape implementation.

Riccardo Loti (1):
      clock: Fix typo in the Italian translation.

Rico Schüller (7):
      d3d10: Identify some more unknowns in parse_fx10.
      d3d10: Parse variable flag.
      wined3d: Add WINED3D_SM4_OP_MAX.
      wined3d: Add WINED3D_SM4_OP_MIN.
      d3d10: Add null objects for technique, pass, local_buffer and variable.
      d3d10: Add argument check in ID3D10EffectTechnique::GetDesc.
      d3d10: Add argument check in ID3D10EffectPass::GetDesc.

Roderick Colenbrander (4):
      winex11: Introduce a new function for looking up the physical color of a pixel for use with colormap generation-like functions.
      winex11: Prepare X11DRV_PALETTE_ToPhysical/_ToLogical for a new ColorShift structure.
      winex11: Use ColorShifts from physDev in X11DRV_PALETTE_ToPhysical.
      winex11: Use ColorShifts data in X11DRV_PALETTE_ToLogical.

Sergey Khodych (6):
      user32: edit: Use a dialog mode after receiving WM_GETDLGCODE message.
      user32: edit: Improve handling of WM_KEYDOWN VK_ESCAPE in a dialog mode.
      user32: edit: Improve handling of WM_KEYDOWN VK_TAB in a dialog mode.
      user32: edit: Improve handling of WM_KEYDOWN VK_RETURN in a dialog mode.
      user32: Use IDOK as default identifier in a template.
      user32/tests: Fix a typo.

Stefan Dösinger (8):
      wined3d: Initialize ps_arb_max_local_constants.
      wined3d: Don't use WINED3DADAPTER_DEFAULT as refresh rate.
      wined3d: Make it clear that glFlush and glFinish are WGL functions.
      wined3d: Remove redundant TRACEs.
      wined3d: Allow filtering on RECT textures.
      wined3d: Add a comment about D3DSAMP_MAXMIPLEVEL.
      wined3d: Handle per-texture max LOD level.
      wined3d: SetLOD is ignored on D3DPOOL_DEFAULT textures.

Tony Wasserka (6):
      windowscodecs: Add tests for IWICStream_InitializeFromMemory.
      windowscodecs: Add tests for IWICStream_Seek with memory streams.
      windowscodecs: Add tests for IWICStream_Read with memory streams.
      windowscodecs: Add tests for IWICStream_Write with memory streams.
      windowscodecs: Add tests for the unimplemented IWICStream methods when using memory streams.
      windowscodecs: Add tests for IWICStream_Stat with memory streams.

Vincent Povirk (50):
      oleaut32: Avoid copying the data when loading an image using WIC.
      include: Add 8-bit grayscale pixel format.
      windowscodecs: Add stub JPEG decoder.
      windowscodecs: Implement Initialize for the JPEG decoder.
      windowscodecs: Implement GetFrame for the JPEG decoder.
      windowscodecs: Implement GetPixelFormat for the JPEG decoder.
      windowscodecs: Implement GetSize for the JPEG decoder.
      windowscodecs: Implement CopyPixels for the JPEG decoder.
      windowscodecs: Print a FIXME when WICConvertBitmapSource fails.
      windowscodecs: Support conversion of 8bppGray to 32bppBGRA.
      windowscodecs: Fix rounding in BMP encoder.
      oleaut32: Make ITypeInfo2::GetCustData succeed when data is not found.
      wininet: Allow +.- characters in url scheme.
      include: Add WIC pixel formats needed for PNG.
      windowscodecs: Add stub PNG decoder.
      windowscodecs: Register the PNG decoder.
      windowscodecs: Implement GetContainerFormat for PNG decoder.
      windowscodecs: Implement GetFrameCount for PNG decoder.
      windowscodecs: Implement Initialize for the PNG decoder.
      windowscodecs: Implement GetFrame for the PNG decoder.
      windowscodecs: Implement GetPixelFormat for the PNG decoder.
      windowscodecs: Implement GetSize for the PNG decoder.
      windowscodecs: Implement CopyPixels for the PNG decoder.
      windowscodecs: Implement CopyPalette for the PNG decoder.
      windowscodecs: Support color-keyed transparency in PNG images.
      windowscodecs: Implement conversion from BlackWhite to 32bppBGRA.
      windowscodecs: Implement conversion from 2bppIndexed to 32bppBGRA.
      windowscodecs: Implement conversion from 2bppGray to 32bppBGRA.
      windowscodecs: Implement conversion from 4bppGray to 32bppBGRA.
      windowscodecs: Implement conversion from 16bppGray to 32bppBGRA.
      windowscodecs: Implement conversion from 48bppRGB to 32bppBGRA.
      windowscodecs: Implement conversion from 64bppRGBA to 32bppBGRA.
      gdiplus: Add test for GdipCreateHBITMAPFromBitmap.
      gdiplus: Implement GdipCreateHBITMAPFromBitmap.
      gdiplus: Add PNG to the decoders list.
      gdiplus: Use the decoder list to decide how to load image files.
      gdiplus: Add and use an HBITMAP field in GpBitmap objects.
      gdiplus: Don't use IPicture to manage the HDC associated with a GpBitmap.
      gdiplus: Create DIBs instead of IPictures in CreateBitmapFromScan0.
      gdiplus: Return the real image bits from LockBits when possible.
      gdiplus: Use AlphaBlend for 32-bit images with alpha channels.
      gdiplus: Reimplement GdipCreateBitmapFromHICON based on RGBA bitmaps.
      gdiplus: Use WIC to decode ICO files.
      oleaut32: Use WIC to decode JPEG images.
      oleaut32: Use WIC to decode PNG images.
      gdiplus: Use WIC to encode images.
      gdiplus: Use WIC to decode JPEG files.
      gdiplus: Use WIC to decode GIF files.
      oleaut32: Handle LCID arguments in ITypeInfo::Invoke.
      oleaut32/tests: Add test for tlibattr->lcid.

Vladimir Pankratov (4):
      shdoclc: Correct Russian translation.
      shell32: Handle NULL path.
      setupapi: Add stub for SetupDiGetClassImageIndex.
      urlmon: Handle NULL parameter.

--
Alexandre Julliard
julliard@winehq.org
