This is release 1.0-rc4 of Wine, a free implementation of Windows on Unix.

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

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0-rc4.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.0-rc4.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 or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

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.0-rc4:

   2280  BACKSPACE and LEFT ARROW not responding with FirstClass v7.112
   2891  Tooltip window steals focus and creates a "normal" window
   4923  Race condition in keyboard code
   6404  Tooltips shown as windows "blocking" cursor in IE
   6674  Czech keyboard doen't work in 0.9.25
   7092  Windows Genuine Advantage Tool times out while connecting
   7759  Print Preview of Lotus Notes shows strange squared display
   7995  Problem Installing Star Wars: Galactic Battlegrounds
   8110  Pyscripter crashes on exit
   8168  Wine does not terminate at end of Adobe Dreamweaver 8 install
   8189  CoVUpdater.exe and CoHUpdater.exe both crash at the loading screen
   8342  wineserver crashed when running emule plus
   8385  Battle for Middle-Earth crashes
   8464  Chessmaster 10th Edition demo 1.02 fais to install
   8519  BFME II installer crashes with unhandled exception
   9022  America's Army locks up when/after checking for updates
   9329  XFCE specific systray problems
   9433  Problem through the registration of C++ 2005
   9469  Adobe Photoshop Elements 1 welcome dialog options don't work
   9497  Fonts missing in visio 2003, present in Word, Excel 2003
   9843  Gothic crashes when entering old mine
  10099  Symphonic Rain crashes when starting story mode
  10185  crash on installation of Age of Empires III
  10359  Steam with incorrect cursor position.
  10404  Wineconsole fails to display text or change color for Renegade FDS
  10442  Cannot switch back to Half Life 2 after alt-tabbing with managed windows
  10524  The Chronicles of RiddicK check boxes not visible
  10554  Maya 8.5 Personal Learning Edition doesn't start
  10580  S.T.A.L.K.E.R. shadow corruption with ARB shaders
  10584  Last developments of Wine broke the setup of Trados
  10652  ./tools/wineinstall adds /usr/local/lib to /etc/ld.so.conf
  10653  Word 2003 crashes when loading file
  10938  Application Melty Blood act candeza does not start
  11141  Trados - problem of creation of temp? function only working at the second try
  11509  Wordviewer 2003 is unable to open documents encrypted with AES
  11622  DejaVu X installation failing at start because of component not found
  11652  New Venezuela Time Zone.
  11659  acmStreamConvert inconsistencies (Windows Vs Wine for mp3 -> pcm)
  11683  Assemblies not loading
  11732  Mudbox can't find application paths, crashes
  11756  Pirates of the burning sea doesnt start anymore
  11791  BiblePro installer crashes
  12190  objects ghosting in everquest 2
  12246  "make test" gives different results with and without warn+heap
  12274  Need for Speed: Hot Pursuit 2 demo refuses to install
  12375  Flash 8 crashes when closing last open document
  12382  Touhou games don't show backgrounds at startup
  12396  opas: window not fully repainted after move
  12459  VeohTV beta client fails with bug report send dialog
  12794  S.T.A.L.K.E.R. Screen is black
  12819  Wine breaks pressure sensitivity in Photoshop after upgrading toHardy.
  13098  The Bat! (v3.99.24): Selected address from adressbook don't appear in 'To:' line
  13101  GLXBadDrawable when antialias ON (Nvidia driver bug?)
  13110  Half-Life 2 doesn't start
  13280  Klipfolio 4 hangs on startup
  13541  Fantamorph: crashes when opening a file browser
  13549  Impossible to install VB6 and using programmes who are generated on it.
  13561  wine fails to build with openssl-0.9.8h
  13669  DCArt32: a bug in mmio breaks audio filters
  13731  Unbreakable spaces are not rendered correctly

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

Changes since 1.0-rc3:

Alexandre Julliard (14):
      ntdll: Add local defines for VIF and VIP flags.
      wininet: Include openssl/ssl.h before Windows headers.
      user32/tests: Fix race condition in DDE server startup.
      test.h: Add a space after the file name prefix.
      crypt32/tests: Fix an end of line character.
      kernel32/tests: Don't check every single Unicode char if the tables are clearly not compatible.
      user32/tests: Don't add a newline before dumping the flag values.
      user32/tests: Abstract the printing of minmax info and do it all on one line.
      mlang/tests: Reduce the size of the test output a little.
      gdi32/tests: Reduce the size of the test output a little.
      user32/tests: Fix the dde test race correctly this time.
      shell32: Fixed the French about box.
      ChangeLog: Moved to documentation/ChangeLog.BETA.
      fonts: Add a non-breaking space glyph to the Tahoma fonts.

Alistair Leslie-Hughes (1):
      snmpapi: Correct snmpapi tests under win98.

Austin English (2):
      README: A few more updates.
      advpack: Fix a test failure on 9x.

Dan Kegel (7):
      userenv/tests: Fix buffer overrun.
      msi: MsiSourceListEnumMediaDisksW: free original string, not substring.
      oleaut32/tests: Use VariantInit, not VariantClear, to initialize new variants.
      secur32/tests: Don't free if not allocated.
      msi/tests: Initialize buffer lengths before calling MsiSourceListEnumMediaDisks.
      msxml/tests: Use VariantInit, not VariantClear, to initialize new variants.
      oleaut32/tests: VariantInit() isn't enough, you have to give a value, too.

Dmitry Timoshkov (3):
      ddraw: Avoid a not needed address-of operator.
      d3d8: Avoid a not needed address-of operator.
      d3d9: Avoid a not needed address-of operator.

Eric Pouech (1):
      msvcrt: Fix for getch() and special characters.

Francois Gouget (8):
      reg: Add French resources.
      regedit: Update the French translation.
      winefile: Fix the French translation (with some help from Michael Stefaniuc).
      wordpad: Remove extraneous spaces in '...'.
      Fix the resources to remove extraneous spaces in '...'.
      start: Some updates and fixes to the French translation.
      resources: Fix some overly long '...' instances.
      gdi32/tests: Take into account several Win9x bugs in GetObject().

H. Verbeet (2):
      wined3d: Fix WINED3DTOP_MULTIPLYADD for ATI cards.
      wined3d: Set the surface location to SFLAG_INSYSMEM for depth stencils on Reset.

Hans Leidekker (4):
      wininet: Make resolving hostnames thread-safe.
      wininet: Don't send a handle closing callback for session handles created with InternetOpenUrl.
      wininet: Return success from the InternetSetOption(INTERNET_OPTION_DISABLE_AUTODIAL) stub.
      wininet: Don't send a "Connection: Close" header.

Hwang YunSong(황윤성) (1):
      shell32: Updated Korean resource.

James Hawkins (2):
      urlmon: Fix a few failing tests in win2k3.
      ddraw: Delete the temporarily attached surface.

Jon Griffiths (1):
      oleaut32/tests: Fix memory leaks reported by valgrind.

Jonathan Ernst (5):
      start.exe: Updated French translation.
      shell32: Updated French translation.
      reg: Updated French translation.
      shell32: Updated French translation.
      notepad: Updated French translation.

José Manuel Ferrer Ortiz (1):
      Spanish translations updates.

Kirill K. Smirnov (1):
      mshtml: Fix yet another copy/paste typo.

Marcus Meissner (1):
      include: Add winelib names for some dsound A/W function / types.

Matthew D'Asaro (1):
      mmio: Do not zero current file position whenever mmioSetBuffer is called.

Michael Karcher (1):
      d3d9/tests: Keep swapchain while its backbuffer is in use.

Michael Stefaniuc (34):
      shell32: Fix the Portugese translations.
      regedit: Fix the Portugese translations.
      cmd: Fix the Portuguese translations.
      start: Fix the Portuguese translations.
      winefile: Fix the Portuguese translations.
      cmdlgtst: Fix the Portuguese translations.
      winefile: Fix the Swedish translation.
      winefile: Fix the Italian translation.
      winefile: Fix the Czech translation.
      winecfg: Fix the Portuguese translations and re-enable them.
      winecfg: Fix the Czech and Swedish translations.
      crypt32: Fix the Swedish translation.
      shell32: Fix the Czech translation.
      regedit: Fix the Czech translation.
      shell32: Fix the Swedish translation.
      regedit: Fix the Italian translation.
      shell32: Fix the Italian translation.
      notepad: Fix the Swedish translation.
      cmdlgtst: Fix the Czech translation.
      cmdlgtst: Fix the Italian translation.
      cmd: Fix the Czech translation.
      cmd: Fix the Turkish translation.
      oledlg: Fix the Italian translation.
      comdlg32: Fix the Czech translation.
      start: Fix the Cs, Es, It, Si and Tr translations.
      progman: Fix the Hungarian translation.
      mlang: Fix compile warning introduced by a6cdd538.
      wineps.drv: Fix the Dutch translation.
      net: Add the USE subcommand to the translations that are missing it.
      net: Use consistent whitespace placement in the usage and help strings.
      shell32: Fix the Turkish translation.
      wordpad: Fix the Turkish translation.
      notepad: Fix the Danish translation.
      browseui: Remove duplicate initguid.h include.

Mikołaj Zalewski (2):
      regedit: Update Polish translation.
      regedit: Add/remove favorite opens a dialog, thus should have ellipsis.

Paul Vriens (5):
      oleaut32/tests: Cleanup typelib after the test.
      wintrust/tests: Fix test on win9x.
      shlwapi/tests: Don't create testfile at a fixed location.
      urlmon: Add new IE7 QUERYOPTION.
      urlmon/tests: Fix test on IE7.

Rico Schüller (3):
      winecfg: Update German translation.
      shell32: Update German translation.
      net: Add German translation.

Roderick Colenbrander (2):
      wined3d: Add a registry key to allow/disallow multisampling.
      wined3d: Add a WineD3D_ChoosePixelFormat line.

Simon Richter (4):
      winebuild: Fix branch mnemonic on ppc.
      winebuild: Fix import stub on ppc.
      libwine: Implement wine_call_on_stack for ppc.
      libwine: Fix wine_switch_to_stack on ppc.

Stefan Dösinger (3):
      wined3d: Give local constants a shader type prefix.
      wined3d: Hardcode local constants with glUniform4fvARB.
      wined3d: Avoid float->string conversion in arb shaders.

Vijay Kiran Kamuju (1):
      rsaenh: Fix AES provider keys for Windows XP.

Vitaliy Margolen (2):
      Update Russian translations.
      user32: Fix input tests failing on WinXP+.

Zac Brown (2):
      ntdll/tests: Actually verify right bytes received in aio test.
      winmm: msiSendStringW: Don't free substring after original string has already been freed.

--
Alexandre Julliard
julliard@winehq.org
