The Wine development release 1.4-rc4 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-rc4.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.4-rc4.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-rc4:

   9728  Image and icons corrupts in ShutterFly 2.2
  10872  World In Conflict silently exits on start
  13017  Photoshop CS2, info window - missing info.
  13359  Adobe Reader 8 plugin crashes on EULA in Firefox 3 [dogfood]
  13832  Circuitmaker schematic does not print to a printer
  14376  Duelpro's "Yu-gi-oh News" window unresponsive
  14648  SigmaPlot (9,10 and 11) y-axis title rotated and shifted
  15574  PhotoShop CS2: Photoshop Save As.. dialog ignores filename input on jpegs and names them ".jpg" (Workaround exists)
  15848  PokerTracker hangs on start up
  17345  So Blonde: Crashes when pick up some items
  17885  Focus frame too big in fable
  18436  Crash in winevdm for some 16-bit programs
  19691  Visual C++ 2005 Express: can't uninstall or reinstall
  19885  America's Army 3.0 fails to start
  20110  Visual C++ 2005 Express SP1 install fails
  21013  Table of contents is unusable in Wine's CHM viewer application
  21217  Menu item for "Visual C++ 2005 Express Command Prompt" busted
  21326  "Sticky" right click in MS Paint
  21719  Cannot install Adobe Photoshop CS2 due to msi_cabextract failure
  22996  Altium Designer print preview displays inverted text in schematic views
  24204  wine notepad crashes: BadLength (poly request too large or internal Xlib length error)
  24583  Visual Studio 2008 (VC9) installer crashes
  24751  Santa Clause in Trouble does not start
  26697  F-22 Raptor freezes when loading a mission
  27246  Control panel items description truncated
  27355  SumatraPDF 1.6: tooltips leave black rectangles when disappearing
  27381  Fallout New Vegas hangs by save - backtrace
  27402  Clifford's Thinking Adventures: mouse pointer goes wacky or disappears entirely
  27750  No dynamic shadows with pixel shaders enabled in Tomb Raider: Anniversary
  28388  winmm/midi.ok deadlocks and crashes occasionally?
  28413  Sound play in games and programs causes brief "pauses"
  28638  Magic the Gathering - Duels of the Planeswalkers 2012: Sound only works in Emulated mode
  28706  Test Drive Unlimited: No ingame sound
  28914  Crimzon Clover 1.01 shows only black screen
  29035  winmm player deadlocks after failing to launch a concurrent one
  29382  Internet Explorer 8's developer tools window hangs after changing document mode
  29488  BurnPlot sporadically fails to start with an X error (invalid Window parameter)
  29584  World of Warcraft 64bit client hangs at world load
  29667  Dragon Age: Origins DVD authenticity checks fail (DVD_LAYER_DESCRIPTOR big endian values need to be converted host endianness before being returned to caller)
  29686  ElsterFormular's setup wants at least MSI installer version 3.1 on x86_64
  29704  Team Fortress 2 - total black screen when displaying Jarate effect
  29722  win3.x app fail to display the printer settings dialog
  29800  Gangsters 2 Demo (German): No aperture effect in the main menu
  29828  Trackbar control doesn't show tick marks when TBS_AUTOTICKS is used
  29839  ALSA driver cannot enumerate software (slave) devices from .asoundrc
  29855  Bomb Squad 2 display wrong
  29879  Wine's help viewer crashes on a particular CHM file
  29886  Microsoft Visual Studio 2005: "attach to process" crashes IDE (marshalling/unmarshalling of GUID struct -> VT_CARRAY type)
  29887  FarCry 1.4 crashed while use mouse wheel
  29898  IE6's back/forward buttons show the history dropdown menu - real dropdown arrows missing

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

Changes since 1.4-rc3:

Akihiro Sagawa (2):
      po: Update Japanese translation.
      comdlg32: Apply 3D effects to sample text area.

Alexander Kochetkov (1):
      gdi32: Fix text baseline calculation in compatible mode.

Alexandre Julliard (10):
      hhctrl.ocx: Fix a buffer allocation size.
      wineps16.drv: Call winspool functions instead of removed wineps.drv entry points.
      winex11: Make sure the clip window is created as soon as possible.
      gdi32: Don't clip to the visible rectangle for screen DCs.
      rpcrt4: Add ref counting to RPC connections, and grab a reference while processing an RPC packet.
      user32: Fix GetKeyNameText returned length.
      user32: Add mouse tracking on caption right-clicks to avoid messing with the capture.
      dinput: Filter out mouse wheel messages in exclusive mode.
      shell32: Define our own structure for control panel info, with more space for strings.
      gdi32: Fix font orientation when mirroring in compatible mode.

Andrew Eikum (3):
      dsound: Add some more DSCAPS flags.
      mmdevapi: Only return ACTIVE devices from GetDefaultAudioEndpoint.
      winealsa.drv: Optionally load extra ALSA device names from the registry.

André Hentschel (5):
      ntdll/tests: Fix some typos.
      po: Update German translation.
      winefile: Fix collapsing when there's no parent directory.
      advapi32/tests: Add a test to cover second RegSetValueW Parameter (gcov).
      po: Fix German translation.

Aric Stewart (1):
      gdi32: Rebuild the internal SystemLink every time.

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

Charles Davis (1):
      ntdll: Zero reserved fields of the request structure in DVD_ReadDescriptor().

Christian Costa (4):
      d3dxof: Enable dumping of input x files and templates.
      d3dxof: Enable retrieving a particular member in GetData + tests.
      d3dxof: Decompress all MSZIP chunks of the compressed file and update file format description.
      d3dxof: Increase limit of number of children.

Dan Kegel (2):
      ntdll: Fix endianness of three fields in DVD_LAYER_DESCRIPTOR.
      gdiplus: Make GdipTranslateLineTransform stub lie and return Ok.

Detlef Riekenberg (1):
      comdlg32: Exclude the driver path from the result.

Eric Pouech (6):
      dbghelp: Store the 32/64 bitness in the image structure.
      dbghelp: Correctly initialize module word_size field when only the eh_frame is present (and not compilation unit).
      dbghelp: In dwarf parser, when looking for FDE/CIE skip first O-length entries.
      dbghelp: In traces for Dwarf/CFA engine, some offset are signed entities.
      dbghelp: In i386 stack unwinder, only check for NULL ebp after calling the dwarf/MSVC unwinders as they allow NULL ebp.
      dbghelp: Fix a couple of traces in dwarf line info parsing.

Erich Hoover (1):
      hhctrl.ocx: Fix parsing of some TOC topics that reference other files.

Francois Gouget (22):
      po: Remove invalid Close/Next translation suggestions.
      po: Tweak some Catalan translations.
      po: Tweak / fix some French translations.
      po: Update the Hebrew command line 'translations'.
      po: Fix some typography issues in the Hebrew translation.
      po: Fix some typography issues in the Danish translation.
      po: Fix some typography issues in the German translation.
      po: Fix a formatting directive in the Romanian translation.
      po: Use '+' when specifying a modifier + accelerator key combination.
      po: Fix some typography issues in the Romanian translation.
      po: Remove English strings and invalid translations from the Romanian translation.
      po: Fix some typography issues in the Esperanto translation.
      po: Remove English strings from the Esperanto shell folder translations.
      po: Remove a few English strings from the Hebrew translations.
      po: Remove English strings from the Italian shell folder translations.
      po: Fix some typography issues in the Italian translation.
      po: Fix some typography issues in the Hungarian translation.
      po: Fix some typography issues in the Spanish translation.
      po: Add a couple of Finnish translations.
      po: Fix a typography issue in the Finnish translation.
      po: Fix some typography issues in the Dutch translation.
      po: Remove some invalid shell folder path translations from the Dutch translation.

Frédéric Delanoy (4):
      cmd: Reuse common string constants.
      cmd: Respect constant wide strings naming convention.
      setupx.dll16: Simplify some dead code (Coverity).
      po: Update French translation.

Gustavo Henrique Milaré (2):
      po: Update Brazilian Portuguese translation.
      cryptui: Adjust the size of "Add &Purpose..." button.

Henri Verbeet (1):
      wined3d: Use a format flag instead of a floating point comparison to determine if we need to apply heightscale.

Huw Davies (1):
      oleaut32: Zero-init [out] only parameters.

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

Jeremy White (1):
      oleaut32: When marshalling VT_CARRAY, only marshall by reference for appropriate types.

Johan Gill (1):
      advapi32: CryptCreateHash actually sets ERROR_INVALID_PARAMETER if the CSP handle is 0.

Juan Lang (3):
      advapi32/tests: Fix a test failure on older NT4.
      crypt32/tests: Fix test failures on older NT4.
      cryptnet/tests: Fix test failures on older NT4.

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

Jörg Höhle (4):
      winmm: Allow new sounds to interrupt previous PlaySound invocations.
      mciwave: Zero closed resource pointer to prevent reuse.
      winmm: Avoid using SuspendThread, it can hang Wine.
      winmm: Make midiStream* messages asynchronous to avoid deadlocks.

Kusanagi Kouichi (2):
      gdi32: Use find_family_from_any_name to find a replacement family.
      gdi32: Add traces for skipped font replacements.

Michael Stefaniuc (3):
      po: Halve the number of fuzzy entries in the Romanian translation.
      po: Don't use s and t with cedilla in the Romanian translation.
      dsound/tests: Fix the capture COM tests for older Win2k versions.

Nikolay Sivov (8):
      comctl32: Update ticks on TBM_SETRANGEMAX.
      comctl32: Update ticks on TBM_SETRANGEMIN.
      comctl32: Update ticks on TBM_SETRANGE.
      comctl32: Trace Header order array contents.
      menubuilder: Use va_start/va_end around vsnprintf() on every call.
      comctl32: Fix TB_SETEXTENDEDSTYLE to use mask passed in wParam.
      msxml3: Use static buffer when tracing libxml2 error messages.
      msxml3: Fix structured error callback implementation when no message data available.

Vitaliy Margolen (1):
      server: Add sessions directory and 0 session symlink.

William Panlener (2):
      kernel32: Add missing function entry.
      ntdll: Use success return values for stubs.

Łukasz Wojniłowicz (1):
      po: Update Polish translation.

--
Alexandre Julliard
julliard@winehq.org
