xz: Take advantage of LZMA_FULL_BARRIER with --block-list.

Now if --block-list is used in threaded mode, the encoder
won't need to flush at each Block boundary specified via
--block-list. This improves performance a lot, making
threading helpful with --block-list.

The flush timer was reset after LZMA_FULL_FLUSH but since
LZMA_FULL_BARRIER doesn't flush, resetting the timer is
no longer done.
diff --git a/src/xz/coder.c b/src/xz/coder.c
index 2e76b08..61aa1f4 100644
--- a/src/xz/coder.c
+++ b/src/xz/coder.c
@@ -584,7 +584,7 @@
 				// opt_block_size bytes of input.
 				block_remaining -= strm.avail_in;
 				if (block_remaining == 0)
-					action = LZMA_FULL_FLUSH;
+					action = LZMA_FULL_BARRIER;
 			}
 
 			if (action == LZMA_RUN && flush_needed)
@@ -605,21 +605,22 @@
 		}
 
 		if (ret == LZMA_STREAM_END && (action == LZMA_SYNC_FLUSH
-				|| action == LZMA_FULL_FLUSH)) {
-			// Flushing completed. Write the pending data out
-			// immediatelly so that the reading side can
-			// decompress everything compressed so far. Do this
-			// also with LZMA_FULL_FLUSH because if it is combined
-			// with timed LZMA_SYNC_FLUSH the same flushing
-			// timer can be used.
-			if (io_write(pair, &out_buf, IO_BUFFER_SIZE
-					- strm.avail_out))
-				break;
+				|| action == LZMA_FULL_BARRIER)) {
+			if (action == LZMA_SYNC_FLUSH) {
+				// Flushing completed. Write the pending data
+				// out immediatelly so that the reading side
+				// can decompress everything compressed so far.
+				if (io_write(pair, &out_buf, IO_BUFFER_SIZE
+						- strm.avail_out))
+					break;
 
-			strm.next_out = out_buf.u8;
-			strm.avail_out = IO_BUFFER_SIZE;
+				strm.next_out = out_buf.u8;
+				strm.avail_out = IO_BUFFER_SIZE;
 
-			if (action == LZMA_FULL_FLUSH) {
+				// Set the time of the most recent flushing.
+				mytime_set_flush_time();
+			} else {
+				// Start a new Block after LZMA_FULL_BARRIER.
 				if (opt_block_list == NULL) {
 					block_remaining = opt_block_size;
 				} else {
@@ -633,9 +634,6 @@
 				}
 			}
 
-			// Set the time of the most recent flushing.
-			mytime_set_flush_time();
-
 			// Start a new Block after LZMA_FULL_FLUSH or continue
 			// the same block after LZMA_SYNC_FLUSH.
 			action = LZMA_RUN;