The Wine development release 1.1.44 is now available.

What's new in this release (see below for details):
  - Many more new icons.
  - Support for 32-bit prefixes with a 64-bit Wine.
  - Many additional msvcr80/90 functions.
  - Improvements to Bidi handling.
  - More complete mmdevapi (Win7 audio) support.
  - Improved handling of MSI patches.
  - A number of fixes for desktop menus.
  - Optimizations in OLE storage.
  - Various bug fixes.

The source is available from the following locations:

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

    729  Shading of the Winamp equaliser and playlist windows does not work properly
   3824  Delphi 1 IDE WIN_CreateWindowEx out of memory
   5174  macom2.dll does not work with wine dcom
   5247  Star Wars Battlefront sky box drawn upside down
   7012  Independence War 2: Edge Of Chaos fails to start
   7105  Hogia Hemekonomi crashes with Unhandled exception division by zero
   7267  Lineage 2 complains about outdated NVIDIA drivers using ATI card with Mesa driver
   8053  Painkiller's screenshot function doesn't work
   8278  Earth 2160 missing ingame effects
   9269  Psychonauts has misplaced / upside down textures / shadows
   9338  Pro evolution soccer 5 displays in the left of the screen only
  10467  Microsoft .NET Framwork 2.0 requires l_intl.nls (unicode casing tables)
  10749  AVP2 rendering extremely slow (drawPrimitive using software emulation)
  10964  Prince of Persia The two Thrones: Upside is down if some text appears on the screen
  11477  Resident Evil 3, Polygonal characters are invisible
  11859  Greek keyboard layout does not work under KDE
  12248  Ufo Aftermath cursor issue: the cursor is invisible ingame
  12682  Outlook Express does not run
  12791  Microsoft Office XP dont install the Spelling and grammar not installed
  13303  Frasse and the Peas of Kejick does not run using the .desktop shortcut
  13631  Unhandled page fault in winefile after pressing F5
  13834  Heroes 3 crash
  14406  Goldwave loaded mp3 file is corrupted
  15464  Panzer General 3D Demo: Selected units cause screen corruption
  15529  .debris hangs shortly after starting
  15810  New shell folder icons look poor in small size
  16184  Inconsistent initial highlighting/selection of text in dialog boxes in IDA Pro
  16235  Galactic Civilizations II: Dread Lords crashes when starting new game or a campaign
  16709  poor video performance running Praetorians
  16953  Polybius crashes in d3dfmt_convert_surface
  17086  Wonderland Online 3.0.1 crashes after agreeing to the user agreement.
  17464  Word 2007 can not save any documents and symbol input crashes Word
  17765  AutoCAD 2008: Crash after closing "Selection Preview Cycling" window (also affects XMLSpy)
  17829  Giants: Citizen Kabuto - dissapearing of sky and water when enemies are blowing up
  17968  Baldur's Gate 2: Shadows of Amn install fails
  18135  32-bit apps are not supported by 64-bit Wine
  18147  Keypresses in shellview don't select files if there is only one file present
  18385  fr-041_debris Postprocessing offset and too big
  19082  Missing pixels in the widgets
  19462  d3d9: visual test crashes with glsl disabled with nvidia 190 drivers
  19637  FEAR: Crashes on launch
  19720  Game (Amelie's Cafe) cannot be starten
  20157  Vector Magic doesn't render texts
  20261  Call to unimplemented function d3dx9_36.dll.D3DXCheckTextureRequirements
  20700  ACDSee crashing when trying to edit file names in Listview
  20703  ACDSee crashing after creating new folder
  20735  Photoshop Elements 8 installer: Empty dropdown-list
  20786  Artweaver - Exact brush outlines not painted correctly
  20934  Bloom filter shows artifacts in fr-041_debris (demoscene demo)
  21067  OziExplorer new window has wrong colors
  21109  Paint.NET 3.36 installer aborts after accepting EULA
  21110  Paint.NET 3.36 installer displays cancel dialog incorrectly
  21248  No sound in multiple applications, needs mmdevapi implemented
  21307  Keyboard layout error on IDA Pro 4.9
  21339  Book of Unwritten Tales Demo does not start: OGRE engine stops at "Init Sound"
  21390  Playing files in mp3DirectCut hangs with 100% cpu usage.
  21392  No mouse in Harbinger
  21519  Mass Effect 2 crashes after start
  21725  Bonzai3D - menu icons are not visible
  21782  StarCraft 2 initializes slowly and falls back into fail safe graphics
  21874  Aztaka fails to run
  21932  Elder Scrolls III: Morrowind slowed down to < 1 fps
  21974  FileMaker v10.0v1 crashes when loading a new datatable
  22012  Cinema 4d 10: Entering arrowed submenus in dropdowns crashes menu alone.
  22044  Builtin msvcr80 not sufficient for running WoW and SCII Beta, missing about 19 functions
  22082  ImgBurn hangs after attempting to drag-and-drop a folder onto itself in the disc layout editor
  22105  AutoCAD 2008: Buttons with images are black in Layer Properties Manager
  22112  X3 Terran Conflict: crashes after startup screen
  22142  Black face in SWGemu (Free Star Wars Galaxies)
  22145  Final Fantasy XI: Installing US PlayOnline Viewer is configured as EU version.
  22153  Pegasus Mail 4.52 closes when sending a message
  22154  steam + flash crashes?
  22202  Dragon Age: Origins - gameplay is very glitchy (mostly black screen)
  22226  [mono testcase] RegEnumValue succeeds when called with a deleted registry key
  22228  [mono testcase] Registry functions cannot handle very long value names
  22249  Paint.NET 3.36 installer cancellation results in raised .NET System.OverflowException
  22264  Total Commander: Button not drawn properly when the window is activated and the button was hidden
  22340  msvcrt.dll._setjmp unimplemented, needed for ioquake3 64-bit
  22347  Sonic R crashes when choosing a rendering mode
  22366  Call of Duty 4 is black in-game
  22374  Missing or vanishing program icons for various apps
  22390  Paint.NET 3.5.4 installer shows a corrupted image
  22400  Thief 2 crashing on start of 3d level apparently not because of movies
  22406  Star Wars DroidWorks crashes on exit
  22409  Dxdllreg.exe encountered a problem and closed
  22410  Age Of Empires III: Initialization failed
  22424  MS odbctest don't work wit unixodbc
  22441  DNSBench cannot save to file an image
  22449  CDBurnerXP Pro 3's program icon is displayed incorrectly
  22462  Trying to print without a printer installed causes an X11 error (BadCursor)
  22478  Major performance drop in King's Bounty games with shadows enabled
  22512  Bioshock: windows cursor is always visible on screen
  22523  Unreal Engine 1 Games fail at Startup
  22563  IW2:Edge of Chaos crashes on menu screen
  22582  Autocad 2008 Civil 3D install frozen

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

Changes since 1.1.43:

Alexandre Goujon (1):
      winex11: Use XkbKeycodeToKeysym when using XKB.

Alexandre Julliard (64):
      winex11: Move creation of an ARGB bitmap for icons to a separate function.
      winex11: Generate an alpha channel from the bitmask for icons that don't have one.
      winex11: Add the small icon to the NET_WM_ICON hint.
      notepad: Set the window class small icon.
      taskmgr: Set the window small icon.
      winemine: Set the window class small icon.
      winetest: Set the window small icon.
      winhlp32: Set the window class small icon for all classes.
      wordpad: Set the window small icon, and get rid of old icons.
      gdi32: Convert the driver list to a standard Wine list.
      winex11: Fix memory leaks in get_bitmap_argb.
      user32: Add driver entry points for cursor creation and destruction, and pass the cursor handle to SetCursor.
      winex11: Implement the entry points for creating and destroying cursors.
      winex11: Move creation of an empty cursor to a separate helper function.
      server: Fix structure padding for requests that have a reply.
      server: Return the current cursor when queuing a hardware message.
      winex11: Update the cursor from the thread input status instead of caching it per-thread in x11drv.
      user32: Remove the CURSORICON parameter in the SetCursor entry point.
      user32: Only call the driver when the cursor has actually changed.
      tools: Remove the deprecated wineprefixcreate script.
      configure: Default to /lib64 as libdir for 64-bit builds, and use plain /lib for 32-bit builds.
      wrc: Make the bitmap size checking more generic, and add support for V5 bitmaps.
      gdi32: Fix handling of bitmap header size for V4/V5 bitmaps.
      user32: Fix handling of bitmap header size for V4/V5 bitmaps.
      winex11: Fix handling of bitmap header size for V4/V5 bitmaps.
      comctl32: Fix handling of bitmap header size for V4/V5 bitmaps.
      winex11: Invert the icon mask only after the conversion to ARGB.
      winex11: Don't set a hint for the small icon if it has the same size as the large one.
      winex11: Flush the gdi display after processing the last event.
      winex11: Add missing X11 locking when setting the cursor.
      winex11: Add some tracing to AlphaBlend.
      winex11: Use a format with 8 bits of alpha for the AlphaBlend mask.
      configure: Don't warn about libhal if we can use an alternative.
      wined3d: Avoid a compiler warning on old gcc.
      ntdll: Make TAPE_GetStatus inline to avoid a unused function warning.
      user32: Only call the driver DestroyCursorIcon entry point for valid handles.
      winex11: Make the cursor window global instead of per-thread, and send it a message when the cursor changes.
      ntdll: Add support for saving/restoring CFA frame state.
      server: Store the prefix 32/64 architecture in the registry files.
      server: Use the prefix architecture instead of the server one to check for WoW processes.
      server: Check that the prefix type can support the client architecture.
      mmdevapi: Don't try to lookup functions if the library isn't found.
      shdocvw: Support setting an icon on the main iexplore window.
      shell32: Load the application icon for the control panel window.
      comctl32: Add support for alpha blending in ImageList_DrawIndirect.
      gdi32: Don't bother freeing graphics drivers.
      gdi32: Don't store the display driver in the global list to avoid the need for locking.
      gdi32: Add a global function to retrieve the display driver.
      shell32: Make use of the control panel icon.
      wined3d: Don't crash during initialization if the adapter doesn't have full GL info.
      winex11: Create a window of the appropriate visual to initialize GL info.
      libwine: Download Unicode data files from unicode.org as needed in cpmap.pl.
      libwine: Update the character tables to Unicode 5.2.
      libwine: Generate a table for BiDi character mirroring.
      libwine: Add support for generating l_intl.nls, based on a patch by Andrey Turkin.
      configure: Create a symlink from l_intl.nls in the build tree, and install it.
      wine.inf: Copy l_intl.nls to the system32 directory.
      user32: Return the icon depth instead of number of colors when loading from a .ico file.
      user32: Fix drawing of 1-bpp icons in DrawIconEx.
      user32: Use the correct rop when blitting an icon in DrawIconEx.
      user32: Make DrawIcon simply call DrawIconEx.
      shell32: Fix marshalling of 1-bpp systray icons.
      kernel32: Define GetProcessHeap as an assembler function on i386.
      kernel32: Add an x86_64 implementation for the TEB access functions.

Alistair Leslie-Hughes (5):
      msxml4: Register classes.
      msxml3: Register classes.
      urlmon: Strip forward and back slashes when using the file: protocol.
      mshtml: Implement IHTMLEventObj IDispatch functions.
      include: Add asptlb.idl.

Andrew Eikum (1):
      ole32: Only fail on missing Implemented Categories key if we actually have categories to check.

Andrew Nguyen (29):
      shell32/tests: Release the test desktop interface on all appropriate exit paths in ParseDisplayName tests.
      kernel32/tests: Remove a superfluous comment in the FormatMessage tests.
      kernel32: Remove superfluous heap reallocation calls in FormatMessageA/W.
      kernel32: Reject an insufficiently sized buffer in FormatMessageA/W.
      kernel32: Only check the buffer pointer in FormatMessageA if buffer allocation is requested.
      kernel32/tests: Add tests for buffer allocation in FormatMessage.
      kernel32: Consistify allocation behavior with FormatMessageA/W.
      kernel32: Separate format string parsing in FormatMessageW into a new function.
      kernel32: Separate format string parsing in FormatMessageA into a new function.
      kernel32: Transition FormatMessageA to the internal use of Unicode strings.
      kernel32: Unify the format_insert ANSI and Unicode helpers.
      kernel32: Unify the format_message ANSI and Unicode helpers.
      kernel32: Rename the load_message helper to reflect its sole handling of Unicode strings.
      kernel32: Fail if a format placeholder is present without a format specifier in FormatMessageA/W.
      kernel32: Remove leftover preprocessor undef directives in the FormatMessage implementation.
      kernel32: Improve flag error handling in FormatMessageA/W.
      kernel32: Correct output buffer behavior with empty input strings for FormatMessageA/W.
      kernel32: Handle some escape sequences with FORMAT_MESSAGE_IGNORE_INSERTS in FormatMessageA/W.
      kernel32/tests: Centralize the FormatMessageW skip detection.
      kernel32: Remove a superfluous function call in the format_insert helper.
      kernel32: Process CRLF escape sequences in normal insert sequence processing path in FormatMessageA/W.
      kernel32: Merge the insertion and non-insertion codepaths in the format_message helper together to share common functionality.
      kernel32/tests: Document a few FormatMessage tests which are broken on older Windows.
      kernel32: Reject a format string with insertions if no variadic arguments are passed to FormatMessageA/W.
      rundll32: Rename a few internal helpers for consistency.
      regsvr32: Continue processing DLL list if an export is not found for a DLL.
      rundll32: Check more heap allocation failure paths for consistency.
      rundll32: Convert rundll32 to Unicode.
      rundll32: Recognize entry points passed as ordinal numbers.

André Hentschel (15):
      shlwapi: Fix comment typo.
      shell32: Update German translation.
      ntdll: Add SP2 for Vista.
      winemaker: Allow compiling 32-bit targets to be compiled on 64-bit hosts.
      imm32: Add tests for ImmAssociateContextEx.
      shell32: Return boolean values.
      imm32: Fix ImmAssociateContextEx parameter handling.
      imm32: Fix tests to apply to Vista+ as it does the same as Wine.
      rsaenh: Fix a testfailure on Win7.
      include: Add some error codes for rsaenh.
      rsaenh: Fix a testfailure which occures on some Win7 setups.
      version: Fix typo in comment.
      include: Fix error define in winerror.h.
      winecfg: Fix builtin_only list.
      kernel32: Double the alarm timeout to prevent a failed test.

Aric Stewart (8):
      usp10: Improve Hebrew support in ScriptItemize.
      usp10: Improve support for Syriac in ScriptItemize.
      usp10/test: Restructure test_ScriptItemize to make the test easier to manage and expand.
      usp10: Update ScriptItemize to use the baselevel of a unified run.
      shell32: Handle NULL pName in ShellLink fnSetDescription.
      usp10: Fix ScriptGetCMap handling of unsupported glyphs.
      usp10: ScriptTextOut reorders glyphs that are RTL if they have been processed with fLogicalOrder in previous calls.
      usp10: Implement mirroring for bidi support.

Aurimas Fišeras (2):
      shell32: Update Lithuanian translation.
      wine.desktop: Add Lithuanian translation.

Austin English (4):
      winedump: Output Makefile.in the right way for the new build system.
      msvcrt/tests: fix a couple typos.
      msvcrt/tests: Add more tests for setlocale().
      msvcrt: Fix tests for Windows ME.

Charles Davis (1):
      ntdll: Implement IOCTL_SCSI_PASS_THROUGH(_DIRECT) on Mac OS.

Damjan Jovanovic (10):
      winemenubuilder: Store menu paths in Unicode.
      wine.desktop: Add Serbian translation.
      winemenubuilder: Read the registry in the unix codepage when cleaning up menus.
      mshta: wWinMain takes LPWSTR not LPSTR.
      winemenubuilder: Use a unicode WinMain.
      winemenubuilder: Use only widechar functions when dealing with registered associations.
      wine.desktop: Add hr and sr@latin translations.
      winex11.drv: Use unicode filenames for WM_DROPFILES.
      winemenubuilder: Make desktop files executable.
      winemenubuilder: Launch .lnk files directly from menus.

Davide Pizzetti (7):
      progman: Italian translation update.
      net: Italian translation update.
      wineboot: Italian translation update.
      winemine: Italian translation update.
      notepad: Italian translation update.
      winedbg: Italian translation update.
      wordpad: Italian translation update.

Detlef Riekenberg (22):
      shdocvw: Implement SHRestricted2A.
      shlwapi/tests: Add initial test for SHGetThreadRef.
      shlwapi/tests: Add tests for SHSetThreadRef.
      shlwapi: Fix broken NULL checks (with tests).
      shlwapi: Implement SHCreateThreadRef.
      shlwapi/tests: Add tests for SHCreateThreadRef.
      msiexec: Recognize /uninstall as alias for /x [resend].
      urlmon/tests: Skip some sec_mgr tests on IE 4.0.
      urlmon/tests: Skip some tests on IE 4.0.
      urlmon/tests: Skip more tests on IE 4.0.
      urlmon/tests: Skip even more tests on IE 4.0.
      urlmon/tests: Skip protocol tests on IE 4.0.
      urlmon/tests: CreateAsyncBindCtxEx is not present on IE 4.0.
      msvcr70/71: Sync exports to msvcrt.
      dinput: Add the riid for an unsupported interface to a FIXME.
      control: Convert application to Unicode.
      msvcr80: Sync exports to current msvcrt exports.
      msvcr90: Sync exports to current msvcrt exports.
      msvcr70: Sync exports to current msvcrt.
      msvcrt: Fix wrong msvcr90 in comments.
      msvcr100: Add VS2010 C/C++ runtime library with forwards to msvcrt.
      msiexec: Use resource in msi for a help dialog to allow translation.

Eric Pouech (7):
      winedbg: Correctly display whether we're in 32 vs 64 bit code.
      winedbg: For stack info command, display information in 'a' format (instead of 'x') to get word size machine (instead of forcing 32bit).
      winegcc: On x86-64, don't define twice the fastcall macros.
      winegcc: When specifying -m32, force i386 cpu when compiling on x86_64 boxes.
      winedbg: Don't assert on some lvalue's write conditions.
      server: Fix write_process_memory on Wow64.
      winedbg: Properly fix the previous patch about gcc 2.95 not supporting printf attribute on function pointers.

Frédéric Delanoy (2):
      shell32: Update French translation.
      tools: Fix formatting errors in winemaker manpage.

Gerald Pfeifer (82):
      comctl32: Remove unused scrollInfo from LISTVIEW_MouseWheel.
      winhlp32: Remove not really used id from WINHELP_IndexDlgProc.
      wordpad: Remove variable hwndPreview which is not really used from init_preview.
      taskmgr: Remove two variables which are not really used from ApplicationPageCompareFunc.
      wininet: Remove variable len which is not really used from CommitUrlCacheEntryInternal.
      wined3d: Remove variable dlc_tmp which is not really used from shader_arb_generate_pshader.
      taskmgr: Remove variable pnmhdr which is not really used from ProcessPageOnNotify.
      oleaut32: Remove two variables that are not really used; corresponding checks are disabled.
      user32: Remove variable mask which is not really used from check_alpha_draw.
      localspl: Remove variable res which is not really used from test_XcvClosePort.
      fnt2bdf: Remove variable dpi which is not really used from dump_bdf_hdr.
      widl: Remove variable size which is not really used from print_phase_basetype.
      comctl32: Remove variable old which is not really used from DATETIME_LButtonDown.
      comctl32: Remove variable iRet which is not really used from test_EnumMRUList.
      d3d9: Remove variable hr which is not really used from resource_test_cleanup.
      wpp: Remove variable dbgtext which is not really used frommake_number.
      winedump: Remove variable strtable which is not really used from dump_symbol_table.
      winmm: Remove variable devID which is not really used from MMDRV_Message.
      sfnt2fnt: Remove variable descent which is not really used from fill_fontinfo.
      wordpad: Remove variable i which is not really used from OnCommand.
      rpcrt4: Remove variable size which is not really used from NdrComplexArrayUnmarshall.
      d3drm: Remove two variables which are not really used from IDirect3DRMMeshBuilderImpl_Load.
      winex11: Remove variable datasize which is not really used from X11DRV_CLIPBOARD_ExportTextHtml.
      winex11: Remove variable size which is not really used from X11DRV_CLIPBOARD_SerializeMetafile.
      d3dx9_36: Remove variable nul which is not really used from D3DXVector4Test.
      gdi32: Remove variable retb which is not really used from test_closefigure.
      msvidc32: Remove variable bit_per_pixel which is not really used from CRAM_Decompress and CRAM_DecompressEx.
      quartz: Fix return value for StdMediaSample2_GetTime in error cases.
      advapi32: Remove variable ret which is not really used from LsaLookupNames2.
      winmm: Remove variables duration and samples which are not really used from check_position.
      winecfg: Remove variable cUnixPathLen which is not really used from apply_shell_folder_changes.
      ole32: Remove variable res which is not really used from CompositeMonikerImpl_Reduce.
      quartz: Remove variable keyframe which is not really used from AVISplitter_next_request.
      cmd: Remove variable doRecursive which is not really used from WCMD_for.
      cmd: Remove variable argsProcessed which is not really used from WCMD_directory.
      progman: Remove unused variable from and fix formatting of DIALOG_Execute.
      regedit: Remove variable hdc which is not really used from OnPaint.
      regedit: Remove variable ExportKeyPath which is not really used from ExportRegistryFile.
      taskmgr: Remove variable CommitChargeLimit which is not really used from Graph_DrawMemUsageHistoryGraph.
      taskmgr: Remove unused variable PageSize which is not really used from PerfDataGetPhysicalMemorySystemCacheK.
      taskmgr: Shed one parameter and one local variable from ProcessPageOnNotify.
      winhlp32: Remove a hunk of dead code from HLPFILE_BrowsePage.
      riched20: Remove variable yprev which is not really used from ME_ArrowPageDown.
      winhlp32: Remove variable keyDelta which is not really used from WINHELP_MainWndProc.
      wineps.drv: Fix return value in PSDRV_SetBrush.
      msi: Fix return value for ITERATE_RemoveFiles (in the error case).
      msi: Remove variable product_code which is not really used from MSI_ApplyPatchW.
      mshtml: Remove variable doc which is not really used from process_timer.
      winex11: Remove variable bits which is not really used from X11DRV_DIB_GetImageBits_32.
      wintrust/tests: Remove variable myARGC which is not really used from test_cdf_parsing.
      riched20: Remove variable changed which is not really used from ME_PrepareParagraphForWrapping.
      ole32: Fix return value of DefaultHandler_SetClientSite.
      ole32: Fix return value for CoRevokeMallocSpy.
      comctl32: Remove variable old_focused which is not really used from MONTHCAL_Mouse.
      widl: Simplify write_struct_tfs and remove an unused variable.
      gdi32: Remove variable x which is not really used from testJustification.
      mshtml/tests: Fix return value of ActiveScript_SetScriptState.
      ntoskrnl.exe: Remove variable retX which is not really used from emulate_instruction.
      oleaut32/tests: Remove variable expectedhres which is not really used from test_VarDiv.
      winmm/tests: Remove variable start which is not really used from wave_out_test_deviceOut.
      riched20: Remove variable di which is not really used from ME_InsertEndRowFromCursor.
      comctl32/tests: Remove variable hwndheader which is not really used from test_items.
      gdiplus/tests: Remove variable path which is not really used from test_linei.
      comctl32/tests: Remove variables cx and cy which are not really used from test_approximate_viewrect.
      jscript: Remove variable length which is not really used from JSGlobal_parseFloat.
      msacm32/tests: Simplify check_count and msacm_tests.
      oleaut32: Remove variable iLengthScanLineColor which is not really used from serializeIcon.
      crypt32/tests: Tighten tests in testPortPublicKeyInfo.
      mshtml: Fix return value for HTMLBodyElement_get_text.
      user32/tests: Destroy the window we created at the end of wait_idle_thread.
      wineconsole: Remove variable font_idx which is not really used from WCUSER_FontPreviewProc.
      user32/tests: Remove variable old_left_margin which is not really used from test_margins.
      comctl32: Remove variable scrollRange which is not really used from PAGER_NCCalcSize.
      crypt32/tests: Remove variable entry which is not really used from test_decodeCRLToBeSigned.
      winex11.drv: Remove variable bits which is not really used from X11DRV_DIB_GetImageBits_4.
      ntdll/tests: Remove variable len which is not really used from create_file_test.
      cryptdlg: Remove variable headingSep which is not really used from CRYPT_FormatCPS.
      cmd: Remove variable useinput which is not really used from WCMD_more.
      taskmgr: Remove variable pnmv which is not really used from ProcessPageOnNotify.
      wrc: Remove variable type which is not really used from rsrcid_to_token.
      kernel32/tests: Remove variable len which is not really used from test_CommandLine.
      wined3d: Fix the handling of the blue channel inIWineGDISurfaceImpl_SaveSnapshot. (take 2).

Hans Leidekker (39):
      msi: Remove unused and redundant name field from STORAGE structure.
      msi: Make the name parameter of create_storage and create_stream constant.
      msi: Remove the string index parameter from msi_addstringW.
      msi: Add beginnings of a test module that concentrates on patches.
      msi: Don't assume unversioned files are present.
      msi: Handle MSIDBOPEN_PATCHFILE properly in MsiOpenDatabase.
      msi: Add a test to show that MsiOpenPackage must apply any existing patches.
      msi: Make msi_get_property_int and friends take a pointer to a database instead of a package.
      msi: Make MSI_SetPropertyW take a pointer to a database instead of a package.
      msi: Rename MSI_GetPropertyW and MSI_SetPropertyW.
      msi: Try to apply a patch to each product it is targeted for.
      winhttp: Support setting and querying credentials on request handles.
      winhttp: Add support for basic authentication.
      winhttp: Add tests for basic authentication.
      winhttp/tests: Use the right handle type.
      winhttp/tests: Avoid test failures caused by broken DNS server configurations.
      kernel32/tests: Fix test failures on certain versions of Windows.
      msi/tests: Return INVALID_FILE_SIZE from get_pf_file_size if the file can't be opened.
      msi: Only set the property in the Reinstall event.
      msi/tests: Use a unique product code when testing MsiConfigureFeature parameter validation.
      msi: Always evaluate component conditions.
      msi: Move all file comparisons to CostFinalize.
      msi: Fix some test failures on Windows.
      msi: Store a copy of the file extension in the MSIMIME structure.
      msi: Test the contents of some of the system tables before and after patching.
      msi: Make sure to only open a patch database in msi_apply_patch_package.
      msi: Simplify msi_set_context.
      msi: Support multiple patches per package.
      programs: Add a stubbed sc.exe.
      sc: Implement the create and delete commands.
      sc: Implement the description and failure commands.
      sc: Implement the start and stop commands.
      msi: Make a local copy of patch packages.
      msi: Add some tests for patch registration.
      msi: Handle non-null product code in MSI_ApplyPatchW.
      msi: Register more patch details.
      wtsapi32: Add a stub implementation of WTSQueryUserToken.
      msi: Forward MsiDetermineApplicablePatchesA to MsiDetermineApplicablePatchesW.
      msi: Apply registered patches in MsiOpenPackage.

Henri Verbeet (65):
      wined3d: Get rid of "myDevice".
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_load_ds_location().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_modify_ds_location().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_is_offscreen().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_compatible_renderbuffer().
      wined3d: Store render targets as IWineD3DSurfaceImpl pointers in the device.
      wined3d: Store the auto depth/stencil surface as an IWineD3DSurfaceImpl pointer in the device.
      wined3d: Store the depth/stencil surface as an IWineD3DSurfaceImpl pointer in the device.
      wined3d: Get rid of a useless local variable in IWineD3DDeviceImpl_SetDepthStencilSurface().
      wined3d: Immediately return on redundant changes in IWineD3DDeviceImpl_SetDepthStencilSurface().
      wined3d: Fix some more misspellings of "device".
      wined3d: Move location loading and modification together in IWineD3DDeviceImpl_ClearSurface().
      wined3d: Avoid some unnecessary invalidations of the the onscreen depth buffer.
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_get_gl_buffer().
      wined3d: Simply pass implementation pointers to stretch_rect_fbo().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to FindContext().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_setup_target().
      wined3d: Store the current render target as an IWineD3DSurfaceImpl pointer in the context.
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_acquire().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to color_fill_fbo().
      wined3d: Store texture sub-resources in IWineD3DBaseTextureClass.
      wined3d: Make sure all texture levels are allocated in surface_prepare_texture().
      wined3d: Introduce basetexture_get_sub_resource() to simplify retrieving texture sub-resources.
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to fb_copy_to_texture_direct().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to fb_copy_to_texture_hwstretch().
      wined3d: Kill the now unused MAX_MIP_LEVELS.
      wined3d: Add a missing newline to a TRACE in IWineD3DDeviceImpl_UpdateSurface().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_internal_preload().
      wined3d: Simply pass IWineD3DSurfaceImpl pointers to IWineD3DSurfaceImpl_BltOverride().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_force_reload().
      wined3d: Store the front buffer surface as an IWineD3DSurfaceImpl pointer in the swapchain.
      wined3d: Store back buffer surfaces as IWineD3DSurfaceImpl pointers in the swapchain.
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_texture_name().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_texture_target().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_add_dirty_rect().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_init_sysmem().
      wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_release_client_storage().
      wined3d: Introduce device_get_draw_rect() to calculate the effective viewport.
      wined3d: Make "clear_rect" a RECT in IWineD3DDeviceImpl_ClearSurface().
      wined3d: Check if the depth/stencil surface has any valid location at the start of surface_load_ds_location().
      wined3d: Avoid some needless depth buffer copies.
      wined3d: Store the bumpmap format capability in the format table.
      wined3d: Store the sRGB read format capability in the format table.
      wined3d: Store the sRGB write format capability in the format table.
      wined3d: Store the VTF format capability in the format table.
      d3d9/tests: Fix test_cube_wrap() for different texture filtering schemes.
      wined3d: Make sure all fields of the fragment pipe caps are always initialized.
      wined3d: Remove some unused fields from the shader backend caps.
      wined3d: Make sure all fields of the shader backend caps are always initialized.
      wined3d: Allow the ARB shader backend to work with GL implementations with low amounts of native parameters.
      wined3d: Split context_apply_state() into separate functions for each usage.
      wined3d: Separate context acquisition and state application.
      wined3d: Remove a redundant check from prepare_ds_clear().
      d3d9/tests: Allow D3DFMT_A2R10G10B10 as supported adapter mode.
      wined3d: Attach the surfaces from the fbo_entry instead of the ones from the device.
      wined3d: Move draw buffer setup code out of context_apply_fbo_entry().
      wined3d: Explicitly pass the FBO target to the FBO management functions.
      wined3d: Explicitly pass the render target and depth/stencil surfaces to the FBO management functions.
      wined3d: Setup the FBO for the correct target in context_apply_clear_state().
      wined3d: Use context_apply_clear_state() in color_fill_fbo().
      wined3d: Use the FBO cache in context_apply_blit_state().
      wined3d: Use the FBO cache in stretch_rect_fbo().
      wined3d: Use the FBO cache in swapchain_blit().
      wined3d: Reorganize IWineD3DImpl_CheckDeviceFormat() a bit.
      wined3d: Remove the unused device type parameter to some format capability checking functions.

Huw Davies (9):
      wineps.drv: Remove the unscaled font hack and read the outline directly from the font file.
      wineps.drv: Make the rectangle an optional parameter to get_bbox().
      wineps.drv: Defer accessing the font metrics until we really need them.
      wineps.drv: Calculate the font size directly from the logfont.
      wineps.drv: Add world transform support for fonts.
      wineps.drv: MM_ISOTROPIC and MM_ANISOTROPIC should also have inverted y-transforms (even if the page -> device mapping results in a negative y-scale).
      gdi32: Fix ExtTextOutA -> W forwarding when ETO_PDY is set.
      comctl32: Silence a few compiler warnings.
      gdi32: Add support for ETO_PDY and improve world transform support.

Hwang YunSong(황윤성) (1):
      wineboot: Update Korean translation.

Ilya Shpigor (1):
      wineps.drv: Start a new current path in PSDRV_PolyPolygon.

Jacek Caban (20):
      mshtml: Limit message length to 2000 in IHTMLWindow2::alert.
      mshtml: Use URI with stripped "wine:" part in NewURI call.
      mshtml: Use NS_CStringContainerInit2 in nsACString_Init.
      shldisp.idl: Added IAsyncOperation declaration.
      mshtml: Don't access url in translate_url after freeing it.
      shdocvw: Fixed typo in async_doc_navigate.
      mshtml: Added IHTMLSelectElement::put_length implementation.
      mshtml: Added IHTMLSelectElement::get_options implementation.
      mshtml: Added support for accessing select options by index.
      shdocvw: Set IE version to IE8.
      urlmon: Set BINF_NEEDFILE flag for synchronous binding of builtin protocols.
      urlmon: Use cache file to read in synchronous binding.
      urlmon: Added reading from cache file tests.
      mshtml: Fixed IObjectSafety failure handling.
      mshtml: Added IHTMLFormElement::get_length implementation.
      mshtml: Added IHTMLDocument2::clear implementation.
      mshtml: Added beginning support for oncontextmenu event.
      mshtml: Added IHTMLInputElement::put_type implementation.
      mshtml: Added IHTMLInputElement::get_type tests.
      mshtml: Added IHTMLInputElement::put_name implementation.

Jaime Rave (2):
      user32: Draw the rect edges from left to right and top to bottom.
      wineboot: Update Spanish translation.

Jeff Latimer (3):
      usp10/tests: Add tests for CR and LF chars and remove some trailing white space.
      usp10: Check that there are sufficient script_items before setting the last pointer.
      usp10/tests: Remove some redundant tests and fully test bidi flag setting.

Jerome Leclanche (1):
      quartz: Properly return E_POINTER when ppFilters is null.

Jim Cameron (1):
      winedbg: Make disassembler properly print EMX and EXMM type operands.

Joel Holdsworth (18):
      wcmd: Replaced program icon with a Tango compliant icon.
      winemine: Replaced program icon with a Tango compliant icon.
      winetest: Replaced program icon with a Tango compliant icon.
      winefile: Replaced program icon with a Tango compliant icon.
      regedit: Replaced progam icon with a Tango compliant icon.
      winhlp32: Replaced progam icon with a Tango compliant icon.
      winecfg: Installed a Tango compliant application icon.
      taskmgr: Show a 48x48 icon in the about box.
      tools: Fixed buildicon to use the path of rsvg provided in the environment variable.
      tools: Remove fallback render rule.
      tools: Fixed buildicon to support rectangular icons.
      comdlg32: Replaced collate icons with Tango compliant icons.
      regedit: Fixed flaws in the icon.
      makefiles: Added a rule for building BMPs from SVGs.
      credui: Replaced banner with a tango compliant image.
      comdlg32: Replaced pd32_portrait.ico and pd32_landscape.ico with Tango compliant icons.
      user32: Fixed some minor glitches in oic_winlogo.ico.
      shell32: Comitted a Tango icon for the control panel.

Johan Gill (1):
      ddraw: Do not restore the display mode from inside SetCooperativeLevel.

Jon Parshall (1):
      fonts: 8-pixel strikes for Tahoma font.

Jörg Höhle (3):
      winex11: Unify German keyboard mapping.
      wineoss: Supply FFFFFFFF for midiOutGetVolume, not garbage.
      wineoss: MOD_MIDIPORT has 0 voices and notes and FFFF ChannelMask.

Kai Blin (1):
      secur32: Use NTLM2 instead of NTLMv2.

Kirill Smelkov (4):
      wrc: Use INCLUDEDIR when compiling.
      wrc: Drop hardcoded INCLUDEDIR.
      winebuild/winegcc: Allow building .dll.so without .spec file.
      winegcc: Do use DSO full name for .so arguments.

Maarten Lankhorst (32):
      ntdll: Clear alignment flag in exception handlers.
      mmdevapi: Improve EndpointNotificationCallback stubs.
      mmdevapi: Add initial audioclient stub.
      mmdevapi: Set PKEY_AudioEngine_DeviceFormat for capture too.
      mmdevapi: Implement some methods in audioclient.
      mmdevapi: Implement audio formats.
      mmdevapi: Add support for IAudioRenderClient.
      mmdevapi: Add audio capture code.
      mmdevapi: Add support for the clock interface.
      mmdevapi: Add support for IAudioSessionControl2.
      mmdevapi: Add AudioSimpleVolume stub.
      mmdevapi: Fix small capture bugs.
      winealsa.drv: Clean up DriverProc.
      wineoss.drv: Clean up DriverProc.
      winenas.drv: Clean up DriverProc.
      winenas.drv: Move opening wave device to audio.c.
      wineoss.drv: Move opening devices to their respective xxxMessage functions.
      winejack.drv: Clean up loading.
      wineesd.drv: Clean up loading.
      mmdevapi: Add stub for IAudioEndpointVolume.
      includes: Add some devpkey definitions.
      mmdevapi: Add some DEVPKEY's to property tests.
      mmdevapi: Fix IsFormatSupported and initialization.
      mmdevapi: Silence a fixme when it's harmless.
      winmm: Fix handle leak in timer tests.
      mmdevapi: Add a warning if openal is not available.
      include: Add float functions to msvcrt.
      winealsa.drv: Remove dlopen call.
      winealsa.drv: Clean up initialisation.
      msvcrt: Add float functions based on their double versions.
      mmdevapi: Try to detect openal 1.11, and do not blacklist pulseaudio on it.
      mmdevapi: Add support for openal disconnected extension.

Matteo Bruni (6):
      d3dx9: Add swizzle and writemask support to the shader assembler.
      d3dx9: Add instruction modifiers (sm 2.0+) support to the shader assembler.
      d3dx9: Add source register modifiers (sm 2+) support to the shader assembler.
      d3dx9: Support all the remaining register types in the shader assembler.
      d3dx9: Add relative addressing support to the shader assembler.
      d3dx9: Support some more vs_3_0 instructions in the shader assembler.

Michael Stefaniuc (21):
      windowscodecs: Unlock not lock again when leaving the function (Smatch).
      user32: Avoid using HIWORD on a string pointer.
      shell32: Update the Romanian translation.
      wineboot: Update the Romanian translation.
      wineconsole: Always show an ASCII string in the font test.
      ntdll/tests: Avoid using the 'long' types.
      kernel32: Update the Dutch (Suriname) NLS file.
      kernel32: Add some missing LOCALE_SNATIVECURRNAME constants.
      kernel32: The Isle of Man uses the Manx Pound.
      wineesd.drv: Add the missing calls to ESD_WaveClose/ESD_WaveInit.
      progman: Use LANGUAGE as a global setting and not per resource.
      wineconsole: Use the explicit W-form of the registry functions.
      wineconsole: Use the explicit W types/functions in user.c.
      wineconsole: Use the explicit W types/functions in dialog.c.
      wineconsole: Switch the rest to use the explicit W-forms.
      oleview: Replace some SendMessage wrappers with the real thing.
      oleview: Use the explicit W types/functions in tree.c.
      oleview: Use the explicit W types/functions in typelib.c.
      oleview: Use the explicit W types/functions in oleview.c.
      oleview: Use the explicit W types/functions in details.c.
      oleview: Switch the rest to use the explicit W-types/functions.

Nikolay Sivov (32):
      shell32: Add ::GetDefaultColumnState() and partial ::GetDetailsOf() for printers folder.
      shell32: Use shared code to return column details from IShellFolder2::GetDetailsOf().
      shell32: Add ::Initialize() and ::GetCurFolder() for printers folder IPersistFolder2 interface.
      shell32: Add printers CLSID to test, clean up a bit.
      shell32: Load shell folder column names as A/W strings depending on 9x/NT selector.
      shell32: Fallback to IShellDetails while filling shell view columns if IShellFolder2 is missed.
      shell32: Move IShellIcon definition to idl source.
      shell32/tests: Fix a test failure on W2K (unimplemented method).
      comctl32/listview: Exit early on LVM_CREATEDRAGIMAGE if null pointer passed for a point.
      odbc32: Don't crash on null pointers while TRACE enabled.
      comctl32/listview: Properly handle subitem hittesting outside of horizontal columns bounds.
      shell32/shlview: Fix a typo in null pointer test condition, should be IShellFolder2 instead.
      comctl32/listview: Add callback subitem on column insertion.
      comctl32/listview: Remove forward declaration and unused parameter from edit box creation helper.
      user32/tests: Add some GetDlgItem() tests regarding children windows Z-order.
      comctl32/listview: Don't change Z-order of edit window while resizing edit box.
      shell32/shlview: Try to use IShellDetails to respond on notifications if IShellFolder2 isn't available.
      shell32/shlview: Remove redundant message sent on every iteration, fix a helper interface leak.
      comctl32/listview: Rework item selection with letter keys, fix some glitches.
      t2embed: Add TTIsEmbeddingEnabled stub.
      ole32: Use -W versions of window/message calls.
      ole32: Avoid uninitialized value to be potentialy passed to UnhookWindowsHookEx.
      ole32: Use LoadCursorW instead of -A version.
      ole32/tests: Move tests to a separate function.
      ole32/ole2: Fix simple parameter handling for DoDragDrop().
      ole32/tests: Additional test for RevokeDragDrop with destroyed window.
      ole32/ole2: After IDropTarget::DragEnter() failure target doesn't count as valid.
      ole32/ole2: If no effect action selected use ::DragLeave() instead of ::Drop().
      rasdlg: Add RasEntryDlgW stub.
      ole32/marshal: Compare with S_OK instead of keeping in mind that it's zero.
      comctl32/rebar: Try to center child rectangle only if cyChild height is not zero.
      ole32/ole2: Use W calls for registry access.

Octavian Voicu (4):
      msi: Fix crash when calling MsiGetActiveDatabase with invalid remote handle.
      msi: Use standard window class for combo control and add error checking.
      msi: Fill combo control with items from database.
      msi: Sync combo control value with associated property.

Paul Vriens (9):
      shell32: Update Dutch translation.
      wineboot: Update Dutch translation.
      wordpad: Update/fix Dutch translation.
      mapi32: Add Dutch translation.
      jscript: Update Dutch translation.
      wineconsole: Update Dutch translation.
      winmm: Update Dutch translation.
      msi: Update Dutch translation.
      user32/tests: Run the tests again on Win95.

Piotr Caban (53):
      msvcrt: Format strings according to specified locale in pf_vsnprintf.
      msvcrt: Add parameters to mimic *_s function behaviour in pf_vsnprintf.
      msvcrt: Added _vsnprintf* implementation.
      msvcrt: Added _vsnwprintf* implementation.
      msvcrt: Added implementations of _vswprintf* functions.
      msvcrt: Fix multiple locales parsing in _create_locale.
      msvcrt: Added implementation of __crtGetStringTypeW.
      msvcrt/tests: Added setlocale tests.
      msvcrt/tests: Added __crtGetStringTypeW tests.
      msvcrt: Return correct strings in setlocale.
      msvcrt: Added fopen_s implementation.
      msvcrt: Added _wfopen_s implementation.
      msvcrt: Added swprintf_s implementation.
      msvcrt: Added strncpy_s implementation.
      msvcrt: Added _get_heap_handle implementation.
      msvcrt: Added _strtod_l implementation.
      msvcrt: Add support for locales in scanf helper functions.
      msvcrt: Added _fscanf_l implementation.
      msvcrt: Added _scanf_l implementation.
      msvcrt: Added _fwscanf_l implementation.
      msvcrt: Added _wscanf_l implementation.
      msvcrt: Added _sscanf_l implementation.
      msvcrt: Added _swscanf_l implementation.
      msvcrt: Added _cscanf_l implementation.
      msvcrt: Added support for secure functions to scanf helper functions.
      msvcrt: Added fscanf_s(_l) implementation.
      msvcrt: Added _scanf_s(_l) implementation.
      msvcrt: Added _fwscanf_s(_l) implementation.
      msvcrt: Added _wscanf_s(_l) implementation.
      msvcrt: Added _sscanf_s(_l) implementation.
      msvcrt: Added _swscanf_s(_l) implementation.
      msvcrt: Added _cscanf_s(_l) implementation.
      msvcrt: Added _cwscanf* implementation.
      msvcrt/tests: Added sscanf_s tests.
      msvcr90: Added _recalloc implementation.
      msvcrt: Added btowc implementation.
      msvcrt: Change strtod_l implementation.
      msvcrt: Added wcstod_l implementation.
      msvcrt: Use wcstod_l/strtod_l in other functions that parses doubles.
      msvcrt: Fix debug message in scanf.
      msvcrt: Added strtok_s implementation.
      msvcrt: Added _mkgmtime implementation.
      msvcrt: Added _wcstoi64 and _wcstoui64 implementation.
      msvcrt: Added wcstombs_s implementation.
      urlmon: Fixed synchronous binding to file.
      msvcrt: Added _get_osplatform implementation.
      msvcrt: Added ___mb_cur_max_l_func implementation.
      msvcrt: Added _ui64toa_s implementation.
      msvcrt: Added _mbstrlen_l implementation.
      msvcrt: Added mbstowcs(_s_l) implementation.
      msvcrt: Fixed wcstombs(_s_l) implementation.
      msvcrt: Added mbstowcs and wcstombs tests.
      msvcrt: Sync msvcr* dlls.

Rico Schüller (5):
      ddraw: Change return to break in PixelFormat_WineD3DtoDD().
      d3d10: Parse semantic in parse_fx10_local_variable().
      d3d10: Implement ID3D10Effect::GetVariableBySemantic().
      d3d10: Add argument check in ID3D10Effect::GetVariableByName().
      d3d10/tests: Add ID3D10Effect::GetVariableBy*() test.

Ričardas Barkauskas (1):
      ddraw: Fix missing D3D misc caps.

Roderick Colenbrander (4):
      wgl: Ignore fbconfigs which are window drawable but which lack a visual.
      wgl: Print the fbconfig fmt_id in ConvertPixelFormatWGLtoGLX instead of the meaningless pointer.
      wgl: Improve wglDeleteContext threading behavior.
      wgl: Make context not current before deleting it.

Scott Ritchie (1):
      wine.desktop: Add Icon=wine to support systems with icon themes.

Stefan Dösinger (2):
      wined3d: Don't grab the implicit depth stencil format in the wrong place.
      wined3d: Fall back to other depth stencil formats if D24S8 isn't supported.

Sven Baars (9):
      msi: Fix Dutch translation.
      comdlg32: Update Dutch translation.
      appwiz.cpl: Fix Dutch translation.
      avifil32: Fix Dutch translation.
      comctl32: Fix Dutch translation.
      comdlg32: Fix some alignment issues in the Dutch translation.
      credui: Fix Dutch translation.
      gphoto2.ds: Fix Dutch translation and alignment.
      mshtml: Update Dutch translation.

Tony Wasserka (2):
      d3dx9: Add a stubbed D3DXDeclaratorFromFVF.
      d3dx9: Add tests for D3DXDeclaratorFromFVF.

Vincent Pelletier (1):
      ddraw: Fix discrepancy in alpha mask for WINED3DFMT_B2G3R3A8_UNORM.

Vincent Povirk (21):
      gdiplus: Fix the non-trivial case in color_over.
      gdiplus: Prevent integer overflows when rounding text bounds.
      gdiplus: Use ddb's instead of dib's to create texture brushes.
      user32: Focus editboxes when the context menu is opened.
      gdiplus: Add test for GdipCreateBitmapFromGdiDib.
      gdiplus: Handle more cases in GdipCreateBitmapFromGdiDib.
      windowscodecs: Implement IWICStream_InitializeFromFilename.
      windowscodecs: Implement IWICImagingFactory_CreateDecoderFromFilename.
      windowscodecs: Implement IWICImagingFactory_CreateFormatConverter.
      include: Add definitions for IWICBitmapFlipRotator.
      windowscodecs: Add a stub implementation of IWICBitmapFlipRotator.
      windowscodecs: Implement IWICBitmapFlipRotator_Initialize.
      windowscodecs: Implement IWICBitmapFlipRotator_GetSize.
      windowscodecs: Partially implement IWICBitmapFlipRotator_CopyPixels.
      ole32: Remove some assumptions about the internals of BlockChainStream.
      ole32: Store the location of all blocks in a big block chain in memory.
      ole32: Rewrite transacted storage to be more lazy.
      ole32: Always move unmodified streams instead of copying on commit.
      ole32: Use the cached information in BlockChainStream_GetCount.
      ole32: Fix reads past the end of streams.
      windowscodecs: Use the BITMAPINFOHEADER structure to get icon bitcount.

Wolfram Sang (1):
      user32: Ignore reserved bytes in BMP fileheader.

Yann Droneaud (1):
      include: Rewrote some extern inline to static inline.

--
Alexandre Julliard
julliard@winehq.org
