The Wine development release 1.2-rc2 is now available.

There are no new features in this release, only bug fixes, since we
are in code freeze. If you find a new feature that's a bug.

The source is available from the following locations:

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

   1733  Black cursor on textbox with black backgroud -> cursor invisible
   3182  test case demonstrating PeekMessage give up timeslices
   5264  Equation editor in Microsoft Office 97/2000/2003/2007 doesn't work
   6183  NFS MW crashed when sound is on in winecfg
   6997  NFS Most Wanted: Execution of glDrawArrays (drawStridedFast) takes 1 second +
   7036  Doom 3  Demo fails to start
   8030  Need for Speed Carbon crashed after game starts
   8112  user32 msg test fails when using virtual desktop mode
   8131  MiniTab fails to load due to not being able to load its own DLL
   8555  No large display pictures in MSN Messenger 7.0
   9252  Far Cry: Segmentation fault on startup when using Direct3D
   9359  Need for Speed Most Wanted crahshes frequently
  10501  NFSU2 crashes out when loading a level
  10982  ClearScale, Autocad 2008 do not run (GdipBitmapSetPixel not implemented)
  11346  Emule: Background color of an label is displayed horizontal
  13042  CodeGear RAD Studio 2007 does not install
  13177  [winhelp] Popup shadow is displayed ontop of popup itself
  14292  winhelp: Window title is not set correctly for some (older) help files
  14298  winhelp: Mouse pointer flickers when moved
  14697  wineserver: debug events can block completion of queued user APCs
  14866  expand: Wine's expand program fails on /r option
  14868  Initial crash when running GSpot
  15291  Microsoft Office Outlook 2007: Splash screen never goes away, z-order issues
  15968  Microsoft XNA Framework 2.0 redistributable cannot be installed even with .NET Framework 2.0 installed
  16093  MS AppLocale installer fails
  17001  guitar pro 5.2 is sluggish and unstable
  17148  Use the system desktop setting for subpixel font smoothing
  17957  Audiosurf crashes on startup
  18643  NCSoft Launcher crashes after being run.
  18959  MetaTrader 4 installer hangs at the very end of file extraction
  19059  VectorNTI crashes when saving files
  19797  Powerpoint 2007: text does not display correctly in textbox rotated 90 or 270 degrees
  20180  Teach2000 hangs when switched to "Advanced input mode"
  20282  ControlSpy doesn't show any message passed to control procedure
  20389  Firefox/Thunderbird/Sunbird: Close button must be clicked twice
  20751  MS Keyboard Layout Creator won't run (needs GdipIsStyleAvailable)
  21413  Cannot type language specific letters in MS Word
  21562  Multiple init/deinit of msvcrt (std fd's) causes pluto app installer to hang
  21871  Nokia Ovi Suite installer fails
  21876  Demo Need for Speed Underground 1 crashes
  22045  VirtualDub: cannot edit text informations
  22138  system(NULL) generates SIGSEGV
  22263  Total Commander: Main window becomes dead when the FTP Connect window is open and you switch workspaces or minimize and restore the main window
  22287  Personal Chess Trainer v3.02, Run-time error '13': Type mismatch
  22294  PlayOnline viewer has missing icon in title bar
  22320  Mono & HTML-Kit's installers do not appear in the taskbar
  22339  QuickTime installs a few files to the wrong location
  22341  Touhou games: no text in dialogue boxes
  22460  msvcr90 insufficient to run Deluge
  22542  Trackmania quits when i want to go back to the main menu
  22550  uTorrent 2.0.1 renders some icons incorrectly when run within a FreeNX session
  22575  Major decline in Starcraft's 2d graphics performance
  22658  Movie Magic Screenwriter 2000 crashes when selecting Program Options
  22724  windows opened by wine has zero size, and cannot be resized
  22765  Fonts no longer anti-aliased
  22809  SUPERAntiSpyware displays crash handler when Preferences button is clicked
  22810  Civ4BeyondtheSword crashes when trying to start it
  22820  StarCraft 2 warns incorrectly about old drivers.
  22821  Tropico 3 - cursor is black rectangle everywhere in game
  22822  Utorrent progress bars don't show progress
  22831  freebsd compile broken when using BSD make
  22837  Mailwasher connection timeout on gmail
  22845  Total Commander crashes when trying to display system information
  22909  Drawn text overlapps after the second character.

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

Changes since 1.2-rc1:

Alexander Scott-Johns (1):
      clock: Remove "License..." and "NO WARRANTY..." items from "Info" menu.

Alexandre Julliard (34):
      winhlp32: Get rid of the shadow window, it's ugly and causes z-order issues.
      user32: Don't repaint the caret in SetCaretPos if the position doesn't change.
      configure: BSD make doesn't treat .PHONY as a proper target, so it needs its own dependencies.
      configure: Disable makefile auto-updating on BSD make, it's broken for parallel builds.
      ntdll: Reimplement bsearch to avoid redundant and possibly out of bounds comparisons.
      winex11: Fetch the antialias parameter from fontconfig too.
      winex11: Allow the Xft configuration to override both registry and fontconfig parameters.
      user.exe: Make sure 16-bit user and gdi never get unloaded.
      winex11: Unmap zero-size windows also while processing a PropertyNotify event.
      winex11: Don't send minimize/maximize sys commands to windows that are not supposed to get them.
      msi: Ignore min/max versions if their values are null.
      user.exe: Store the GDI instance when it's first loaded.
      ole32: Implement the IAdviseSink call_as proxies and stubs.
      user32/tests: Fix a test failure in desktop mode.
      atl: Fix formatting of generated class name for 64-bit.
      user32: Check the active window instead of the foreground to show/hide owned popups.
      comctl32/imagelist: Add support for 25% and 50% blending when using an alpha channel.
      comctl32/imagelist: Fix a copy/paste typo in ImageList_Merge.
      user32: Copy icon bits by hand in CreateIconIndirect if the bitmaps can't be selected into a DC.
      kernel32: Reset stdio handles when they are closed.
      gdi32: Return the actual DIB section bitfields instead of default values in GetDIBits.
      gdi32: Only 16 and 32 bpp DIB sections can have bitfields.
      user32: Don't include winbase16.h.
      version: Don't include winbase16.h.
      winedump: Don't include winbase16.h.
      Revert "gdi32: Pre-multiply RGB values by alpha for subpixel font rendering."
      kernel32: Unalign the stack on process startup to work around Doom3 bug.
      kernel32/tests: Restore the stderr handle after the closing test.
      user32: Re-enable the fast code path in CreateIconIndirect.
      winex11: Set window style to normal for windows with a minimize box.
      winex11: Set size hints to 1x1 for zero-sized windows.
      winex11: Map zero-size windows and set an empty window region for them.
      winex11: Only unmap windows when the window rect changes to unmapped the first time.
      user32: Only skip redraws on MDI child unmaximize if the new child is maximized.

Andrew Eikum (1):
      winedbg: Allow user to specify length of stack info output.

Andrew Nguyen (2):
      configure: Don't enable maintainer mode if it is explicitly not requested.
      ws2_32: Update DLL version information to correspond to XP.

Andrey Turkin (4):
      oleaut32: Fix ctl2_alloc_importfile offset calculations.
      oleaut32: Store correct offset for imported files in ICreateTypeInfo::AddRefTypeInfo.
      oleaut32: Don't rewrite name's hreftype.
      server: Connect named pipe synchronously when overlapped param is NULL.

André Hentschel (11):
      oledb32/tests: Preset dst_len to encounter more problems.
      winegcc: Add support for amd64-mingw32msvc platform.
      atl: Reuse code of AtlModuleRegisterWndClassInfoW for AtlModuleRegisterWndClassInfoA.
      winejack.drv: Use jack_client_open instead of deprecated function.
      oledb32: Fix dst_len in DataConvert.
      oledb32: Add Variant to Integer conversion.
      winebuild: Add support for amd64-mingw32msvc platform.
      widl: Add support for amd64-mingw32msvc platform.
      libs/port: Add support for amd64-mingw32msvc platform.
      oledb32: Fix variant to integer conversion.
      dbghelp: Use the available PowerPC functions.

Aric Stewart (6):
      usp10: Use font chartype only as a fallback if we do not know the characters script already.
      gdi32: Handle a BiDi string being shaped into more or less glyphs than characters in the string.
      usp10: Handle Ligature Substitution Subtable from GSUB.
      usp10: Apply the GSUB 'rlig' feature for Required ligature substitution.
      usp10: Break out a function to apply a GSUB feature to an entire string of glyphs.
      usp10: Apply all the GSUB features specified in Microsofts Typesetting documentation for Arabic Shaping.

Austin English (13):
      ntdll: Add %gs support for FreeBSD.
      user32: Add test for drop down width in test_changesize().
      user32/tests: Check return value of DdeClientTransaction in test_initialisation().
      gdi32/tests: Use ret in test_CreateFontIndirect().
      kernel32/tests: Use ret in load_blackbox().
      usp10/tests: Check return value of SelectObject.
      kernel32/tests: Check return value of alarmThread in test_NamedPipe_2().
      winebuild: FreeBSD 64-bit binaries are elf_x86_64_fbsd.
      user32/tests: Check return value of GetUpdateRect in test_validatergn.
      qedit: Fix return value of DllUnregisterServer.
      winenas.drv: Remove oldb from nas_add_buffer, where it's unused.
      loader: Remove mapat from map_so_lib, where it is unused.
      dmusic: Use if(0) instead of #if 0 to make sure code still compiles.

Damjan Jovanovic (2):
      windowscodecs: Fix ICO palette size calculation.
      winemenubuilder: Use the full path to start.exe.

David Adam (3):
      d3drm: Remove a useless include.
      d3drm: Do not redefine already defined guids.
      d3drm: Remove a useless comment.

David Hedberg (2):
      include: Add IExplorerBrowserEvents, IExplorerPaneVisibility and IExplorerBrowser interface declarations and related GUID's.
      include: Add ICommDlgBrowser2 and ICommDlgBrowser3 interfaces.

Dmitry Timoshkov (1):
      winex11.drv: Simulate pressing Alt+F4 instead of clicking the caption Close button when handling the WM_DELETE_WINDOW event.

Dylan Smith (4):
      richedit: Missing HeapFree in WM_IME_COMPOSITION. (Smatch).
      richedit: Commit undo items after modifications in WM_IME_COMPOSITION.
      richedit: Simplify redundant code in WM_IME_COMPOSITION.
      richedit: Fix assignment to wrong variable (LLVM/Clang).

Gerald Pfeifer (5):
      msvcrt/tests: Adjust CHECK_TYPE to avoid some two dozen compiler warnings.
      oleaut32/tests: Remove variable rValid which is not really used from test_VarMod.
      rsaenh: Simplify store_key_container_permissions.
      dbghelp: Remove variable basic_block which is not really used from dwarf2_parse_line_numbers.
      wordpad: Remove variable bottom which is not really used from print.

Hans Leidekker (9):
      server: Map EHOSTUNREACH to STATUS_HOST_UNREACHABLE.
      msi: Get rid of the goto in MSI_ApplicablePatchW.
      msi: Add a test for properties updated by a patch.
      msi: End the search for a directory signature if the parent cannot be found.
      wininet: Implement InternetSetOption(INTERNET_OPTION_CONTEXT_VALUE).
      wininet: Pass the object header pointer to INET_QueryOption.
      wininet: Implement InternetQueryOption(INTERNET_OPTION_CONTEXT_VALUE).
      wininet: Add tests for setting and retrieving the context value.
      wuapi: Return success from automatic_updates_Pause.

Henri Verbeet (15):
      wined3d: Set the drawprim.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the swapchain.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the volume.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the nvidia_texture_shader.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the ati_fragment_shader.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the arb_program_shader.c GLINFO_LOCATION to *gl_info.
      wined3d: Set the state.c GLINFO_LOCATION to *gl_info.
      wined3d: Get rid of GLINFO_LOCATION.
      d3d8: Set the FPU control word on device creation.
      d3d9: Set the FPU control word on device creation.
      wined3d: Handle a zero source value for WINED3DSIH_POW.
      d3d9/tests: Fix a typo.
      d3d9/tests: Don't depend so much on point rasterization rules in pointsize_test().
      d3d9/test: Introduce point_match() to simplify testing point sizes.
      d3d9/tests: Remove an invalid point size test.

Jacek Caban (8):
      mshtml: Simplify translate_url call.
      jscript: Store builtin constructor's length in instance object.
      jscript: Added RegExp.leftContext and RegExp.rightContext stub implementation.
      jscript: Treat no argument as "undefined" in RegExp.test.
      jscript: Store match result in script context.
      jscript: Added RegExp.leftContext implementation.
      jscript: Added RegExp.rightContext implementation.
      jscript: Added leftContext and rightCont4ext tests.

Juan Lang (5):
      ole32/tests: Test creating an IPropertySetStorage with an unknown format id.
      ole32: Only read known format ids when attempting to read summary information.
      crypt32/tests: Improve granularity of testing a store's serialized form.
      crypt32/tests: Test an otherwise unused return value.
      crypt32/tests: Always compare serialized stores in memory.

Kristofer Henriksson (1):
      winemp3.acm: Fix the Mac-specific code.

Maarten Lankhorst (1):
      winmm: Wake up timer after the timer list is empty.

Marcus Meissner (5):
      usp10: Check heap_alloc return value (Coverity).
      ntdll: qsort: comparator must not get the same pointer.
      d3dx9_36: Fixed off by 1 in the usage_idx check (Coverity).
      wininet: Check for NULL lpwhh (Coverity).
      include: Pack NE_NAMEINFO and NE_TYPEINFO pack(1).

Matteo Bruni (2):
      d3dx9: Stricter checks for relative addressing in the shader assembler.
      d3dx9: Shader assembler vs_1_0 and vs_1_1 support.

Michael Stefaniuc (5):
      msacm32: Avoid using the long type.
      mapi32: Add the Romanian translation.
      comctl32: Avoid a potential NULL pointer dereference in a TRACE.
      ole32: Avoid potential NULL pointer dereferences in a TRACE.
      devenum: Split the translations into separate resource files.

Nikolay Sivov (9):
      comctl32/listview: Fix vertical position offset for subitem rectangle.
      shell32: Export lowlevel PIDL manipulation calls by name too.
      comctl32/listview: Perform ranges validation only when tracing enabled.
      comctl32: Export subclass calls by names too.
      Fix unneeded capitalization in user prompts.
      shell32: Complete strings resources.
      wineboot: Add a translation for prefix update dialog.
      comctl32: Fix accelerator letters for Toolbar customizing dialog.
      README.ru: Fix some problems with words order in phrases.

Piotr Caban (2):
      msvcrt: Fix mbstowcs_l implementation.
      msvcrt: Fix wcstombs_l implementation.

Robert Wilhelm (4):
      include: Add struct _stat32i64 and struct _stat64i32.
      msvcrt90: Add fstat64i32.
      msvcrt90: Add stat64i32.
      msvcrt: Support system(NULL).

Roderick Colenbrander (7):
      wined3d: Replace set_shader call with unset_shader in blt_to_drawable.
      wined3d: Don't use blit_supported() in d3dfmt_get_conv for now.
      wined3d: Update Nvidia Geforce6+ driver version to latest 197.45 WHQL version.
      wined3d: Add Geforce 4x0 cards to GPU database.
      wined3d: Add Geforce 2xx lowend models.
      wined3d: Mark Geforce GT 140 as a Geforce 9600GT.
      wined3d: Add support for mobile Geforce 3xx GPUs.

Sven Baars (8):
      winemine: Fix Dutch translation.
      msi: Fix English translation.
      msi: Update Dutch translation.
      view: Fix Dutch translation.
      taskmgr: Fix Dutch translation.
      sane.ds: Fix Dutch translation.
      winhlp32: Fix Dutch translation.
      winefile: Fix Dutch translation.

Thomas Mullaly (5):
      urlmon/tests: Added tests for IUri_GetPropertyBSTR.
      urlmon/tests: Added tests for IUri_GetPropertyDWORD.
      urlmon/tests: Added tests for half of the IUri_Get* string functions.
      urlmon/tests: Added the remainder of tests for the IUri_Get* string functions.
      urlmon/tests: Added tests for the IUri_Get* dword property functions.

Vincent Povirk (4):
      ole32/tests: Add more IStream_Seek tests for hglobalstream.
      ole32: Fix seeking backwards in hglobalstream.
      windowscodecs: Account for a NULL pceltFetched in ComponentEnum_Next.
      ole32: Always check the size of the small block root chain.

--
Alexandre Julliard
julliard@winehq.org
