The Wine development release 1.1.11 is now available.

What's new in this release (see below for details):
  - Numerous fixes for IE7 support.
  - Support for 64-bit cross-compile using Mingw64.
  - User interface support for crypto certificates.
  - Better support for MSI installation patches.
  - Various Direct3D optimizations.
  - Various bug fixes.

The source is available from the following locations:

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

    986  ODBC.dll unimplemented
   1973  Bug in StretchDIBits with biBitCount=32
   4293  text invisible in myODBC installer 2.5 -buggy refresh?
   5182  Wrong Time read into program
   5241  X BadAlloc failure (X_CreatePixmap) in StrePla.exe
   5463  ie6 installs now, but doesn't work...
   6126  SoulSeek crashes
   6139  Spanish Vocabulary Builder won't install => devision by zero
   6458  Wing Commander Prophecy: Objects are no longer rendered correctly
   6618  Warcraft III Crash on intro movie playback
   6921  C&C Tiberian Sun menu disappears after save
   7292  SystemDrive and a bunch other variables not set
   7543  Window position geometry not saved between app executions
   7795  Zoo Tycoon 2 D3D Device error
   8264  Streaming Media Player v5.0: "Unspecified error" when "Play from remote playlist..." is attempted
   9350  Cannot change country in iTunes 6.0 due to unimpletmented 'TrackPopupMenuEx' function
   9462  Mouse cursor appears only when clickling left mouse button (Star Wars: KOTOR)
   9500  StarCraft Battle.net-Hitting the Browse button hangs the game
   9528  Battlefield 2142 breaks on startup with ReportEventW errors
   9839  Game cannot connect using DirectPlay8.1
   9994  mshtml: No icons visible in the Adobe Reader 8.1 "First Run" - Advertisement
  10005  Ever 17 - out of infinity crashes
  10036  The General PL: Problem with RichLine, it makes game unplayable
  10124  Turok doesn't see D3D Compatible Adapter.
  10137  WinSock ServerSocket
  10221  "make test" fails on d3d9/tests/visual.c
  10294  Mouse Y is off by 100 pixels in some fullscreen games
  10378  Programmer's Notepad 2 gives an error message, closes after using search function
  10457  Application complains that directsound is not detected
  10470  Radmin viewer 3.1: Black squares in the voice chat window
  10714  wps do not work
  10769  Window contents spontaneously move to root (0,0), stops updating
  10805  EmEditor hangs
  10820  Unhandled division by zero in ALSA_AddRingMessage in PowerPoint Viewer 2008
  10976  Palm Desktop fails to install
  11186  Worms 2 regression: Page fault if you start the game by throwing a grenade
  11229  Sonic Adventure DX 3D models leave behind a "ghost"
  11376  Origin 7.5 crashes while plotting data
  11403  Installation fails after selecting the install folder
  11444  Pirates Of the Caribbean Online having login issue
  11544  Audio problems with Heroes II and ALSA Driver
  11634  erratic mouse in Starfleet Command Volume II Empires at war
  11816  Magic Workstation main window disappears immediately?
  11912  Wine desktop minimized icon on top
  11961  Zinc-based apps don't run?  (Go Diego Go Wolf Pup Rescue, Virble)
  11979  Legacy 5 - Can't check for online update
  12075  Endnote X1: crashes when selecting text by mouse
  12158  Installer Everest Poker
  12247  Page fault in quartz during DLL registration prevents video playback in Ares P2P client
  12252  Need for Speed: Hot Pursuit 2 demo crashes on car select
  12360  load/save preferences.ini file error[file corrupt]
  12438  Marratech 6.1 hangs on startup
  12495  The free DWG viewer from brava doesn't work
  12528  You can resize the WinMerge dialog vertically on Wine, but not Windows
  12588  Trillian crashes at startup when trying to load dwmapi.dll
  12602  Duo Princess - using dmime crashes the game
  12628  wine: Call from 0x7b840fc8 to unimplemented function hal.dll.ExAcquireFastMutex
  12800  CIsco IP Communicator crash calling winhttp.dll.WinHttpCreateUrl
  12823  newer games using OpenGL cannot be played
  12991  eMule ScarAngel
  13111  xfile support is still non-existant in wine
  13361  firefox 3 can't handle local paths in location window [dogfood]
  13425  The Punisher demo sound effect from launcher gets stuck
  13458  Starcraft hangs in wine-1.0rc2 in dsound
  13478  Winehelp crash in textpad
  13512  Sniper Elite: game hangs on applying options (change to try resolution and crash)
  13625  Page fault when closing help viewer
  13639  Regression: No sound in Scorcher Demo
  13640  Scorcher Demo crashes on start
  13680  DC++: closing help browser crashes wine
  13697  sound problems in Battlezone 2
  13764  SMPlayer doesn't render video properly [dogfood]
  13793  Prince of Persia: the Sands of Time crashes mid-way through.
  13824  Flash8 draws outside from frame after desktop switching
  13841  Babylon 7: Babylon freezes in trial version mode
  13842  SW: Knights of the Old Republic PL and fonts
  13859  Star Wars Race cursor duplicate
  13897  Live For Speed CMX Viewer S2Y: Lost window when shade window or switch workspace
  13904  Axis & Allies starts in zero sized window mode
  14215  Terragen crashes immediately on startup
  14322  Crashes when I try to run FeedDemon
  14488  Bonjour Service with iTunes
  14493  RumbleBox fails to install ==> Crash
  14515  AutoWikiBrowser doesn't install (uses gdiplus and .NET 2 framework)
  14587  wineprefixcreate creates useless directories in "My Files" directory
  14664  VeZA Route Planner 2005: crashes on startup
  14687  Helium Music Manager 2008 installation doesn't work
  14709  The White Chamber game crashes on exit
  14808  CS2 Compiz tooltips
  14952  Microsoft Word 2003 hangs while instaling a new feature
  15044  Random crash in MSN Messenger 7.0
  15183  MagicMaps crashes with nvidia above version 169.12
  15296  Installation of MS office broken until last GIT
  15309  Flashplayer crashes in quartz when used with an IM.
  15338  setup_exception_record stack overflow when running wineboot
  15491  Star Wars: Jedi Knight - Jedi Academy : Clicking install button in autorun menu freezes autorun.exe
  15578  Px-map crashes (probably caused because reading registry-key fails)
  15699  Winecfg crashes if no audio driver is present
  15835  Rapid Uploader: Delete button shows a popup menu that self closes.
  15840  SuddenStrike: crashes when loading a level
  15931  Photoshop CS4 Crashes while launching
  16086  Problems with sound in Soldier of Fortune
  16101  WMP10: Crashes on launch
  16103  Google Sketchup 7 crashes after downloading model
  16164  Google Sketchup 7 crashes when you click "Start using Sketchup"
  16317  Unhandled exception unimplemented function setupapi.dll.SetupPromptForDiskA
  16334  tools/fnt2bdf.c: format not a string literal and no format arguments
  16335  winex11.drv/xrender: format not a string literal and no format arguments
  16336  advpack/tests/install: format not a string literal and no format arguments
  16337  dinput/tests/joystick: format not a string literal and no format arguments
  16338  msxml3/tests/xmldoc: format not a string literal and no format arguments
  16339  setupapi/tests: format not a string literal and no format arguments
  16340  winedbg/db_disasm: format not a string literal and no format arguments
  16341  wineserver/trace: format not a string literal and no format arguments
  16345  ShadowFlare: Crashes on entering game
  16376  Braille2000 does not authenticate with server
  16381  Fading effects not working in Lineage2 and other graphic issues
  16386  FAR crashes with Unimplemented KERNEL32.dll.GetConsoleAliasW
  16414  New Xlive (8.12.2008 and newer) is not working
  16443  Regression in ntdll breaks IE6 setup
  16458  Endless Online installer crashes on start
  16464  IMVU crashes on startup
  16482  FeedDemon pops up an error about msxml on startup
  16511  Google Sketchup rejects some ruby scripts containing CRLF

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

Changes since 1.1.10:

Alex Balut (1):
      mshtml: Removed the reference counting of the DLL.

Alexander Morozov (2):
      hal: Add missing WINAPI.
      ntoskrnl.exe: Add stubs for Io{Allocate,Get}DriverObjectExtension.

Alexander Nicolaysen Sørnes (1):
      kernel32: Add stub for GetConsoleAliasW.

Alexandre Julliard (73):
      server: Convert the registry key modification time to a win32-style time.
      server: The name len in the get_directory_entry request must be a data_size_t.
      kernel32/tests: Added some tests for behavior of 64-bit kernel handles.
      include: Fix the 64-bit value of magic handle constants.
      server: Make object handles ints instead of pointers.
      server: Add functions for conversions between server object handles and pointer-style handles.
      widl: Use local functions where possible instead of STUB_FORWARDING_FUNCTION in stub vtables.
      user32/tests: Added some tests for behavior of 64-bit user handles.
      server: Make user handles ints instead of pointers.
      server: Add functions for conversions between server user handles and pointer-style handles.
      winebuild: Make the cpu flag more generic to allow supporting a given entry point on multiple platforms.
      include: Implemented inline asm functions for x86_64. Export Interlocked* only on i386.
      include: Added some definitions for x86_64 exception handling.
      ntdll: Added stubs for RtlLookupFunctionEntry and RtlVirtualUnwind.
      kernel32/tests: Fixed the handle test for Win9x.
      include: Added the msvcrt memory.h header.
      wininet: Include ws2tcpip.h before anything else for the Windows build.
      server: Get rid of the support for module snapshots, it is no longer needed.
      server: Don't use size_t for module sizes, they are limited to 2Gb anyway.
      configure: Add a wrapper macro for mkdir on Windows.
      configure: Add a check for the grp.h header.
      shell32: Disable the Unix folder for the Windows build.
      include: Disable the asm optimizations for the Windows build.
      include: Fix the definition of 64-bit types for Mingw64.
      configure: Add detection of Mingw64 for crosstests.
      include: Fix a few compiler warnings for the Mingw64 build.
      ntdll: Add a function to export the host OS type and version.
      winetest: Report information about the CPU and host OS.
      wininet/tests: Use new test URLs on test.winehq.org.
      server: Define an lparam_t type for message parameters that can hold all sorts of data.
      server: Windows properties are actually generic params, not handles.
      tools: Re-use the file updating routines from make_makefiles in make_requests.
      tools: Keep track of requests sizes and alignments in make_requests.
      ntdll: Add a heuristic to detect dlls that are wrongly marked as using native subsystem.
      cabinet: Don't allocate a huge buffer on the stack.
      ntdll: Enforce correct protection values in virtual memory functions.
      include: Fix typo in the 64-bit version of GetProcessHeap().
      ntdll: Convert the handles to server handles in NTDLL_wait_for_multiple_objects.
      ntdll: Fix heap management for 64-bit.
      libwine: Don't try to use the preloader on non-i386.
      msi: Don't include msvcrt headers.
      setupapi: Don't include msvcrt headers.
      msvcrt: Don't include msvcrt headers, instead duplicate the definitions in msvcrt.h.
      include: Add the msvcrt/crtdefs.h header and include it where needed.
      msvcrt: Use intptr_t or size_t instead of long where appropriate.
      msvcrt: Use iob_func instead of p__iob on non-x86.
      msvcrt/tests: Load __mb_cur_max and _mbctype dynamically since they may not be available to link against.
      msvcrt: Avoid truncated relocations on 64-bit.
      winegcc: Fix the file mode check.
      server: Add an apc_param_t type to store APC client-side parameters.
      server: Make async I/O transfer sizes always 32-bit.
      include: Allow 64-bit pointers to pass through LDT functions unmolested.
      ntdll: NtCurrentTeb is not exported on x86_64.
      msvcrt: The _CI* math functions are only exported on i386.
      msvcrt: Add a few more *_func functions to replace the __p_* ones.
      msvcrt: The __p_* functions are only exported on i386.
      msvcrt: Rename _ftime to avoid conflicts.
      widl: Use ULONG_PTR instead of unsigned long for pointer casts in generated code.
      winetest: Use main instead of WinMain as entry point.
      winebuild: Generate stub entry points for x86_64.
      ntdll: Add support for dynamically generated stub entry points.
      msvcrt: Rewrite va_list to string conversions to avoid depending on va_copy.
      configure: Get rid of the va_copy checks.
      msvcrt: Add __cdecl to all function prototypes.
      include: Use __p__iob on i386 to avoid problems with Mingw libraries.
      server: Add a mem_size_t type to represent memory sizes and offsets.
      server: Make mem_size_t always 64-bit.
      server: Use mem_size_t instead of file_pos_t for memory mapping sizes.
      server: Make apc_param_t always 64-bit.
      cryptui: Commit checks.bmp missed in a previous patch.
      d3dxof/tests: Avoid size_t in a trace.
      msi/tests: Avoid sizeof in traces.
      msvcrt/tests: Avoid sizeof in a trace.

Alistair Leslie-Hughes (11):
      mshtml: Implement IHTMLStyle get/put posWidth.
      mshtml: Implement IHTMLStyle get/put posHeight.
      mshtml: Add support for V_I4 in IHTMLStyle put_zIndex.
      mshtml: Implement IHTMLStyle put_fontStyle.
      mshtml: Implement IHTMLStyle get/put fontVariant.
      mshtml: Implement IHTMLScriptElement get/put Defer.
      mshtml: Implement IHTMLStyle get_backgroundImage.
      msxml3: Corrected getAttributeNode to return correct values.
      mshtml: Implement IHTMLStyle get_position.
      msxml3: Make functions static.
      msxml3: Add ISupportErrorInfo interface to IXMLDOMDocument.

Andrei Derevyanko (2):
      mshtml: Silence IMarshal QueryInterface FIXME.
      mshtml: Updated test of QueryInterface.

Andrew Nguyen (4):
      jscript: Fix some errors detected by Valgrind.
      jscript: Fix the lexicographical order of the String class properties array.
      jscript: Implement the String.sub() method.
      jscript: Implement the String.sup() method.

Andrew Talbot (34):
      widl: Remove unneeded address-of operators from array names.
      widl: Remove unneeded address-of operators from function names.
      winex11.drv: Sign-compare warnings fix.
      msi: Remove an unused declaration.
      winhttp: Sign-compare warning fix.
      wininet: Sign-compare warnings fix.
      shdocvw: Remove unneeded address-of operators from array name.
      wined3d: Remove unneeded address-of operators from array names.
      wintrust: Sign-compare warnings fix.
      ws2_32: Sign-compare warnings fix.
      winmm: Sign-compare warning fix.
      user32: Sign-compare warnings fix.
      comctl32: Remove unused Wine debug channel.
      d3drm: Remove unused Wine debug channel.
      d3dx8: Remove unused Wine debug channel.
      d3dx9_24: Remove unused Wine debug channel.
      d3dx9_25: Remove unused Wine debug channel.
      d3dx9_26: Remove unused Wine debug channel.
      d3dx9_27: Remove unused Wine debug channel.
      d3dx9_28: Remove unused Wine debug channel.
      d3dx9_29: Remove unused Wine debug channel.
      d3dx9_30: Remove unused Wine debug channel.
      d3dx9_31: Remove unused Wine debug channel.
      d3dx9_32: Remove unused Wine debug channel.
      d3dx9_33: Remove unused Wine debug channel.
      d3dx9_34: Remove unused Wine debug channel.
      d3dx9_35: Remove unused Wine debug channel.
      d3dx9_36: Remove unused Wine debug channel.
      d3dx9_37: Remove unused Wine debug channel.
      ole32: Remove unused Wine debug channel.
      msvcrt40: Remove unused Wine debug channel.
      msvcr71: Remove unused Wine debug channel.
      kernel32: Remove unused Wine debug channel.
      jscript: Remove unused Wine debug channel.

Aric Stewart (9):
      imm32: Implement ImmAssociateContextEx.
      imm32: Implement W/A handling in ImmEscape.
      user32: Implement handling of WM_INPUTLANGCHANGE.
      user32: Proper handling of WM_INPUTLANGCHANGEREQUEST.
      msi: EndDialog with Ignore should not be an error.
      x11drv: If a keyboard layout is an IME only check the loword when comparing to the x11 keyboard layout.
      x11drv: Allow ActivateKeyboardLayout to set the keyboard for the thread and GetKeyboardLayout to return the stored keyboard.
      user32: Remove the driver call for GetKeyboardLayoutList and instead populate from the registry.
      msi: Fix some NULL checking in MSI_RecordGetStringA.

Austin English (3):
      shell32: Fix German translation.
      uxtheme: Fix a compiler warning.
      kernel32: Convert a warn to an err.

ByeongSik Jeon (3):
      gdi32: Unify Chinese and Japanese default font name.
      *Zh.rc: Update the Chinese resource font name to "MS Shell Dlg".
      *Ko.rc: Update Korean resource.

Chris Wulff (1):
      mscoree: Add a stub for LockClrVersion.

Christian Costa (23):
      quartz: Accept null clsMinorType for pins when registering filters + tests.
      ddraw: Fix trace.
      winedbg: Make frame numbers display starting from 0 so we match frame command.
      d3dxof: Increase strings buffer size.
      devenum: Fix traces and fixmes.
      quartz: Turn some fixmes into traces.
      setupx: Add stub for DiInstallClass.
      d3dxof: Add a test to dump an X object data (enabled when objects.txt and templates.txt are present).
      d3dxof: Improve error handling.
      d3dxof: Increase string buffer size.
      dplayx: Fix typo.
      dmime: Improve IDirectMusicPerformance8Impl_PlaySegment(Ex) stubs.
      dmime: Check input params in IDirectMusicSegmentState8Impl_QueryInterface.
      amstream: Implement IDirectDrawMediaStream.
      amstream: Some fixes.
      amstream: Add stubbed implementation of MediaStreamFilter.
      d3dxof: Improve IDirectXFileImpl_CreateSaveObject stub.
      d3dxof: Add some preliminary support for binary objects.
      d3dxof: Remove IDirectXFileObjectImpl stuff. That's not needed.
      dswave: Add missing segment vtbl initialisation (with DirectMusicSegment8_Segment_Vtbl).
      winealsa.drv: Initialize correctly the header before adding it to the queue.
      dmusic: Move IDirectMusicThru and IDirectMusicPortDownload to DirectMusicPort object where they belong.
      winealsa.drv: Handle midi sysex greater than a buffer.

Damjan Jovanovic (1):
      winemenubuilder: Create xdg_config_dir if it does not exist.

Dan Kegel (2):
      msvcrt: fread: Exhaust buffered data before using unbuffered data in ascii mode.
      winver: Add version resource.

Daniel Nylander (6):
      clock: Updated Swedish translation.
      winefile: Updated Swedish translation.
      winhlp32: Updated Swedish translation.
      notepad: Updated Swedish translation.
      winecfg: Updated Swedish translation.
      shell32: Updated Swedish translation.

Dylan Smith (15):
      richedit: Use ME_EnsureVisible to implement EM_SCROLLCARET.
      richedit: Compare editor rather than hWnd in ME_CalculateClickCount.
      richedit: Removed an unnecessary call to GetScrollInfo.
      richedit: Removed unused hwndEdit variable for the RTF parser.
      richedit: Missing capitalization on TxGetScrollBars.
      richedit: Move implementation of EM_GETTEXTRANGE to its own function.
      richedit: Move implementation of EM_GETTEXTEX to its own function.
      richedit: Removed some unnecessary SendMessage calls to itself.
      richedit: Move implementation of WM_CHAR to its own function.
      richedit: Fixed ITextHostImpl return values for tests.
      richedit: Added tests for the formatting rectangle.
      richedit: Made sure text is offset by formatting rectangle.
      richedit: Removed redundant editor height variables and calculations.
      richedit: Avoid re-calculating positions found in wrapping for painting.
      richedit: Move message handling to function callable without window.

Francois Gouget (70):
      ws2_32: Add MSG_WAITALL and MSG_INTERRUPT.
      ws2_32: Add the inet_ntop() and inet_pton() prototypes and their relatives.
      dsound: Remove unneeded casts of zero.
      winspool.drv: Remove unneeded casts of zero.
      port: Remove unneeded casts of zero.
      fnt2bdf: Remove unneeded casts of zero.
      winealsa: Fix a couple of types and avoid unneeded casts.
      avifil32: Remove unneeded casts of zero.
      crypt32: Remove unneeded casts of zero.
      kernel32: Remove unneeded casts of zero.
      msacm32: Remove unneeded casts of zero.
      netapi32: Remove unneeded casts of zero.
      oleaut32: Remove unneeded casts of zero.
      wnaspi32: Remove unneeded casts.
      gdiplus: Add a trailing '\n' to a Wine trace.
      wininet & winhttp: Fix a pointer type mismatch warning when compiling on Windows. On Windows setsockopt() expects a char* while on Unix it accepts anything.
      msvcrt/tests: Stricter fstat() tests.
      msvcrt/tests: Add a stat() test.
      msvcrt: Fix the permissions returned by fstat*() (with test).
      appwiz.cpl: It's ok to use "SysListView32" directly.
      clock: Remove spaces before '\n' in the Swedish resources.
      msvcrt/tests: Add a trailing '\n' to ok() calls.
      msvcrt: Remove _adjust_fdiv() as it is unused.
      shell32: Add a couple of spaces in the spec file.
      ole32: Fix the STORAGE_dump_pps_entry() description.
      cabinet/tests: Make CopyProgress() static.
      d3d9/tests: Make some functions static.
      gdi32/tests: Make test_GdiAlphaBlend() static.
      msvcrt/tests: Make void test_cp_table() static.
      ntdll/tests: Make rtlraiseexception_vectored_handler() static.
      shell32/tests: Make test_cbsize() static.
      ole32/tests: Make test_runnable() static.
      user32/tests: Make some functions static.
      msvcrt: Point the set_new_handler() entrypoint to the right implementation.
      wineoss.drv: Make widOpen() and wodOpen() static.
      userenv/tests: Make userenv_dbgstr_w() static.
      kernel32: Remove _hread16() as it is not used. Move _hwrite16() next to the other related functions.
      wininet & winhttp: Remove the MSG_WAITALL definition as it is not needed.
      devenum: French and German should use SUBLANG_NEUTRAL.
      ole32: Use the IStream16_(CreateStream,CreateStorage,Write) implementations.
      cmd: Make WCMD_DumpCommands() static.
      d3d8: Make D3D8CB_CreateSurface() static.
      port: S_IWUSR and S_IX* are not needed. Remove them.
      msiexec: Make KillService() static.
      winapi_check: Add support for '-arch=xxx' in spec files.
      explorer: Make appbar_wndproc() static.
      winejack.drv: Make some functions static.
      wineesd.drv: Make some functions static.
      wineaudioio.drv: Export widMessage().
      setupapi/tests: Make devinst_RegDeleteTreeW() static.
      riched20/tests: Make keep_responsive() and customWordBreakProc() static.
      mlang/tests: Make strstrW() static.
      gdi32: Make [GS]etDCState() static.
      gdi32: Export three implemented 16bit Engine*() functions.
      kernel32: Make some functions static.
      ddraw/tests: Make some functions static.
      net: Make output_string() and output_error_string() static.
      oleaut32/tests: Make the Widget_*() and KindaEnum_*() functions static.
      msi/tests: Make enum_stream_names() and package_RegDeleteTreeW() static.
      devenum: Explicitly identify the translation as being for SUBLANG_PORTUGUESE_BRAZILIAN.
      wrc: Add a trailing '\n' to some warning and error messages.
      msvcrt/tests: Add a trailing '\n' to an ok() call.
      dmloader: Add a trailing '\n' to a Wine trace.
      rpcrt4/tests: Fix the trailing '\n' in an ok() call.
      wined3d: Fix double const.
      winapi_check: Extend support for '-arch=xxx' in spec files.
      devenum: Make the Romanian translation LANG_NEUTRAL.
      wintrust/tests: Add a trailing '\n' to ok() calls.
      wineoss.drv: Fix the m[io]dMessage() documentation.
      winealsa.drv: Fix the m[io]dMessage() documentation.

Hans Leidekker (34):
      setupapi: Forward pSetupIsUserAdmin to IsUserAdmin.
      setupapi: Implement StringTableAddStringEx.
      setupapi: Fix typo in StringTableGetExtraData.
      wininet: Set secure flag when scheme is https.
      winhttp: Prepend slash to request path if necessary.
      clusapi: Add stubs for OpenCluster and CloseCluster.
      ws2_32: Implement WSAIoctl(SIO_KEEPALIVE_VALS).
      winhttp: Validate parameters per component in WinHttpCrackUrl.
      winhttp: Resolve host port at the latest possible moment.
      wininet: Adapt tests to winehq changes.
      hal: Add version resource.
      wine.inf: Create fake hal.dll.
      pidgen: Add stub implementation.
      pidgen: Add a placeholder BINK resource.
      janitorial: Don't depend on user32 for the self registration functions.
      janitorial: Remove unneeded user32 imports.
      wuapi: New dll.
      include: Add IAutomaticUpdates, IUpdateSession, IUpdateSearcher, IUpdateDownloader and IUpdateInstaller interfaces.
      wuapi: Add a stub implementation of IUpdateDownloader.
      wuapi: Add a stub implementation of IUpdateInstaller.
      wuapi: Add a stub implementation of IUpdateSearcher.
      wuapi: Add a stub implementation of IAutomaticUpdates.
      wuapi: Add a stub implementation of IUpdateSession.
      wuapi: Add class factory.
      wuapi: Register interfaces.
      wintrust: Open test file with share mode FILE_SHARE_READ.
      wintrust: Don't test last error on success.
      wintrust: Implement CryptCATAdminAcquireContext.
      wintrust: Implement CryptCATAdminReleaseContext.
      wininet: Relax a notification test.
      wintrust: Implement CryptCATAdminAddCatalog, CryptCATAdminReleaseCatalogContext and CryptCATAdminReleaseContext.
      wintrust: Add tests for adding and removing catalog files.
      mscat32: Forward more functions to wintrust.
      wintrust: Implement CryptCATAdminCalcHashFromFileHandle.

Henri Verbeet (50):
      wined3d: Load texture coordinates from the correct streams.
      wined3d: Explicitly pass the shader version to shader_get_param().
      wined3d: Explicitly pass the shader version to shader_skip_unrecognized().
      wined3d: Return early from shader_trace_init() when a NULL pFunction is passed.
      wined3d: Avoid disabling numbered arrays if we're going to enable them afterwards anyway.
      wined3d: Remove some unused code.
      wined3d: Don't leak memory in IWineD3DPixelShaderImpl_GenerateShader().
      wined3d: Add functions to initialize and free shader buffers.
      wined3d: Fix the IWineD3DVertexShader and IWineD3DPixelShader IUnknown methods.
      wined3d: Fix some spelling errors.
      wined3d: Use the actual fixup for the stage in gen_ati_shader().
      wined3d: Rename texture_stage_op.color_correction to texture_stage_op.color_fixup.
      wined3d: Compare & copy with the correct clipplane size in IWineD3DStateBlockImpl_Capture().
      wined3d: Make some constant arrays also static.
      wined3d: Get rid of the "len" variable in shader_trace_init().
      wined3d: baseShader.functionLength should be 0 when a NULL pFunction is passed.
      wined3d: Remove some more unused code.
      wined3d: shader_trace_init() shouldn't have side effects.
      wined3d: Don't trace the shader if nobody's looking.
      wined3d: Don't reparse the entire shader just to update the sampler types.
      wined3d: We only care is a sampler is sampled at all in device_map_vsamplers(), not the specific type.
      wined3d: Get rid of the textureDimensions field in the state block.
      wined3d: Use a simpler way to calculate the number of texture levels.
      wined3d: Don't leak memory on failure in allocate_shader_constants().
      wined3d: Explicitly pass the shader version to some more functions.
      wined3d: Move the shader version to reg_maps.
      wined3d: Simplify shader_generate_main() a bit.
      d3d8: Create a d3d8 declaration as parent for FVF based declarations.
      d3d8: Use the wined3d declaration to retrieve the d3d8 shader in IDirect3DDevice8Impl_GetVertexShader().
      d3d8: Remove unused code.
      wined3d: Refuse to create shaders with a NULL function.
      wined3d: Shaders will never have a NULL function.
      wined3d: Fix use_vs() usage in vertexdeclaration().
      d3d8: Add a test for GetVertexShader() with a FVF set.
      wined3d: Remove GetFVF() and SetFVF() from IWineD3DDevice.
      wined3d: Record floating point pixel shader constants in EndStateBlock() as well.
      d3d9: Fix the shader constant test.
      wined3d: Remove the shader_cleanup() method from the shader backend.
      winex11.drv: Fix color conversion for 16 bpp cursors.
      d3d9: Fix a trace.
      d3d9: Add a test for shader constant application through IDirect3DStateBlock9_Apply().
      wined3d: Fix constant setting for the ARB backend.
      wined3d: Don't mark shader constants dirty when we're recording a stateblock.
      wined3d: Track shader constants in the shader backend.
      wined3d: Don't call allocate_shader_constants() from Init3D().
      wined3d: Set the initial viewport in InitStartupStateBlock().
      wined3d: Properly reset the stateblock.
      wined3d: Only apply shader constants that changed.
      wined3d: Remove a useless FIXME.
      wined3d: Consistently use .xyzw for vector components.

Hwang YunSong(황윤성) (2):
      cryptdlg: New Korean resource.
      oleview: Updated Korean resource.

Jacek Caban (14):
      mshtml: Make IHTMLElement::get_document vtbl offset independent.
      mshtml: Skip tests on broken IE6 versions.
      mshtml: Fixed a typo.
      jscript: Added Math.PI implementation.
      jscript: Added Math.E implementation.
      jscript: Added Math.LOG2E implementation.
      jscript: Added Math.LOG10E implementation.
      jscript: Delay setting named info if SCRIPTITEM_GLOBALMEMBER flag is not set.
      mshtml: Fixed IHTMLInputTextElement vtbl and QueryInterface implementation.
      jscript: Correctly handle SCRIPTITEM_GLOBALMEMBERS flag in identifier_eval.
      urlmon: Remove broken IBindCtx ref count test.
      mshtml: Use stored nsINetUtil interface.
      mshtml: Added nsIChannel::[Get|Set]Owner implementation.
      mshtml: Write aCount bytes in nsIInputStream::ReadSegments.

James Hawkins (27):
      msi: Fix the type of the last parameter of MsiEnumPatchesEx.
      msi: Add the MSIPATCHSTATE enumeration.
      msi: Forward MsiEnumPatchesExA to MsiEnumPatchesExW.
      msi: Implement MsiEnumPatchesExW.
      msi: Fix an uninitialized variable.
      msi: Add tests for MsiEnumPatchesEx.
      msi: Add the ability to open multiple users product keys.
      msi: Add the ability to open multiple users' component keys.
      msi: Add the ability to open multiple users' install properties key.
      msi: Remove a duplicated function.
      msi: Remove a duplicated function.
      msi: Add the ability to delete multiple users' component keys.
      msi: Forward MsiEnumPatchesA to MsiEnumPatchesW.
      msi: Implement MsiEnumPatchesW.
      msi: Add tests for MsiEnumPatches.
      msi: Forward MsiGetProductPropertyA to MsiGetProductPropertyW.
      msi: Implement MsiGetProductPropertyW.
      msi: Add tests for MsiGetProductProperty.
      msi: Add a stub implementation of MsiGetPatchInfoEx.
      msi: Forward MsiGetPatchInfoExA to MsiGetPatchInfoExW.
      msi: Add the ability to query a specific context for a product key.
      msi: Add the ability to query a specific context for a patch.
      msi: Add the ability to query a specific context for install properties.
      msi: Implement MsiGetPatchInfoExW.
      msi: Publish the patch information.
      msi: Set the property specified by the Source attribute of the Media table when applying a patch.
      msi: Add tests for MsiGetPatchInfo.

Jeff Zaroyko (2):
      msadp32.acm: Make the szFormatTag the same as windows.
      imaadp32: Report the same driver details as windows.

Jeremy Drake (1):
      oleaut32/tests: Fix double GlobalFree in olepicture tests.

Jonathan Ernst (7):
      wordpad: Updated French translation.
      winhlp32: WINE->Wine.
      winhlp32: Updated French translation.
      shell32: Updated French translation.
      crypt32: Updated French translation.
      cryptdlg: New French translation.
      oleacc: New French translation.

Juan Lang (57):
      crypt32: Remove unnecessary casts.
      crypt32: Allow setting CERT_KEY_PROV_HANDLE_PROP_ID if CERT_KEY_CONTEXT_PROP_ID has not previously been set.
      wintrust: Add stub for WVTAsn1SpcSpOpusInfoEncode.
      wintrust: Add tests for WVTAsn1SpcSpOpusInfoEncode.
      wintrust: Implement WVTAsn1SpcSpOpusInfoEncode.
      wintrust: Add tests for WVTAsn1SpcSpOpusInfoDecode.
      crypt32: Add tests for CryptQueryObject.
      crypt32: Validate input arguments to CryptQueryObject.
      crypt32: Don't claim to have queried an object as a serialized context when reading it has failed.
      crypt32: Downgrade a fixme to a warn.
      crypt32: Support base64-encoded context objects in CryptQueryObject.
      crypt32: Split querying PKCS messages into helper functions.
      crypt32: Support base64-encoded PKCS messages in CryptQueryObject.
      crypt32: Implement CryptStringToBinaryW.
      crypt32: Support wide character base64-encoded PKCS messages in CryptQueryObject.
      cryptui: Ignore additional prop sheet pages when calling CryptUIViewCertificateW from CryptUIViewCertificateA.
      cryptui: Call WinVerifyTrust if the caller has not.
      cryptui: Show (empty) certificate dialog.
      cryptui: Show subject, issuer, and validity period for a cert in the properties dialog.
      cryptui: Show icon and text representing trust state of certificate.
      cryptui: Show valid policies for a cert.
      cryptui: Show issuer statement in cert properties dialog.
      cryptui: Add a (empty) details page to the cert properties dialog.
      cryptui: Add selections to field selection list in details page.
      cryptui: Show the X.509 v1 certificate fields in the details page.
      cryptui: Show detailed value of a field when it's selected in the details page.
      cryptui: Show the certificate extensions in the details page.
      cryptui: Show the certificate properties in the details page.
      cryptui: Remove unnecessary check.
      cryptui: Add a (empty) hierarchy page to the cert properties dialog.
      cryptui: Show cert chain in hierarchy page.
      cryptui: Show status for end cert in hierarchy page.
      cryptui: Show certificate status for selected certificate in hierarchy page.
      cryptui: Allow viewing another cert in the chain from the hierarchy page.
      crypt32: Make a function static.
      cryptui: Remove code duplication in formatting an enhanced key usage value.
      cryptui: Show cert when it's double-clicked in the hierarchy page.
      cryptui: Add (empty) edit cert properties dialog.
      cryptui: Show cert's friendly name and description in edit properties dialog.
      cryptui: Show/hide description's scrollbar depending on how much text it has.
      cryptui: Show a cert's allowed usages in cert properties dialog.
      cryptui: Redraw purposes list based on purpose selection.
      cryptui: Set purpose selection radio button based on enhanced key usage value.
      cryptui: Add an add purpose dialog.
      cryptui: Show/hide add purpose OID's scrollbar depending on how much text it has.
      cryptui: Validate OID in add purpose dialog.
      cryptui: Toggle a usage when it's clicked.
      cryptui: Set cert friendly name and description in response to applying the edit cert properties dialog.
      cryptui: Apply changes to enabled usages in response to applying the edit cert properties dialog.
      cryptui: Refresh tabs in response to cert properties changes being applied.
      include: Document definitions missing from cryptuiapi.h.
      cryptui: Partially implement CryptUIDlgViewContext.
      cryptui: Don't crash if a chain can't be created for the viewed cert.
      cryptui: Fix problem with usage checkbox bitmap not being visible after the first time the edit cert properties dialog is shown.
      crypt32: Don't restrict file stores to binary-encoded files.
      crypt32: Don't check for the TLV after indefinite-length sequence items, the item's decoder has already done so.
      crypt32: Fix encoding OIDs with only two components.

Jörg Höhle (2):
      msvfw32/tests: ICCOpen() is case-insensitive on MS-Windows.
      winecfg: Prevent crash when clearing volume serial number input.

Konstantin Kondratyuk (1):
      mshtml: Correct UIDs of interfaces.

Lei Zhang (5):
      user32: Check input to GetAsyncKeyState().
      qcap: Don't clip intermediate values in YUV to RGB conversion code.
      quartz: Enumerate all the pins on filter and check directions when rendering.
      gdi32: Prevent integer overflow in CreateBitmapIndirect.
      quartz: Ignore unknown chunks when parsing AVI headers.

Maarten Lankhorst (7):
      includes: Fix packing for commdlg in Win64.
      wintab32/winex11.drv: Add CDECL to imported functions.
      winex11.drv: Make XIM functions hidden.
      winex11.drv/explorer: Add CDECL to exported functions.
      ntdll: Make all exported wine functions CDECL.
      gdi32/user32: Make __wine_make_gdi_object_system CDECL.
      ntoskrnl.exe/winedevice: Make wine_ntoskrnl_main_loop CDECL.

Marcus Meissner (2):
      gphoto2.ds: Merge ds_ctrl.c into gphoto2_main.c.
      include: Add prototype for GetConsoleInputExeNameA/W().

Michael Stefaniuc (6):
      rsaenh: Do not cast zero.
      taskmgr: Replace malloc with HeapAlloc.
      taskmgr: Remove some superfluous casts.
      setupapi: Remove some superfluous casts.
      winedos: Don't cast zero.
      d3dxof/tests: Remove redundant NULL check before HeapFree (Smatch).

Mikołaj Zalewski (1):
      devenum: Italian, Spanish, Dutch and VERSIONINFO should use SUBLANG_NEUTRAL.

Nikolay Sivov (6):
      oleaut32: Added SAFEARRAY support for RecordInfo::RecordClear.
      gdiplus: Stub for GdipGetNearestColor.
      oleaut32: Added PICTYPE_NONE and PICTYPE_UNINITIALIZED to IPicture::Render.
      gdiplus: Added GdipAddPathCurve3/GdipAddPathCurve3I with tests.
      gdiplus: Fix Font test failure on charset mismatch.
      ole32: Make OleSetClipboard affected by previous OleInitialize() calls.

Paul Chitescu (1):
      shell32.dll: Return SE_ERR_FNF if file not found before checking for associations.

Paul Vriens (33):
      advapi32/tests: Fix a few test failures on NT4.
      crypt32/tests: Fix some test failures on Win9x and NT4.
      advapi32/tests: Fix some test failures on NT4.
      riched32/tests: Remove an incorrect comment.
      msi/tests: Run tests again on Win9x and NT4.
      advapi32/tests: Only skip tests on NT4.
      advapi32/tests: Fix a test failure on NT4.
      gdi32/tests: Fix a failure on NT4.
      riched32/tests: Remove the todo_wine logic where appropriate.
      riched20/tests: Remove the todo_wine logic where appropriate.
      msi/tests: Skip tests on win9x due to different registry keys.
      gdi32/tests: Remove the todo_wine logic where appropriate.
      rsaenh/tests: Fix a test failure on NT4.
      setupapi/tests: Fix a test failure on Vista/W2K8.
      ddraw/tests: Fix a test failure on a Win98 VMware box.
      gdi32/tests: Fix some test failures on Win9x.
      gdi32/tests: Fix a few failures on Win9x.
      user32/tests: Destroy the windows after the tests.
      xinput1_3/tests: Call FreeLibrary() after tests.
      rpcrt4/tests: Use GetModuleHandle instead of LoadLibrary.
      rpcrt4/tests: Move function pointer initialization to the init function.
      msi/tests: Run tests again on Win9x and NT4.
      comctl32/tests: Destroy the window after the tests.
      riched20/tests: Fix test failures on Win9x, WinMe and Wine in win9x mode.
      jscript/tests: Fix test failures on Win9x.
      shlwapi/tests: Fix some test failures on Vista.
      setupapi/tests: Fix a test failure on Vista (and skip some tests).
      imm32/tests: We check for failure not success.
      quartz/tests: Fix test failures on Win9x by using A-functions.
      riched20/tests: Fix tests on Win9x by using A-calls.
      wintrust/tests: Fix test crash on Win9x.
      wintrust/tests: Don't crash on NT4 and W2K.
      msvfw32/tests: Fix a test failure on W2K3.

Ricardo Filipe (5):
      clusapi: Add stubs for ClusterEnum, ClusterOpenEnum and ClusterCloseEnum.
      hal: Add stubs for ExAcquireFastMutex and ExReleaseFastMutex.
      advapi32: Add stub for UnregisterTraceGuids.
      include: Add DEVNODEID and DEVINSTID definitions.
      include: Add header information for CDN_INCLUDEITEM notification.

Rico Schüller (3):
      wordpad: Fix German translation.
      winhlp32: Fix German translation.
      comdlg32: Fix German translation.

Roderick Colenbrander (4):
      wined3d: Add GL_ARB_texture_rg / GL_EXT_texture_swizzle support. These extensions are needed for more efficient R32F/RG32F support.
      wined3d: Add R16F using ARB_texture_rg.
      wined3d: Add R32F using ARB_texture_rg.
      wined3d: Add GL_RG16F / GL_RG32F support using ARB_texture_rg.

Rok Mandeljc (12):
      regedit: Updated Slovenian translation.
      serialui: Added Slovenian translation.
      start: Updated Slovenian translation.
      winecfg: Updated Slovenian translation.
      mshtml: Fixed Slovenian translation.
      shell32: Updated Slovenian translation.
      wordpad: Updated Slovenian translation.
      cmdlgtst: Fix problem with ellipses in Slovenian translation.
      winefile: Fix problem with ellipses in Slovenian translation.
      appwiz.cpl: Added Slovenian translation.
      winhlp32: Updated Slovenian translation.
      setupapi: Added Slovenian translation.

Simon C. Ion (1):
      winemaker: Correctly process directories containing regexp metacharacters.

Stefan Dösinger (21):
      ntdll: Print the SYSTEM_PERFORMANCE_INFORMATION only once.
      wined3d: Don't load INT and BOOL constants needlessly.
      WineD3D: Abstract some ATIfs op debug TRACEs.
      wined3d: Fix ARG_UNUSED and use it properly.
      wined3d: Give ATIFS a pixel shader handler.
      wined3d: Remove a blank line in state.c.
      wined3d: Fake GL_ARB_multitexture.
      wined3d: Set up the shaders when delaying fixed func applying.
      wined3d: Reinstall the G16R16F format surface load fixup.
      wined3d: Some GL_EXT_fog_coord prototype fixes.
      wined3d: Remove some needless initializations.
      wined3d: Emulate GL_EXT_fog_coord.
      wined3d: Correct a stage number.
      wined3d: Initialize max_combined_samplers properly.
      wined3d: Avoid loading opengl32.dll.
      wined3d: Get rid of IWineD3DPixelShaderImpl_GenerateShader.
      wined3d: Pass the ps_compile_args structures to the shader generation code.
      wined3d: Make use of the ps_compile_args structure in glsl_shader.
      wined3d: Make use of ps_compile_args in arb shader.
      wined3d: Use the ps_compile_args struct in glsl.
      wined3d: Make pixelshaders disable fog properly.

Vincent Povirk (10):
      explorer,shell32: Improve ABM_GETTASKBARPOS stub.
      gdiplus: Fix a memory leak in GdipCombineRegionRegion.
      gdiplus/tests: Fix a double-free in the region test.
      gdiplus/tests: Fix a double-free in the graphics test.
      shell32: Fix a memory leak in the run dialog code.
      shell32: Use the NO_UI flag in ShellExecute.
      shell32: Display error messages in ShellExecuteEx.
      shell32: Use ShellExecuteEx instead of ShellExecute in the run dialog.
      shell32: Use ShellExecuteEx to create error dialogs for the run dialog.
      winex11.drv: Do not assume window managers support _NET_WORKAREA.

Vitaliy Margolen (1):
      dinput: Remove DIEnumDevicesCallbackAtoW.

Wolfgang Walter (1):
      wineps.drv: Fix freeing of not allocated memory in type42.c.

--
Alexandre Julliard
julliard@winehq.org
