[poppler] [PATCH v2 1/5] Splash: Reserve space for path segments upfront
Albert Astals Cid
aacid at kde.org
Wed May 30 07:27:05 UTC 2018
pushed
El dissabte, 26 de maig de 2018, a les 19:51:20 CEST, Stefan BrĂ¼ns va
escriure:
> Instead of iteratively growing the array reserve sufficient space
> prior to populating the array.
> ---
> poppler/SplashOutputDev.cc | 1 +
> splash/SplashPath.cc | 4 ++++
> splash/SplashPath.h | 3 +++
> 3 files changed, 8 insertions(+)
>
> diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
> index b85a860c..ae93bddd 100644
> --- a/poppler/SplashOutputDev.cc
> +++ b/poppler/SplashOutputDev.cc
> @@ -2368,6 +2368,7 @@ SplashPath *SplashOutputDev::convertPath(GfxState
> *state, GfxPath *path, for (i = 0; i < path->getNumSubpaths(); ++i) {
> subpath = path->getSubpath(i);
> if (subpath->getNumPoints() > n) {
> + sPath->reserve(subpath->getNumPoints() + 1);
> sPath->moveTo((SplashCoord)subpath->getX(0),
> (SplashCoord)subpath->getY(0));
> j = 1;
> diff --git a/splash/SplashPath.cc b/splash/SplashPath.cc
> index 09b2a76e..4a00e959 100644
> --- a/splash/SplashPath.cc
> +++ b/splash/SplashPath.cc
> @@ -62,6 +62,10 @@ SplashPath::~SplashPath() {
> gfree(hints);
> }
>
> +void SplashPath::reserve(int nPts) {
> + grow(nPts - size);
> +}
> +
> // Add space for <nPts> more points.
> void SplashPath::grow(int nPts) {
> if (length + nPts > size) {
> diff --git a/splash/SplashPath.h b/splash/SplashPath.h
> index c8164a8b..c85303a8 100644
> --- a/splash/SplashPath.h
> +++ b/splash/SplashPath.h
> @@ -115,6 +115,9 @@ public:
> // Get the current point.
> GBool getCurPt(SplashCoord *x, SplashCoord *y);
>
> + // Reserve space for at least n points
> + void reserve(int n);
> +
> protected:
>
> SplashPath(SplashPath *path);
More information about the poppler
mailing list