The Wine development release 1.2-rc1 is now available.

This is the first release candidate for Wine 1.2. It marks the
beginning of the code freeze period. Please give this release a good
testing to help us make 1.2 as good as possible.

What's new in this release (see below for details):
  - Many new toolbar icons.
  - Support for alpha blending in image lists.
  - Much more complete shader assembler.
  - Support for Arabic font shaping and joining.
  - A number of fixes for video rendering.
  - Font antialiasing configuration through fontconfig.
  - Improved handling of desktop link files.
  - Various bug fixes.

The source is available from the following locations:

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

   4654  ebasePro 2.12 doesn't start properly--missing plugin
   4805  Direct music loader release
   5616  Wanted: testing framework for bundled Winelib programs
   6341  WEB.DE Messenger crashes
   6533  Type mismatch 13 Error shows up in a VB-App.
   7594  Wine window scrolling is broken
   7797  Knight Rider runs extremely slowly
   7950  DirectX strange render window cutoff in Candytron both Party and Final version
   8287  Custom toolbar skin makes Irfan View 4.00 crash at start up
   9263  Guild Wars terribly slow
   9958  OleLoadPicturePath() should initialize COM apartment on its own if not previously done.
  10583  Fonts: Subpixel hinting, No RGB or BGR
  11892  GdipCreateBitmapFromFile & GdipCreateBitmapFromStream give upside down bitmap
  11896  Civilization4.exe crashes because of unimplemented functions in msvcp71
  12590  Yahoo widget engine 4.5, blank box, not being able to do anything
  12869  Rollcage Stage II demo crashes
  13278  Qtracker crashes
  13579  Adobe Acrobat Standard 7 -- using menus on first startup causes X to freeze
  14079  Dungeon Siege installation impossible
  14195  EINTR in WS_select
  14262  Wordview bullet in doc is not the same
  14710  OleLoadPicturePath loads image in windows but not in wine, could cause access violation in some circumstances
  14861  SetDIBits crashes with overlapping src/dst rectangles on the same bitmap
  14891  Bitmaps with offset bits do not display correctly
  15329  Unable to install Sony Picture Utility, Failed to load DLL Localesetting
  15928  EasyPlot doesn't work
  15969  Unsigned v1.2.1.93 installer crashes near the end of installation on first run
  16602  Citrix ICA16 Client installer crashes after extraction
  17058  Crayon Physics Deluxe - fullscreen doesn't work properly
  17113  Electronic dictionary application
  17166  Implement BiDi mirroring
  17712  Installshield doesn't like spaces in uninstall shortcuts
  17811  T-Online Browser: Bitmaps invisible (GdipCloneBitmapAreaI is a stub)
  17860  Microsoft Office 2007 crashes on specific powerpoint file in gdi32/enhmetafile
  18059  Unity Indie Trial exits because attrib.exe is missing
  18291  Quicktime uninstaller shortcut fails
  18625  Everest Poker startup text slightly off-centre
  18757  Album software Foto de Klijne crashes on startup
  18982  Word 2007 tab stop selection is invisible
  18993  Shadows and selection circles z-fight in World of Warcraft
  19234  Emperor fails to change resolution or be fullscreen
  19848  Arma 2: Crash on startup
  19877  Zeta Minibrowser crashes (because of stubbed CreateHardLinkW)
  20204  enhanced metafile retrieval fails and crashes clipboard test
  20210  Roller Coaster Tycoon 3 Expansions: Crashes to desktop while loading.
  20533  Random black artifacts while playing The Settlers - 10th Anniversary - Demo
  20676  winedbg minidumps can not be loaded by WinDbg
  21287  Miranda appearance is broken in many ways
  21376  The Bat! - Access Violations on attachement view
  21443  CryptSignHash() fails when CryptCreateHash() ALG_ID is set to CALG_SSL3_SHAMD5
  21829  Kurso3 hangs in the end of install
  21978  Gestan does not install
  22114  Supreme Commander 2: User interfaces flickers and some UI elements are missing
  22140  Unexpected bold font in CDBurnerXP Pro 3
  22162  Knights of the Old Republic: Cursor Doesn't Show
  22211  HTML-Kit Tools trial exits silently while displaying its splash screen
  22252  Rhiannon installer hangs: possibly caused by a regression
  22272  CDBurnerXP crashes if a data disc is inserted
  22284  Osmos: mouse pointer disappears in the menus
  22290  PlayOnline viewer can't be resized in windowed mode
  22334  Hearts of Iron III - missing texture on initial window
  22353  Application written in VB6 crashes when setting the .colwidth property of a msflexgrid
  22356  Jedi Knight: Dark Forces II - weapons flicker
  22435  Wine un-highlights selected text when right button is clicked
  22443  AutoCAD 2008: Icons have pinky background in "filter applied" drop down menu
  22444  AutoCAD 2008: No icons in drop down menu
  22453  Office 2007 text is not visibily highlighted
  22455  Star Wars: Knights of the Old Republic does not start
  22457  Disabled toolbar icons are black
  22463  mouse cursor display broken
  22535  King's Bounty Armored Princess graphics glitches
  22543  winedbg crashes on startup in combination with crysis
  22601  .NET Framework 2.0 installer displays crash dialog, fails with "function failed" error message
  22624  multithread app using GDI and directx may cause deadlock
  22625  No card selector available for GL vendor 3 and card vendor 8086
  22632  Blitzkrieg game crashes when using 'Save' option
  22646  Modern Warfare 2: Fog and smoke rendered incorrectly
  22650  Time of Defiance login attempt results in WSAIoctl unsupported WS_IOCTL cmd (9800000c)
  22653  Serif WebPlus X2 does not install
  22657  3DMark 2001se - Car Chase - High Detail shows black screen
  22666  wine64: does not create a proper WINEPREFIX when -O0 is used, breaks winetest
  22676  Total Commander icons do not appear in the task bar
  22694  Spiceworks crashes during install
  22699  Swapchain_blit enhancement introduces y-axis inversion
  22704  Dungeon Keeper 2 shows X-cursor
  22709  crypt32 doesn't support wildcard certificates with alternate name extension
  22717  duplicate symbols in ldt.c ... bad inline asm
  22735  Resize of PlayOnline viewer's window makes it's content upside down
  22746  CDBurnerXP 3.0.x uses a wrong/invisible cursor on its mode selection screen
  22750  ControlSpy message parameters listboxes don't have frames
  22755  Installer program of "de rouck" freezes
  22758  MS Office 2007: riched20 assertion failure in CDKey registration screen
  22792  VLC Media Player crashes on first run

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

Changes since 1.1.44:

Aleksey Bragin (1):
      winex11.drv: Fix SetCursor entry in the spec file.

Alexander N. Sørnes (2):
      shell32: Update Norwegian Bokmål translation.
      wineboot: Update Norwegian Bokmål translation.

Alexandre Julliard (49):
      include: Force inlining exported API functions to avoid duplicate definitions.
      winex11: Fix source/dest width mismatch in SetDIBits.
      user32: Fix checking of show count in ShowCursor.
      winex11: Take into account the cursor show count when setting the initial cursor for a window.
      winex11: Select for EnterNotify events on the desktop window in order to update the cursor.
      winex11: The startscan line is relative to the destination in SetDIBits.
      comctl32: Apply the imagelist mask when alpha blending.
      server: Return the cursor information for a thread input, and use it for GetCursorInfo.
      winex11: Update the cursor also for events ignored by a hook.
      ws2_32/tests: Fix non-portable syntax.
      comctl32: Make ImageList_AddMasked call ImageList_Add instead of duplicating the functionality.
      comctl32: Generate an alpha channel if necessary when adding images to a 32-bit imagelist.
      comctl32: Also generate an alpha channel when replacing an image or icon in an imagelist.
      comctl32: Store an alpha channel present flag for each image in an imagelist.
      comctl32: Always alpha blend images for 32-bpp imagelists.
      Fix the bitmap info size computation when masks are present.
      ntdll: Preserve registers in call_thread_entry_point on x86_64.
      server: Make sure a thread doesn't get freed while it's processing a request.
      comctl32/imagelist: Pre-multiply the colors by the alpha channel when storing an image with alpha.
      comctl32/imagelist: Generate the mask from the alpha channel if present.
      comctl32/imagelist: Fix the allocated size of the has_alpha array.
      configure: Rename the 64-bit loader to wine64 and keep wine always for the 32-bit loader.
      winedbg: Don't install the man page in a wow64 build.
      ntdll: Avoid a compiler warning on NetBSD.
      winex11: Use the subpixel rendering configuration from fontconfig to override the registry options.
      gdi32: Pre-multiply RGB values by alpha for subpixel font rendering.
      comctl32/imagelist: Don't pre-multiply the stored image, do it only at blending time.
      winex11: Force alpha channel to 0 when blitting to depth 32 from a lower depth.
      krnl386.exe: Call the 32-bit string functions that contain exception handlers.
      winecfg: Don't crash when DllOverrides contain invalid values.
      winex11: Make sure that all fontconfig support is properly #ifdef'ed.
      configure: Add a compatibility macro for AS_VAR_IF.
      libwine: Generate Unicode data for Arabic shaping.
      winex11: Add some tracing to the fontconfig subpixel code.
      comctl32/imagelist: Clear pixels that fall outside the mask when generating an alpha channel.
      user32: Ignore the bitmap offset if it's not set.
      user32: Define an explicit structure for storing the cursor data.
      user32: Store color and mask bitmaps in the cursor data.
      user32: Store a pre-computed alpha bitmap for 32-bpp icons with an alpha channel.
      user32: Use the stored color and mask bitmaps instead of the raw bits in DrawIconEx.
      user32: Use the stored color and mask bitmaps instead of the raw bits in GetIconInfo.
      winex11: Fix a bitmap leak when setting the small icon hints.
      winex11: Move X11 locking inside the cursor creation functions.
      winex11: Retrieve the cursor info with GetIconInfo to create a color cursor.
      winex11: Reimplement creation of Xlib cursors to use the bitmaps returned by GetIconInfo.
      winex11: Create X11 cursors on demand when the cursor is set to a window.
      user32: Remove the CURSORICONINFO parameter in the CreateCursorIcon driver entry point.
      user32: No longer store the icon bits in the icon object.
      user32: Get rid of the CURSORICONINFO structure in icon objects.

Andrew Eikum (3):
      user32: Don't use DLGTEMPLATE's ExStyle when creating dialogs.
      comctl32/listview: Derive subitem rect from listview origin.
      Revert "user32: Don't use DLGTEMPLATE's ExStyle when creating dialogs.".

Andrew Nguyen (9):
      urlmon: Validate URL and output pointer in CreateURLMoniker.
      urlmon/tests: Fix CoInternetCompareUrl failure message typos.
      oleaut32: Improve parameter validation in OleLoadPicturePath.
      oleaut32: Convert file URLs to DOS paths for special handling in OleLoadPicturePath.
      oleaut32: Implicitly initialize COM in OleLoadPicturePath.
      oleaut32/tests: Update a comment about PNG support in OLE picture tests.
      ole32: Validate pointer parameters in MkParseDisplayName.
      ole32/tests: Add tests for output parameters in MkParseDisplayName.
      urlmon: Validate parameters in MkParseDisplayNameEx.

Andrey Turkin (8):
      oleaut32: Add handling of some more VARIANT types in typelibs.
      oleaut32: Implement ICreateTypeInfo2::SetCustData method.
      oleaut32: Implement ITypeInfo::GetDocumentation.
      oleaut32: Fix ICreateTypeLib2::SetFuncAndParamNames.
      oleaut32: Implement ICreateTypeInfo2::SetFuncCustData.
      oleaut32: Distinguish between variables and functions in ICreateTypeInfo functions.
      oleaut32: Set flag for retval params in ICreateTypeInfo::AddFuncDesc.
      kernel32: Implement CreateHardLink.

André Hentschel (10):
      oleaut32: Check if the delimiter is a date delimiter.
      winemaker: Check for more project files.
      winemaker: Clean up target type handling.
      winemaker: Add missing linefeed.
      wordpad: Update German translation.
      wmc: Remove 10 year old unmaintained file.
      progman: Remove redundant license info.
      progman: Remove redundant warranty info.
      start: Update German translation.
      msvidc32: Be less picky with formats.

Aric Stewart (6):
      usp10/test: Initialize local structures.
      usp10: Add ETO_IGNORELANGUAGE when calling ExtTextOut so we do not re-reverse already formated RTL strings inside of GDI.
      gdi32: Use usp10 to optionally generate glyphs for bidi strings.
      usp10: Add Arabic shaping.
      usp10: Attempt to do shaping via the font GSUB table first.
      usp10: Correct Left and Right confusions for Arabic joining and shaping.

Aurimas Fišeras (2):
      msi: Update Lithuanian translation.
      wordpad: Update Lithuanian translation.

Austin English (2):
      include: Rename structs to fix compile with recent gcc.
      ntdll: Add stub for NtRaiseHardError.

Damjan Jovanovic (5):
      winemenubuilder: Escape freedesktop exec keys properly.
      winemenubuilder: Fix a char/widechar typo in association .desktop paths.
      winemenubuilder: associate .lnk files with wine.
      wine.desktop: Associate with winemenubuilder's application/x-ms-shortcut.
      winemenubuilder: Generate .png even for paletted icons.

Detlef Riekenberg (1):
      kernel32: Move a 16 bit related comment to krnl386.

Dmitry Timoshkov (3):
      user32: Add BM_SETSTATE/BM_SETCHECK message tests for a button, make them pass under Wine.
      user32: Paint button focus in the ODA_SELECT case too.
      gdi32: Do not use VDMX for mapping of negative font heights, based on a test case.

Dylan Smith (3):
      richedit: Avoid notifying parent window in improper state.
      richedit: Revert commit that caused a regression. (Bug 22758).
      richedit: Send EN_SELCHANGE after wrapping but before EN_CHANGE.

Eric Pouech (1):
      dbghelp: Protect PE's COFF table reading against bogus values in NTHEADER.

Frédéric Delanoy (4):
      wordpad: Update French translation.
      msi: Update French translation.
      winemaker: Fix typos in manpage.
      winemaker: Add French translation.

Gerald Pfeifer (35):
      gdi32/tests: Remove variable oldPen which is not really used from test_widenpath.
      msi: Fix the return value of msi_copy_outval in the error case.
      riched20: Remove variable ys which is not really used from ME_ArrowPageDown.
      riched20: Remove variable pCell which is not really used from ME_StreamIn.
      user.exe16: Remove variable width which is not really used from listbox_proc16.
      comctl32/tests: Add tests for the return values of TreeView_SelectItem in test_select.
      cmd: Remove variable copyFromDir which is not really used from WCMD_copy.
      taskmgr: Remove variable idctrl which is not really used from TaskManagerWndProc.
      gdi32/tests: Remove two variables which are not really used from test_clipping.
      winefile: Remove variable hChildClass which is not really used from InitInstance.
      shell32/tests: Remove variable res which is not really used from init_strings.
      quartz: Remove variable keyframe which is not really used from AVISplitter_next_request.
      winecfg: Remove variable drive which is not really used from DriveDlgProc.
      d3dx9_36/tests: Remove variable scaling which is not really used from D3DXMatrixTest.
      mountmgr.sys: Remove variable result which is not really used from update_symlink.
      user32/tests: Remove SetShellWindowEx from test_shell_window.
      oleaut32/tests: Remove variable changed which is not really used from test_SysReAllocStringLen.
      user32/tests: Remove variable atom which is not really used from test_Expose.
      winmm/tests: Remove two unused variables (and dead code) from check_position.
      shlwapi: Remove variable retval which is not really used from GetAcceptLanguagesW.
      comctl32: Remove unused parameter fwKeys from LISTVIEW_MouseHover.
      comctl32: Remove unused parameter bEnable from LISTVIEW_Enable.
      comctl32/tests: Remove variable hwndheader which is not really used from test_redraw.
      localspl/tests: Improve the tests in test_XcvDataPort_AddPort by properly checking return values and avoiding a duplicate test.
      user32/tests: Make checks in test_LoadImageFile and test_LoadImage more comprehensive.
      quartz: Remove unused variable pOutputPin from MPEGSplitter_process_sample.
      comctl32: Remove unused variable infoPtr from TVIEW_StyleChanging.
      comctl32: Remove document of (already removed) infoPtr from LISTVIEW_StyleChanged.
      comctl32/tests: Remove some dead code from TaskManager_OnRestoreMainWindow.
      comctl32/tests: Check for the outcome of the SendMessage calls in test_monthcal_size.
      winecfg: Remove variable lRes which is not really used from configureAudioDriver.
      quartz: Fix return value of DSoundRender_GetState.
      oleaut32: Remove variable rOk which is not really used from VarMod.
      riched20: Remove variables yprev and ys which are not really used from ME_ArrowPageUp.
      rpcrt4: Remove variable hr which is not really used from NdrInterfacePointerBufferSize.

Hans Leidekker (23):
      msi: Add a test to show that patches are not committed to the local package database.
      msi: Add more patch registration tests.
      msi: Add a test to show that the InstallSource property is unchanged after an upgrade.
      msi: Set install properties just once.
      msi: Avoid A->W conversions in msi_publish_install_properties.
      msi: Set the SourceDir property to the registered source if the product is installed.
      msi: Store the disk id in the MSIFILE structure.
      msi: Only extract a file when its disk id matches the media disk id.
      msi: Improve some traces.
      winedump: Print the network share name in .lnk files.
      winemenubuilder: Lower case the content type.
      winemenubuilder: Expand environment strings in the shortcut path.
      hnetcfg: Return success from fw_port_get_Enabled.
      fltlib: Add stub implementations of FilterFindFirst and FilterFindClose.
      winhttp: Support setting security flags on request handles.
      ntdll: Add some tests for RtlIsTextUnicode.
      msi: Fix memory leaks in deformat_string_internal.
      msi: Release the package in MsiGetProductPropertyW.
      msi: Release the package in MsiGetMode and MsiSetMode.
      msi: Consistently use the allocation macros.
      msi: Fix some leaks in the tests.
      msi: Test the reference count on the installer object retrieved from a session object.
      msi: Add more tests for feature overrides.

Henri Verbeet (25):
      wined3d: Handle depth/stencil surfaces in IWineD3DSurfaceImpl_LoadLocation().
      wined3d: Remove some unused winetexturestates elements.
      wined3d: Add support for ARB_shadow.
      wined3d: Add support for shadow samplers.
      d3d8/tests: Add a shadow sampler test.
      d3d9/tests: Add a shadow sampler test.
      wined3d: context_validate_onscreen_formats() may modify context->render_offscreen.
      wined3d: Explicitly pass the depth/stencil surface to context_validate_onscreen_formats().
      wined3d: Check for offscreen contexts inside context_validate_onscreen_formats() itself.
      wined3d: Correctly translate between coordinate systems in swapchain_blit().
      wined3d: Make context_attach_surface_fbo() static.
      wined3d: Explicitly pass the FBO target to context_clean_fbo_attachments().
      wined3d: Use wine_dbgstr_rect() for tracing the rectangle in IWineD3DSurfaceImpl_LockRect().
      wined3d: Fix a comment.
      user32: Verify we got a valid window handle in GetDCEx().
      wined3d: Check for a destination clipper in IWineD3DBaseSurfaceImpl_Blt().
      wined3d: Split checking for "empty" source and destination rectangles in IWineD3DBaseSurfaceImpl_Blt().
      wined3d: Merge source rectangle operations into a single block in IWineD3DBaseSurfaceImpl_Blt().
      wined3d: Merge destination rectangle operations into a single block in IWineD3DBaseSurfaceImpl_Blt().
      wined3d: Translate front buffer coordinates in surface_blt_to_drawable().
      wined3d: Introduce a separate function for translating front buffer coordinates to GL coordinates.
      wined3d: Set the buffer.c GLINFO_LOCATION to *gl_info.
      wined3d: Explicitly pass GL info to buffer_create_buffer_object().
      wined3d: Explicitly pass GL info to buffer_get_sysmem().
      wined3d: Set the device.c GLINFO_LOCATION to *gl_info.

Huw Davies (2):
      oleaut32: Set the font to dirty when loading a new data.
      comctl32: Fix an hfont leak.

Ilya Shpigor (1):
      shdocvw: Added IDataObject stub implementation.

Jacek Caban (15):
      mshtml: Check return value of SetText.
      mshtml: Test return value of OnStateChange.
      mshtml: Added IHTMLOptionElement::selected property implementation.
      mshtml: Added IHTMLTextAreaElement::put_value implementation.
      mshtml: Moved getting select's option element by index to separated function.
      mshtml: Added IHTMLSelectElement::item implementation.
      mshtml: Moved getting form's elements by index to separated function.
      mshtml: Added IHTMLFormElement::item implementation.
      mshtml: Added IHTMLFormElement::action property implementation.
      mshtml: Added IHTMLTextAreaElement::readOnly property implementation.
      mshtml: Fixed test on some IEs.
      mshtml: Fixed platform test on 64-bit IE6.
      exdisp.idl: Added missing DWebBrowserEvents2 methods.
      shobjidl.idl: Added NWMF declaration.
      shdocvw: Added ITargetFrame2 stub implementation.

Joel Holdsworth (13):
      msiexec: Reused appwiz.cpl icon in msiexec.
      configure: Fix for icotool version checking regex.
      configure: Added a check for ImageMagick v6.6 or newer in maintainer mode.
      credui: Added a rendering hint to banner.svg.
      tools: Modified the ICO render script to also render BMPs.
      comctl32: Replaced idb_view_small.bmp with a Tango compliant tool strip.
      comctl32: Replaced idb_view_large.bmp with a Tango compliant tool strip.
      comctl32: Replaced idb_std_small.bmp with a Tango compliant tool strip.
      comctl32: Replaced idb_std_large.bmp with a Tango compliant tool strip.
      comctl32: Replaced idb_hist_small.bmp with a Tango compliant tool strip.
      comctl32: Replaced idb_hist_large.bmp with a Tango compliant tool strip.
      wordpad: Replaced toolbar.bmp with a Tango compliant tool strip.
      wordpad: Replaced formatbar.bmp with a Tango compliant tool strip.

Juan Lang (17):
      crypt32: Add stub for CERT_STORE_CTRL_AUTO_RESYNC of registry stores.
      crypt32/tests: Test CertAddCertificateLinkToStore.
      crypt32: Validate add disposition before checking source certificate's properties.
      crypt32: Prohibit adding links to collection stores.
      crypt32: Implement CertAddCertificateLinkToStore on top of CertAddCertificateContextToStore.
      winhttp: Store security flags in netconn_t.
      winhttp: Store a pointer to the netconn_t in the SSL context.
      winhttp: Honor security flags when verifying a certificate.
      wintrust/tests: Fix test failures when not running as administrator.
      crypt32: Update definition of CERT_CHAIN_ENGINE_CONFIG.
      crypt32: Support hExclusiveRoot when creating a certificate chain engine.
      crypt32/tests: Allow specifying a chain engine when creating a certificate chain.
      crypt32/tests: Allow specifying a chain engine when verifying a chain policy.
      crypt32/tests: Test wildcards in subject alternative name.
      crypt32: Implement wildcard domain name matching in subject alternative names.
      rsaenh: Add tests for CALG_SSL3_SHAMD5 hashing.
      rsaenh: Implement CALG_SSL3_SHAMD5 hashing.

Julius Schwartzenberg (1):
      wined3d: Cope with the new Intel renderer string.

Jörg Höhle (7):
      winealsa: Supply FFFFFFFF for midiOutGetVolume, no garbage.
      winealsa: MOD_MIDIPORT has 0 voices and notes and FFFF ChannelMask.
      imaadp32: Refine size checks.
      winmm: WAVE/MIDI_MAPPER (-1) is a 32 bit UINT, not 16.
      winmm: A NULL CALLBACK_FUNCTION is acceptable since w2k.
      winmm: More MIDI boundary tests & fixes.
      winmm: Have MCI drivers handle notification for MCI_OPEN.

Kai Blin (1):
      ws2_32: Stub out WS_SIO_UDP_CONNRESET WSioctl.

Katayama Hirofumi MZ (1):
      wordpad: Add units (in/inch/pt).

Louis Lenders (1):
      samlib: Add stubbed samlib.dll.

Maarten Lankhorst (16):
      includes: Fix typo.
      quartz: Implement IBasicVideo get_AvgTimePerFrame.
      quartz: Forward IMediaFilter to IMediaControl.
      mciqtz32: Add command table from mciavi32.
      mciqtz32: Implement MCI_STATUS_LENGTH.
      winmm: Make timer keep a ref on winmm while it's running.
      mciqtz32: Handle mciOpen better.
      mciqtz32: Add support for MCI_DGV_WHERE_SOURCE.
      mciqtz32: Add support for mciUpdate.
      quartz: Add support for windowstate in video renderer.
      quartz: Support negative heights in video renderer.
      quartz: Respect autoshow in video renderer.
      quartz: Remove invalid check from put_WindowStyleEx in video renderer.
      mciqtz32: Handle window visibility better.
      mciqtz32: Add support for MCI_STATUS_TIME_FORMAT.
      mciqtz32: Add support for MCI_PAUSE.

Marcus Meissner (7):
      ole32: Fixed 2 uninitialized variable use (Coverity).
      wined3d: fixed a NULL deref in create_arb_blt_fragment_program (Coverity).
      ntdll: Reimplement qsort() using generic mergesort.
      ntdll: Rename mergesort to NTDLL_mergesort.
      ntdll: Implement bsearch, lfind to use correct comparator functions.
      msvcrt: Add some missing CDECL.
      msvcrt: Check locale for NULL before freeing.

Matej Špindler (11):
      winecfg: Update Slovenian translation.
      shell32: Update Slovenian translation.
      wineboot: Update Slovenian translation.
      notepad: Update Slovenian translation.
      wordpad: Update Slovenian translation.
      mapi32: Add Slovenian translation.
      wininet: Update Slovenian translation.
      jscript: Add Slovenian translation.
      winedbg: Add Slovenian translation.
      oleacc: Add Slovenian translation.
      taskmgr: Update Slovenian translation.

Matteo Bruni (19):
      d3dx9: Support some flow control instructions in the shader assembler.
      d3dx9: Add other flow control instructions in the shader assembler.
      d3dx9: Add predicate support to the shader assembler.
      d3dx9: Add output dcl instruction partial support to the shader assembler.
      d3dx9: Complete output dcl instruction support.
      d3dx9: Add input dcl instruction support to the shader assembler.
      d3dx9: Add sampler dcl instruction support to the shader assembler.
      d3dx9: Add DEF instruction support in the shader assembler.
      d3dx9: Add DEFI instruction support in the shader assembler.
      d3dx9: Add DEFB instruction support in the shader assembler.
      d3dx9: Add some version-specific checks in the shader assembler.
      d3dx9: Add ps_3_0 instructions parsing to the shader assembler.
      d3dx9: Shader assembler ps_3_0 support.
      d3dx9: Add missing texkill instruction parsing.
      d3dx9: Use separate opcodes for TEXLDP and TEXLDB.
      d3dx9: Check for oCx register number.
      d3dx9: Shader assembler vs_2_x support.
      d3dx9: Add some more tests on register number checking.
      d3dx9: Shader assembler ps_2_x support.

Michael Stefaniuc (41):
      explorer: Remove unneeded UNICODE define.
      oleaut32: Avoid using long.
      comctl32: Update some ImageList comments.
      qedit: Avoid using long.
      mshtml/tests: Replace long with LONG.
      oleview: Replace long with LONG.
      secur32: Avoid using long.
      jscript: Avoid using long.
      comdlg32: The Dutch translation uses UTF-8.
      winhttp: Remove redundant "not NULL" check for the "server" arg.
      dmloader: Remove redundant "not NULL" check of the pDesc arg.
      mshtml: Remove redundant "not NULL" check for the p arg (coccicheck).
      winhttp: Remove redundant "not 0" test of argument len.
      riched20: Avoid using long.
      mciavi32: Remove redundant "not NULL" checks of the lpParms arg.
      msvfw32: Replace long with LONG.
      rpcrt4: Avoid using long.
      taskmgr: Avoid using long.
      shell32: Remove redundant "not NULL" check of ppidl (coccicheck).
      user32: Remove redundant not NULL check of variable item (coccicheck).
      ddraw: Remove redundant "not NULL" check of This (coccicheck).
      avifil32: Remove some redundant "not NULL" checks (coccicheck).
      mciwave: Remove redundant "not NULL" checks of the variables lpParms.
      winex11.drv: Remove redundant "not NULL" check of cfgs (coccicheck).
      cmdlgtst: Replace long with LONG.
      dinput: Remove explicit cast to long as it happens implicitly.
      user32: Remove superfluous "not NULL" check of the atom variable.
      ntdll: Remove superfluous "not NULL" check for the count arg.
      qcap: Use the proper types.
      quartz: Avoid using the long type.
      msxml3: Remove redundant "not NULL" check of the punk arg.
      wineoss.drv: Avoid a potential NULL pointer dereference in a TRACE.
      rpcrt4: Remove redundant "non NULL" check of var cred_dst (coccicheck).
      user32: Avoid a potential NULL pointer dereference in a TRACE.
      wininet: Remove redundant "not NULL/0" checks (coccicheck).
      shlwapi: Remove redundant "not NULL" checks of the len arg (coccicheck).
      user32: Avoid using long.
      mcicda: Avoid using long.
      winemp3.acm: Avoid using the long type.
      mciwave: Avoid using long.
      wined3d: Avoid using the long type.

Mike Kaplinskiy (12):
      include: Add WSAID_WSASENDMSG extension guid.
      ws2_32: Improve SIO_GET_EXTENSION_FUNCTION_POINTER stub.
      ws2_32/tests: Add some socket event tests.
      server: Set FD_READ in only 1 place (cleanup).
      server: Keep polling sockets after we got a 0 recv, but not for POLLIN.
      server: Use a less hackish approach to not POLLIN when we have a hung up socket.
      server: Always treat POLLHUP as a hangup, just special case checking TCP sockets.
      server: Get rid of sock_try_event.
      ws2_32/tests: fix test failures on wine and win98.
      server: Move socket async activation to sock_poll_event.
      server: Don't poll for events when there are async operations queued.
      server: Move async activation into separate function.

Nikolay Sivov (6):
      kernel32: Fix return code from LocalUnlock for pointer passed to it.
      user32: Fix selected brush color for caret bitmap creation.
      ole32: Use window property to store registered drop target.
      comctl32: Fix SysLink debug channel name, add a trace.
      comctl32/listview: Don't forward WM_COMMAND to parent if we don't have an Edit box.
      shell32: Add SHGetLocalizedName stub.

Octavian Voicu (1):
      d3dx9_36: Export D3DXCreateEffectEx stub.

Owen Rudge (2):
      d3dx9: Implement D3DXCreateEffectCompilerFromFile/Resource.
      d3dx9: Implement CreateEffectFromFile/Resource functions.

Paul Vriens (2):
      winhttp/tests: Show the correct error.
      kernel32: Return the correct processor arch and type in wow64 mode.

Piotr Caban (16):
      include: Fix typo in shlwapi.h.
      shlwapi: Make UrlCanonicalizeW working with long urls (>INTERNET_MAX_URL_LENGTH).
      shlwapi: Make UrlCanonicalizeA working with long urls (>INTERNET_MAX_URL_LENGTH).
      shlwapi: Added more UrlCanonicalizeA tests.
      wininet: Fix trace messages.
      msvcrt: Fix strtod and wcstod implementation.
      msvcrt: Partial fix for setlocale/create_locale.
      msvcrt: Fix synonym handling in setlocale/create_locale.
      wininet: Fix dwStatusInfoLength value in INTERNET_SendCallback.
      wininet: Deal with reading over the end in NETCON_recv.
      msvcrt: Added $I10_OUTPUT implementation.
      wininet: Fix callbacks sent on connection error.
      wininet: Added INTERNET_OPTION_ERROR_MASK flag handling to InternetSetOptionW.
      wininet: Combine certificate errors in HTTP_OpenConnection.
      msvcrt: Fix compilation error (x86_64-pc-mingw32).
      wininet: Fix variables values after redirection in HTTP_HttpSendRequestW.

Rico Schüller (1):
      d3d10: Add argument check to ID3D10Effect::GetTechniqueByName().

Roderick Colenbrander (6):
      wined3d: Use surface_prepare_texture for surface allocation in read_from_framebuffer_texture.
      wined3d: Make sure wglFlush is not between ENTER_GL/LEAVE_GL.
      opengl32: Add 32-bit bitmap rendering test.
      wined3d: Set conversion flags for format descriptors having a convert function.
      wined3d: Remove unneeded d3dfmt_get_conv conversion constants.
      wined3d: Use BltFast in UpdateSurface when desc.convert is set.

Stefan Dösinger (8):
      wined3d: Don't use GL_ARB_map_buffer_range for now.
      wined3d: Split up the "one" pixel shader helper constant.
      wined3d: Store a positive 1.0 in the ARB's vertex shader helper constant.
      wined3d: Add a function for reading (ps_)helper_const.
      wined3d: Order the helper constants a bit better.
      wined3d: Make the mova constant more generic for relative addressing.
      wined3d: Handle length zero vectors in ARB's NRM.
      wined3d: Catch RCP 0.0 in ARB.

Sven Baars (13):
      xcopy: Fix Dutch translation.
      wordpad: Fix Dutch translation.
      wineconsole: Fix Dutch translation.
      winecfg: Fix Dutch translation.
      wineboot: Fix Dutch translation.
      uninstaller: Fix Dutch translation.
      wordpad: Update Dutch translation.
      start: Update Dutch translation.
      comdlg32: Fix Dutch translation.
      notepad: Fix Dutch translation.
      wineps.drv: Fix Dutch translation.
      setupapi: Fix Dutch translation.
      shdoclc: Fix Dutch translation.

Thomas Mullaly (3):
      urlmon/tests: Added a new test file for testing the IUri interface.
      urlmon/tests: Fixed IUri tests so they fail gracefully on machines with IE <7.
      urlmon: CreateUri should return E_INVALIDARG for NULL args.

Vincent Povirk (10):
      gdiplus: Implement GdipCreateHICONFromBitmap.
      gdiplus: Quiet the GdipImageForceValidation fixme.
      gdiplus: Implement bitmap color keying.
      gdiplus: Implement GdipSetImageAttributesWrapMode.
      gdiplus: Add test for GdipGetImageThumbnail.
      gdiplus: Implement GdipGetImageThumbnail.
      gdiplus: Implement GdipIsStyleAvailable.
      gdiplus: Always treat out of range string sizes as INT_MAX.
      ole32: Use a temporary variable in TransactedSnapshotImpl_EnsureReadEntry.
      shlwapi: Implement SHRegEnumUSValue.

Wolfram Sang (2):
      user32: Honor bfOffBits in BITMAP_Load.
      user32: Apply sanity-check in BITMAP_Load.

--
Alexandre Julliard
julliard@winehq.org
