]> source.dussan.org Git - tigervnc.git/log
tigervnc.git
8 years agochange the Copyright year on Top README.TXT and vncviewer.cxx 281/head
Bojan Memetovic [Mon, 21 Mar 2016 09:42:57 +0000 (10:42 +0100)]
change the Copyright year on Top README.TXT and vncviewer.cxx

8 years agochange the Copyright year 280/head
Bojan Memetovic [Fri, 18 Mar 2016 10:04:41 +0000 (11:04 +0100)]
change the Copyright year

8 years agoMerge pull request #279 from bphinz/ui-fixes
Brian Hinz [Fri, 18 Mar 2016 03:30:34 +0000 (23:30 -0400)]
Merge pull request #279 from bphinz/ui-fixes

Various fixes for Java viewer UI

8 years agoFix names of menu keys in options dialog on OS X 279/head
Brian P. Hinz [Fri, 18 Mar 2016 02:46:15 +0000 (22:46 -0400)]
Fix names of menu keys in options dialog on OS X

Apple changed the implementation of KeyEvent.getKeyText() to
return the unicode for the key glyph instead of a textual
description.

8 years agoCode formatting tweaks (shorter line lengths)
Brian P. Hinz [Fri, 18 Mar 2016 02:42:46 +0000 (22:42 -0400)]
Code formatting tweaks (shorter line lengths)

8 years agoVarious fixes to Java viewer UI
Brian P. Hinz [Fri, 18 Mar 2016 02:34:52 +0000 (22:34 -0400)]
Various fixes to Java viewer UI

Significant improvements to the Java viewer UI to
make it more robust and tolerant of new tabs, fonts,
etc.  TextFields and editable ComboBoxes that are
specific to integer values now only accept integer
input.

8 years ago(U) Fix invalid String comparison
Brian P. Hinz [Tue, 15 Mar 2016 00:41:48 +0000 (20:41 -0400)]
(U) Fix invalid String comparison

8 years agoMerge remote-tracking branch 'upstream/master'
Brian P. Hinz [Mon, 14 Mar 2016 22:03:08 +0000 (18:03 -0400)]
Merge remote-tracking branch 'upstream/master'

8 years agoAdd Serbian translation
Мирослав Николић [Mon, 7 Mar 2016 08:13:33 +0000 (09:13 +0100)]
Add Serbian translation

8 years agoFixes for static linking of fltk for generic binaries
Brian P. Hinz [Thu, 3 Mar 2016 02:11:29 +0000 (21:11 -0500)]
Fixes for static linking of fltk for generic binaries

8 years agoMore fixes for libX11 linkage problems
Brian P. Hinz [Tue, 1 Mar 2016 03:56:27 +0000 (22:56 -0500)]
More fixes for libX11 linkage problems

8 years agoMissed change in 57b11d46
Brian P. Hinz [Tue, 1 Mar 2016 03:07:19 +0000 (22:07 -0500)]
Missed change in 57b11d46

Additional change need for dynamic build of libX11

8 years agoLink libX11 dynamically
Brian P. Hinz [Tue, 1 Mar 2016 01:57:06 +0000 (20:57 -0500)]
Link libX11 dynamically

Building libX11 statically causes problems with libpthread, however
the version of libX11 that ships with el5 is too old to build libXext.
So we have to build a dynamic version of libX11 and link against that
while building.  The resulting binary will actually be linked against
the system libX11, which should be ABI compatible as far as Xvnc is
concerned.

8 years agoMerge remote-tracking branch 'upstream/master'
Brian P. Hinz [Sat, 13 Feb 2016 14:52:12 +0000 (09:52 -0500)]
Merge remote-tracking branch 'upstream/master'

8 years agoRegression fix for Java window size
Brian P. Hinz [Thu, 11 Feb 2016 04:23:02 +0000 (23:23 -0500)]
Regression fix for Java window size

6262bac introduced a regression that resulted in a 1 pixel border
around the window on some platforms.  The underlying issue was
actually caused by overriding the getPreferredSize() method in
DesktopWindow and returning the scaled width & height, which
might not have been set to valid values.

8 years agoMerge remote-tracking branch 'upstream/master'
Brian P. Hinz [Thu, 11 Feb 2016 01:47:24 +0000 (20:47 -0500)]
Merge remote-tracking branch 'upstream/master'

8 years agoEarly propagate of access rights to connection.
Henrik Andersson [Wed, 27 Jan 2016 13:00:44 +0000 (14:00 +0100)]
Early propagate of access rights to connection.

8 years agoUpdate debian init scripts so that sysconfig settings are actually used
Brian P. Hinz [Fri, 22 Jan 2016 20:25:34 +0000 (15:25 -0500)]
Update debian init scripts so that sysconfig settings are actually used

8 years agoMerge remote-tracking branch 'upstream/master'
Brian P. Hinz [Fri, 22 Jan 2016 18:37:57 +0000 (13:37 -0500)]
Merge remote-tracking branch 'upstream/master'

8 years agoMerge pull request #260 from TigerVNC/vencrypt-vino
Brian Hinz [Sun, 17 Jan 2016 16:03:21 +0000 (11:03 -0500)]
Merge pull request #260 from TigerVNC/vencrypt-vino

Add workaround for Vino's VeNCrypt implementation to Java viewer

8 years agoAdd workaround for Vino's VeNCrypt implementation to Java viewer 260/head
Brian P. Hinz [Sun, 17 Jan 2016 15:57:51 +0000 (10:57 -0500)]
Add workaround for Vino's VeNCrypt implementation to Java viewer

Implemented Pierre's workaround (1f8aba3) to java viewer.

8 years agoRemove legacy Windows code
Pierre Ossman [Tue, 12 Jan 2016 11:32:15 +0000 (12:32 +0100)]
Remove legacy Windows code

We have lots of code that deals with Windows versions that we no
longer support anyway. Clean out all of this old cruft.

8 years agoRemove stub mirror driver code
Pierre Ossman [Tue, 12 Jan 2016 11:29:32 +0000 (12:29 +0100)]
Remove stub mirror driver code

We don't have any meaningful code for the mirror driver, so
remove the confusing stub and interface for it.

8 years agoShorten service identifier
Pierre Ossman [Tue, 12 Jan 2016 09:14:49 +0000 (10:14 +0100)]
Shorten service identifier

The identifier is used to compute the registry path, and should
ideally be kept short and without spaces.

8 years agoProvide description for services
Pierre Ossman [Tue, 12 Jan 2016 09:13:17 +0000 (10:13 +0100)]
Provide description for services

The argument named "desc" was not actually the description, but
rather the short "display name". Add handling for the actual
description to reduce confusion.

8 years agoBetter check for on screen visibility
Pierre Ossman [Mon, 11 Jan 2016 15:06:26 +0000 (16:06 +0100)]
Better check for on screen visibility

The check for visible drawables didn't account for compositing
which can place a window off-screen. Put all of these checks in
a common place and make sure it detects things properly.

8 years agoInstall viewer .desktop file and icons on all Unix systems
Pierre Ossman [Mon, 11 Jan 2016 11:38:32 +0000 (12:38 +0100)]
Install viewer .desktop file and icons on all Unix systems

These files are not Red Hat or Ubuntu specific, so install them
on all Unix systems where the viewer is installed.

8 years agoUbuntu package fixes
Brian P. Hinz [Sat, 9 Jan 2016 04:04:51 +0000 (23:04 -0500)]
Ubuntu package fixes

Adds missing build dependencies and fixes java compile issues
caused by non-ascii characters in comments.

8 years agoUbuntu package fixes
Brian P. Hinz [Sat, 9 Jan 2016 04:04:51 +0000 (23:04 -0500)]
Ubuntu package fixes

Adds missing build dependencies and fixes java compile issues
caused by non-ascii characters in comments.

8 years agoMerge remote-tracking branch 'upstream/master'
Brian P. Hinz [Fri, 8 Jan 2016 23:39:20 +0000 (18:39 -0500)]
Merge remote-tracking branch 'upstream/master'

8 years agoAllow Ubuntu 12.04 packages to build on any architecture
Brian P. Hinz [Wed, 6 Jan 2016 10:21:54 +0000 (05:21 -0500)]
Allow Ubuntu 12.04 packages to build on any architecture

Updating control file per suggestion in #258

8 years agoDebian package updates
Brian P. Hinz [Wed, 6 Jan 2016 04:07:13 +0000 (23:07 -0500)]
Debian package updates

[re #258] Add missing build-deps and allow deb to build on any arch

8 years agoBlock signals from being handled on worker threads
Pierre Ossman [Mon, 4 Jan 2016 13:19:15 +0000 (14:19 +0100)]
Block signals from being handled on worker threads

8 years agoCompile common code with -fPIC on all non-Windows platforms
Pierre Ossman [Mon, 4 Jan 2016 13:10:25 +0000 (14:10 +0100)]
Compile common code with -fPIC on all non-Windows platforms

There are more platforms than x86_64 that need -fPIC, so include
it whenever possible.

8 years agoDelete unnecessary patch files
Brian P. Hinz [Mon, 4 Jan 2016 03:08:54 +0000 (22:08 -0500)]
Delete unnecessary patch files

8 years agoDelete unnecessary patch files
Brian P. Hinz [Mon, 4 Jan 2016 03:08:54 +0000 (22:08 -0500)]
Delete unnecessary patch files

8 years agoRemove uncessary Xauth cookie patch from deb & rpm packages
Brian P. Hinz [Mon, 4 Jan 2016 03:04:02 +0000 (22:04 -0500)]
Remove uncessary Xauth cookie patch from deb & rpm packages

Obsoleted by 7461517

8 years agoRemove uncessary Xauth cookie patch from deb & rpm packages
Brian P. Hinz [Mon, 4 Jan 2016 03:04:02 +0000 (22:04 -0500)]
Remove uncessary Xauth cookie patch from deb & rpm packages

Obsoleted by 7461517

8 years agoUpdate Swedish translation
Göran Uddeborg [Tue, 29 Dec 2015 14:39:55 +0000 (15:39 +0100)]
Update Swedish translation

8 years agoFix race problem with detecting listening inetd sockets
Tristan Schmelcher [Fri, 2 Sep 2011 22:29:25 +0000 (15:29 -0700)]
Fix race problem with detecting listening inetd sockets

The previous detection would fail if the socket closed before we
had time to inspect it, which got us stuck in a loop as we would
try (and fail) to do accept() on a non-listening socket.

8 years agoAdd workaround for Vino's VeNCrypt implementation
Pierre Ossman [Tue, 29 Dec 2015 14:02:11 +0000 (15:02 +0100)]
Add workaround for Vino's VeNCrypt implementation

8 years agoSet up Xauthority using a single invokation
Pierre Ossman [Tue, 29 Dec 2015 13:30:32 +0000 (14:30 +0100)]
Set up Xauthority using a single invokation

8 years agoUse mcookie to generate X server cookie
Pierre Ossman [Tue, 29 Dec 2015 13:27:07 +0000 (14:27 +0100)]
Use mcookie to generate X server cookie

8 years agoCheck that xauth is in PATH
Pierre Ossman [Tue, 29 Dec 2015 13:24:55 +0000 (14:24 +0100)]
Check that xauth is in PATH

The rest of the code assumes xauth is in PATH, so let's check for
that instead.

8 years agoUpdate Swedish translation
Göran Uddeborg [Tue, 29 Dec 2015 14:39:55 +0000 (15:39 +0100)]
Update Swedish translation

8 years agoFix race problem with detecting listening inetd sockets
Tristan Schmelcher [Fri, 2 Sep 2011 22:29:25 +0000 (15:29 -0700)]
Fix race problem with detecting listening inetd sockets

The previous detection would fail if the socket closed before we
had time to inspect it, which got us stuck in a loop as we would
try (and fail) to do accept() on a non-listening socket.

8 years agoAdd workaround for Vino's VeNCrypt implementation
Pierre Ossman [Tue, 29 Dec 2015 14:02:11 +0000 (15:02 +0100)]
Add workaround for Vino's VeNCrypt implementation

8 years agoSet up Xauthority using a single invokation
Pierre Ossman [Tue, 29 Dec 2015 13:30:32 +0000 (14:30 +0100)]
Set up Xauthority using a single invokation

8 years agoUse mcookie to generate X server cookie
Pierre Ossman [Tue, 29 Dec 2015 13:27:07 +0000 (14:27 +0100)]
Use mcookie to generate X server cookie

8 years agoCheck that xauth is in PATH
Pierre Ossman [Tue, 29 Dec 2015 13:24:55 +0000 (14:24 +0100)]
Check that xauth is in PATH

The rest of the code assumes xauth is in PATH, so let's check for
that instead.

8 years agoSuppress/eliminate JDK warnings
Brian P. Hinz [Sun, 27 Dec 2015 02:49:49 +0000 (21:49 -0500)]
Suppress/eliminate JDK warnings

8 years agoUpgrade in-tree jsch and jzlib to latest upstream versions
Brian P. Hinz [Sun, 27 Dec 2015 02:48:11 +0000 (21:48 -0500)]
Upgrade in-tree jsch and jzlib to latest upstream versions

8 years agoSuppress/eliminate JDK warnings
Brian P. Hinz [Sun, 27 Dec 2015 02:49:49 +0000 (21:49 -0500)]
Suppress/eliminate JDK warnings

8 years agoUpgrade in-tree jsch and jzlib to latest upstream versions
Brian P. Hinz [Sun, 27 Dec 2015 02:48:11 +0000 (21:48 -0500)]
Upgrade in-tree jsch and jzlib to latest upstream versions

8 years agoAdd snap tag to el7 packages
Brian P. Hinz [Fri, 25 Dec 2015 04:13:43 +0000 (23:13 -0500)]
Add snap tag to el7 packages

8 years agoAdd support for building RPM packages for RHEL 7 derivatives
Brian P. Hinz [Thu, 24 Dec 2015 23:27:26 +0000 (18:27 -0500)]
Add support for building RPM packages for RHEL 7 derivatives

8 years agoUpdate French translation
Stéphane Aulery [Wed, 23 Dec 2015 09:17:27 +0000 (10:17 +0100)]
Update French translation

8 years agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Fri, 18 Dec 2015 10:20:05 +0000 (11:20 +0100)]
Update Brazilian Portuguese translation

8 years agoUse --host and --build to prevent buildhost-specific optimizations
Brian P. Hinz [Sat, 12 Dec 2015 04:01:59 +0000 (23:01 -0500)]
Use --host and --build to prevent buildhost-specific optimizations

8 years agoOnly show sendPrimary on X11 platforms
Pierre Ossman [Thu, 10 Dec 2015 20:24:08 +0000 (21:24 +0100)]
Only show sendPrimary on X11 platforms

Primary selection is inherently a X11 concept so there is no point
showing the settings related to it on other platforms.

8 years agoInclude class keyword for friend declaration
Pierre Ossman [Tue, 8 Dec 2015 14:27:24 +0000 (15:27 +0100)]
Include class keyword for friend declaration

Only C++11 allows omitting the class keyword, so include it so
the code compiles with older compilers.

8 years agoInit socket subsystem before parsing filters
Pierre Ossman [Mon, 7 Dec 2015 11:13:20 +0000 (12:13 +0100)]
Init socket subsystem before parsing filters

Parsing a filter might be the first thing we do so we need to
make sure the socket subsystem is running so that we can look
up names.

8 years agoMerge branch 'master' of https://github.com/hackonteur/tigervnc
Pierre Ossman [Mon, 7 Dec 2015 10:10:03 +0000 (11:10 +0100)]
Merge branch 'master' of https://github.com/hackonteur/tigervnc

8 years agoUpdate German translation
Mario Blättermann [Mon, 7 Dec 2015 10:03:33 +0000 (11:03 +0100)]
Update German translation

8 years agoUpdate Danish translation
Joe Hansen [Mon, 7 Dec 2015 10:03:17 +0000 (11:03 +0100)]
Update Danish translation

8 years agoUpdate Dutch translation
Benno Schulenberg [Mon, 7 Dec 2015 10:02:59 +0000 (11:02 +0100)]
Update Dutch translation

8 years agoReplace external wget with native Python version 246/head
Scott Roland [Sat, 5 Dec 2015 00:06:48 +0000 (00:06 +0000)]
Replace external wget with native Python version

This makes it easier to handle common exceptions. I was motivated
because the Mesa URL is currently broken and wasn't handled well.

Implementation mostly copied from here:
  http://stackoverflow.com/questions/22676/how-do-i-download-a-file-over-http-using-python

8 years agoFix coding to be utf-8 instead of UTF-8
Scott Roland [Fri, 4 Dec 2015 20:03:31 +0000 (20:03 +0000)]
Fix coding to be utf-8 instead of UTF-8

Old UTF-8 resulted in this error from GNU Emacs:
  Warning (mule): Invalid coding system `UTF-8' is specified
  for the current buffer/file by the :coding tag.
  It is highly recommended to fix it before writing to a file.

8 years agoUpdate Bulgarian translation
Alexander Shopov [Fri, 4 Dec 2015 11:26:50 +0000 (12:26 +0100)]
Update Bulgarian translation

8 years agoUpdate Finnish translation
Jorma Karvonen [Fri, 4 Dec 2015 11:26:22 +0000 (12:26 +0100)]
Update Finnish translation

8 years agoUpdate Swedish translation
Göran Uddeborg [Thu, 3 Dec 2015 09:06:34 +0000 (10:06 +0100)]
Update Swedish translation

8 years agoUpdate Ukrainian translation
Yuri Chornoivan [Wed, 2 Dec 2015 15:36:08 +0000 (16:36 +0100)]
Update Ukrainian translation

8 years agoMerge branch 'multicore' of https://github.com/CendioOssman/tigervnc
Pierre Ossman [Wed, 2 Dec 2015 15:22:37 +0000 (16:22 +0100)]
Merge branch 'multicore' of https://github.com/CendioOssman/tigervnc

8 years agoPerformance analysis of multi-core decoder 242/head
Pierre Ossman [Wed, 2 Dec 2015 15:16:01 +0000 (16:16 +0100)]
Performance analysis of multi-core decoder

8 years agoGracefully handle empty CopyArea operations
Pierre Ossman [Mon, 30 Nov 2015 12:08:19 +0000 (13:08 +0100)]
Gracefully handle empty CopyArea operations

8 years agoMerge branch 'master' of https://github.com/hackonteur/tigervnc
Pierre Ossman [Mon, 30 Nov 2015 09:49:22 +0000 (10:49 +0100)]
Merge branch 'master' of https://github.com/hackonteur/tigervnc

8 years agoModularized el5 & el6 RPM specs
Brian P. Hinz [Sun, 29 Nov 2015 16:56:53 +0000 (11:56 -0500)]
Modularized el5 & el6 RPM specs

Split the static library pre-reqs into a static-devel package
so that they don't need to be rebuilt everytime tigervnc's
sources change.

8 years agoFix relative PATH to SRCDIR 241/head
Scott Roland [Sun, 29 Nov 2015 23:41:22 +0000 (23:41 +0000)]
Fix relative PATH to SRCDIR

8 years agoOptimised shortcut for decoding on single CPU systems
Pierre Ossman [Tue, 24 Nov 2015 16:15:16 +0000 (17:15 +0100)]
Optimised shortcut for decoding on single CPU systems

8 years agoLimit the number of decoder threads to 4
Pierre Ossman [Fri, 20 Nov 2015 15:14:48 +0000 (16:14 +0100)]
Limit the number of decoder threads to 4

They just end up burning CPU fighting each other without much
improvement to the decoding time beyond four threads.

8 years agoThrottle overlapping screen updates
Pierre Ossman [Wed, 18 Nov 2015 15:24:16 +0000 (16:24 +0100)]
Throttle overlapping screen updates

We need to make sure the display server has finished reading our
previous update before we overwrite the buffer with the next update.

8 years agoConsolidate how to run the FLTK loop in one place
Pierre Ossman [Wed, 18 Nov 2015 15:23:21 +0000 (16:23 +0100)]
Consolidate how to run the FLTK loop in one place

8 years agoPropagate exceptions from worker threads back to main thread
Pierre Ossman [Tue, 17 Nov 2015 08:37:57 +0000 (09:37 +0100)]
Propagate exceptions from worker threads back to main thread

8 years agoEstimate CPU core usage in performance tests
Pierre Ossman [Mon, 16 Nov 2015 08:37:46 +0000 (09:37 +0100)]
Estimate CPU core usage in performance tests

This is based on comparing CPU time with elapsed time, which means
that the tests can be heavily influenced by other load on the test
machine.

8 years agoProtect PlatformPixelBuffer from simultaneous access
Pierre Ossman [Fri, 13 Nov 2015 13:09:27 +0000 (14:09 +0100)]
Protect PlatformPixelBuffer from simultaneous access

The damage tracking region needs to be protected from multiple
threads accessing it at once. The rest should be fine though.

8 years agoCreate one decode thread for each CPU
Pierre Ossman [Fri, 13 Nov 2015 13:07:52 +0000 (14:07 +0100)]
Create one decode thread for each CPU

We can start creating more decoding threads now that we handle
rect ordering properly. No point in creating more threads than
there are CPUs though.

8 years agoAdd option to enable thread sanitizer
Pierre Ossman [Fri, 13 Nov 2015 13:06:35 +0000 (14:06 +0100)]
Add option to enable thread sanitizer

8 years agoAllow parallel decoding of Tight JPEG rects
Pierre Ossman [Fri, 13 Nov 2015 10:16:33 +0000 (11:16 +0100)]
Allow parallel decoding of Tight JPEG rects

The cost is some more load on malloc(), but it should be small
compared to the gains of spreading the CPU heavy JPEG decoding
over multiple CPUs.

8 years agoAllow conditional dependencies between rects when decoding
Pierre Ossman [Fri, 13 Nov 2015 09:47:28 +0000 (10:47 +0100)]
Allow conditional dependencies between rects when decoding

Some encodings only cause dependencies between rects some of the
time. Make sure we can allow parallel decoding of those rect that
aren't dependent on each other.

8 years agoDecode rectangles in order if needed
Pierre Ossman [Thu, 12 Nov 2015 12:18:22 +0000 (13:18 +0100)]
Decode rectangles in order if needed

Some encodings must be handled in the order they are received.
Make sure we respect this in the decode manager.

8 years agoDecode overlapping rectangles in order
Pierre Ossman [Thu, 12 Nov 2015 12:17:42 +0000 (13:17 +0100)]
Decode overlapping rectangles in order

8 years agoAdd flags member to decoders
Pierre Ossman [Thu, 12 Nov 2015 12:07:42 +0000 (13:07 +0100)]
Add flags member to decoders

Allows us to add attributes later that affect of the decoder
manager deals with the decoders.

8 years agoMake the decoder multi-threaded
Pierre Ossman [Thu, 12 Nov 2015 11:21:58 +0000 (12:21 +0100)]
Make the decoder multi-threaded

This implements the basic infrastructure for multi-threaded
decoding of rects. However there is just one thread reading data
and one thread decoding it. More logic is needed to safely decode
multiple rects at the same time.

8 years agoLet CConnection intercept more callbacks
Pierre Ossman [Thu, 12 Nov 2015 11:20:05 +0000 (12:20 +0100)]
Let CConnection intercept more callbacks

We need more callbacks for correct operation of multi-threaded
rect decoding.

8 years agoAdd abstraction classes for system thread primitives
Pierre Ossman [Thu, 12 Nov 2015 11:16:08 +0000 (12:16 +0100)]
Add abstraction classes for system thread primitives

8 years agoRaise system requirement on Windows to Vista/2008
Pierre Ossman [Thu, 12 Nov 2015 11:17:34 +0000 (12:17 +0100)]
Raise system requirement on Windows to Vista/2008

We need the newer versions of Windows to get access to better
thread primitives.

8 years agoFix copy-paste error for the secTypeX509Vnc security type
Pierre Ossman [Wed, 11 Nov 2015 12:12:45 +0000 (13:12 +0100)]
Fix copy-paste error for the secTypeX509Vnc security type

8 years agoClear up ZlibInStream::reset() behaviour
Pierre Ossman [Wed, 11 Nov 2015 12:11:09 +0000 (13:11 +0100)]
Clear up ZlibInStream::reset() behaviour

It previously only did a reset of the ZlibInStream object, not the
underlying zlib stream. It also had the side effect of flushing
the underlying stream and disassociating from it.

Clear things up by changing the naming, and introducing a proper
reset function (which is needed by the Tight decoder).

8 years agoSplit decoders into a read and decode step
Pierre Ossman [Tue, 10 Nov 2015 16:17:34 +0000 (17:17 +0100)]
Split decoders into a read and decode step

We need to split these steps up in preparation for multi-core
support. Reading needs to be done in a serial manner, whilst
decoding can be done in parallel.

This also involved a rather large cleanup of the Tight decoder.

8 years agoAdd efficient method to copy data between two streams
Pierre Ossman [Tue, 10 Nov 2015 16:13:27 +0000 (17:13 +0100)]
Add efficient method to copy data between two streams