diff options
author | Robin Watts <robin.watts@artifex.com> | 2017-01-06 17:49:19 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2017-01-06 18:04:32 +0000 |
commit | 16911233da82601e2df6b0af49fc2136db38535d (patch) | |
tree | e140bc4262105641a2a32f9522ce605ee86ebcb2 /source | |
parent | cb91a7732e2e2475f4bcd5cea8ac847a78e24a66 (diff) | |
download | mupdf-16911233da82601e2df6b0af49fc2136db38535d.tar.xz |
Fix /dev/null slowdown.
In commit 80308eae9964e71b66a18f3de6ebcd2ebf0d306b ("Regularize
band writer interface"), I inadvertently slowed down outputting
to /dev/null. Fixed here.
Also take the opportunity to speed ppm/pnm files writing in
general if we don't need to collate.
Diffstat (limited to 'source')
-rw-r--r-- | source/fitz/output-pcl.c | 6 | ||||
-rw-r--r-- | source/fitz/output-png.c | 3 | ||||
-rw-r--r-- | source/fitz/output-pnm.c | 9 | ||||
-rw-r--r-- | source/fitz/output-ps.c | 3 |
4 files changed, 21 insertions, 0 deletions
diff --git a/source/fitz/output-pcl.c b/source/fitz/output-pcl.c index 4485453a..4eb620f3 100644 --- a/source/fitz/output-pcl.c +++ b/source/fitz/output-pcl.c @@ -782,6 +782,9 @@ color_pcl_write_band(fz_context *ctx, fz_band_writer *writer_, int stride, int b unsigned char *curr; unsigned char *comp; + if (!out) + return; + ds = w * 3; ss = w * 4; @@ -1149,6 +1152,9 @@ mono_pcl_write_band(fz_context *ctx, fz_band_writer *writer_, int ss, int band_s int out_count; const fz_pcl_options *pcl; + if (!out) + return; + num_blank_lines = writer->num_blank_lines; rmask = ~0 << (-w & 7); line_size = (w + 7)/8; diff --git a/source/fitz/output-png.c b/source/fitz/output-png.c index 24e9394f..993bda9f 100644 --- a/source/fitz/output-png.c +++ b/source/fitz/output-png.c @@ -133,6 +133,9 @@ png_write_band(fz_context *ctx, fz_band_writer *writer_, int stride, int band_st int y, x, k, err, finalband; int w, h, n; + if (!out) + return; + w = writer->super.w; h = writer->super.h; n = writer->super.n; diff --git a/source/fitz/output-pnm.c b/source/fitz/output-pnm.c index 3a605524..68f25bcb 100644 --- a/source/fitz/output-pnm.c +++ b/source/fitz/output-pnm.c @@ -39,6 +39,9 @@ pnm_write_band(fz_context *ctx, fz_band_writer *writer, int stride, int band_sta if (n-alpha != 1 && n-alpha != 3) fz_throw(ctx, FZ_ERROR_GENERIC, "pixmap must be grayscale or rgb to write as pnm"); + if (!out) + return; + if (end > h) end = h; end -= band_start; @@ -78,6 +81,9 @@ pnm_write_band(fz_context *ctx, fz_band_writer *writer, int stride, int band_sta break; } case 3: + fz_write(ctx, out, p, num_written*3); + p += num_written*3; + break; case 4: { char *o = buffer; @@ -188,6 +194,9 @@ pam_write_band(fz_context *ctx, fz_band_writer *writer, int stride, int band_sta int y; int end = band_start + band_height; + if (!out) + return; + if (end > h) end = h; end -= band_start; diff --git a/source/fitz/output-ps.c b/source/fitz/output-ps.c index 8b8d9bdb..b5338955 100644 --- a/source/fitz/output-ps.c +++ b/source/fitz/output-ps.c @@ -187,6 +187,9 @@ ps_write_band(fz_context *ctx, fz_band_writer *writer_, int stride, int band_sta int required_output; unsigned char *o; + if (!out) + return; + if (band_start+band_height >= h) band_height = h - band_start; |