The Wine development release 1.4-rc6 is now available.

What's new in this release (see below for details):
  - Bug fixes only, we are in code freeze.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.4-rc6.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.4-rc6.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/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.4-rc6:

   3325  Time Adjuster's toolbar stays always on top
   4084  SonicStage 3.1 installer fails with 'Windows version not supported'
   5897  PixelFormat_DD2WineD3D Unknown Pixelformat
   8166  notepad does fully not display long (>32K) one-line files
   8495  missing graphic objects in Re-volt
  10176  rFactor Dedicated not working anymore after update
  11430  Applications based on CodeJock Software ToolkitPro fail with division by zero
  12212  DeusEx: running at big resolutions result in screen shift&crop
  12739  Improper drawing of radio buttons
  13248  Multiple Error MessageBoxes in Incomedia Website X5 installer
  13792  Abomination: The Nemesis Project Crashes at startup
  14769  Firefox 3 window size isn't restored after returning from fullscreen (dogfood)
  16189  Google Earth install fails (service related)
  17564  7-zip file manager interface selection problem
  17723  Audiosurf: unable to fill textfields
  18569  TeamViewer: App doesn't start, probably heap corruption
  19106  Touhou Fuujinroku ~ Mountain of Faith: Stage backgrounds aren't always rendered properly
  19159  Command & Conquer 3: Tiberium Wars hangs at splash screen
  21019  Igor pro "Help brower" has no window decorations
  21745  Magic Workstation: icons and some text appear upside-down
  21981  Igor Pro: Drop-down menu only works when arrow key is pressed
  21984  Glumbuster crashes on load
  22216  Problem with freopen("CONOUT$", "w", stdout);
  22359  Wolfenstein water displays strange rays
  22414  Grand Theft Auto: Vice City - full screen window does not take focus
  22558  Harbinger (demo) graphical issue: green artefacts around objects
  22703  Running Galcon Fusion demo gives error message
  22842  Can't select screen mode / resolution on PSOBB and PSU
  22987  Irfan view - "Can't paste image from clipboard !"
  24259  World of Warcraft in Windowed/Maximized OpenGL mode takes 100% cpu
  24267  Touhou 12.3 Hisoutensoku: Don't draw some sprites.
  24695  Saira crashes when fullscreen mode is selected
  25164  Sound dies on video in binkplay 1.0 after mouse has been moved outside window/video paused
  25324  GL_INVALID_OPERATION (0x502) on x86_64 installations.
  25447  Men of War does not let me select anti-aliasing options
  26416  Fullscreen problems with Phantasy Star Online
  26613  painkiller redemption steam mouse wheel not working
  26872  Cannot create new profile in Dawn of War demo
  27220  Internet Explorer 8 always show error message on startup
  27293  PSO:BB - Cannot type a character name during character creation
  27609  GTA Vice City hangs in initial menu
  28087  foobar 2000: Crashes when editing tags (with configured media library)
  28598  ArchiCAD 12: crashes when creating a new file or open an existing one
  28801  stack_set_frame_internal passes undefined value into SymSetContext()?
  29167  Star Wars: The Old Republic launcher locks up on icon highlighting
  29689  Crash wincfg on graphics tab with LC_ALL=ja_JP
  29869  Re-Volt is missing an HUD element
  29883  Game created with RPG Tkool VX Ace (Japanese version of RPG Maker VX Ace): can not write save data (Save*.rvdata2)
  29949  PAF (Personal Ancestral File) help viewer unhandled page fault
  29981  Galactic Civilizations 2 is unplayable due to possible severe memory leak
  29992  Rally Trophy: crashes on startup when Logitech G25 plugged in
  30038  Detect CPU speed by using sysctl "hw.clockrate" instead of "dev.cpu.0.freq"
  30040  comctl32/monthcal test fails on leap years?
  30053  Finale 2012 font spacing is too wide

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

Changes since 1.4-rc5:

Alex Henrie (1):
      po: Fix spelling errors in Catalan translation.

Alexander Morozov (1):
      msvcr90: realloc can move memory block.

Alexandre Julliard (3):
      README: Updates.
      gdi32: Fix missing increment of integer data in GetCharABCWidthsFloat.
      Updated the authors list.

Aric Stewart (1):
      usp10: Better handle 0 cases when caching scripts, languages and features.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Austin English (1):
      ntdll: Use proper CPU speed detection on FreeBSD.

Bruno Jesus (1):
      imm32/tests: Add ImmGetDescription tests.

Christian Costa (1):
      d3dxof: Empty arrays can have the semicolon at the end or not so handle both cases and add tests for them.

Eduardo García (4):
      po: Update Spanish translation.
      po: Update Spanish translation.
      po: Update Spanish translation.
      po: Update Spanish translation.

Fernando Martins (3):
      po: Update Portuguese translation.
      po: Update Portuguese translation.
      po: Update Portuguese translation.

Francois Gouget (36):
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      po: The Thai 'Time/Date' translation is incomplete so mark it as fuzzy.
      po: Remove or mark as fuzzy the invalid Danish shell folder names.
      po: Remove a duplicate space after a comma in the German translation.
      po: Fix the trailing ellipses in the Japanese translation.
      po: Fix a line wrapping and ellipsis issue in the Japanese translation.
      po: Fix a typography issue in the Japanese translation.
      po: Tweak the wrapping of the cmd MOVE Norwegian Bokmål usage message translation.
      po: Fix some typography issues in the Norwegian Bokmål translation.
      po: Remove some invalid Norwegian Bokmål shell folder name translations.
      po: Wrap the 'Caps Lock' Catalan warning tooltip like the English one.
      po: Mark an invalid Korean translation as fuzzy.
      po: Add a couple of missing newlines in the Korean translation.
      po: Fix some typography issues in the Korean translation.
      po: Remove a couple of duplicate spaces from the Polish translation.
      po: Remove the copyright notice from the second start.exe Polish translation.
      po: Fix some space issues in the Portuguese (Brazil) translation.
      po: Tweak the wrapping of a few Portuguese (Brazil) translations.
      po: Mark an incomplete Portuguese (Brazil) translation as fuzzy.
      po: Fix a few typography issues in the Portuguese (Brazil) translation.
      po: Tweak the wrapping of a few Russian translations.
      po: Fix some typography issues in the Russian translation.
      po: Fix some typography issues in the Turkish translation.
      po: Fix a line wrapping issue in the Slovenian translation.
      po: Fix the references to the LGPL in the Slovenian translation.
      po: Remove English strings from the Ukrainian shell folder name translations.
      po: Fix some space and typography issues in the Ukrainian translation.
      po: A linefeed was missing in the Russian translation.
      po: Add full stops to the VERIFY ON / OFF usage lists.
      po: Add a missing linefeed to a Chinese (Taiwan) translation.
      po: Remove some invalid Portuguese (Portugal) shell folder name translations.
      po: Fix the Directory key mapping and Yes/No/All questions in the Hungarian translation.
      po: Remove a couple of duplicate spaces in the Hungarian translation.
      po: Use semicolons for the Slovenian comdlg32 printer status enumeration.
      po: Use commas in the Greek translation of comdlg32's printer status enumeration.
      start: Remove the license and the /L option.

Frédéric Delanoy (1):
      readme: Update French translation.

Gustavo Henrique Milaré (1):
      po: Update Brazilian Portuguese translation.

Hasan Kiran (1):
      po: Update Turkish translation.

Henri Verbeet (5):
      wined3d: Support color keyed WINED3DFMT_B8G8R8A8_UNORM surfaces.
      ddraw/tests: Add tests for color keyed texturing with an alpha channel.
      wined3d: Implement resetting the device window in wined3d_device_reset().
      d3d8/tests: Add some tests for resetting the device window.
      d3d9/tests: Add some tests for resetting the device window.

Hwang YunSong (2):
      po: Update Korean translation.
      po: Update Korean translation.

Ilia Mirkin (2):
      po: Fix typo in Russian translation.
      po: Fix ENTER -> Enter, CMD help text, remove fuzzy annotations.

Ivan Vojtko (3):
      po: Update Slovak translation.
      po: Update Slovak translation.
      po: Update Slovak translation.

Jacek Caban (1):
      ieframe: Fixed reallocation size.

Julian Rüger (2):
      po: Update German translation.
      readme: Update German translation.

Lauri Kenttä (6):
      po: Update Swedish translation.
      po: Update Finnish translation.
      readme: Update Finnish translation.
      readme: Update Swedish translation.
      po: Update Finnish translation.
      po: Update Swedish translation.

Luca Bennati (2):
      po: Update Italian translation.
      readme: Update Italian translation.

Lucas Zawacki (1):
      dinput: Search for device objects of the correct type in BuildActionMap.

Maarten Lankhorst (1):
      mmdevapi: Add tests for checking events to capture.

Martin Jesper Low Madsen (1):
      po: Update Danish translation.

Milan Ševčík (1):
      po: Updating Czech translation.

Nikolay Sivov (4):
      msxml3: Properly escape character data in text nodes.
      comctl32/tests: Fix test failures running on February 29.
      msxml3: Return default namespace uri for 'xml'-prefixed attributes.
      po: Russian translation update.

Ruei-Yuan Lu (1):
      po: Update Chinese (Taiwan) translation.

Stefan Dösinger (1):
      ddraw/tests: LONG/ULONG and error checking fixes.

Vincent Povirk (1):
      shell32: Properly double-null-terminate the filter in the run/browse dialog.

Zoltan Nagy (3):
      po: Update Hungarian translation.
      po: Update Hungarian translation.
      po: Update Hungarian translation.

--
Alexandre Julliard
julliard@winehq.org
