[smooth] Fix valgrind warning and reoptimize.

The algorithm calls `gray_set_cell' at the start of each new contour
or when the contours cross the cell boundaries. Double-checking for
that is wasteful.

* src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
(gray_convert_glyph): Remove initialization introduced by 44b172e88.
This commit is contained in:
Alexei Podtelezhnikov 2016-09-11 16:00:52 -04:00
parent e421a0bffc
commit 6ca54c6430
2 changed files with 20 additions and 12 deletions

View File

@ -1,3 +1,14 @@
2016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Fix valgrind warning and reoptimize.
The algorithm calls `gray_set_cell' at the start of each new contour
or when the contours cross the cell boundaries. Double-checking for
that is wasteful.
* src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
(gray_convert_glyph): Remove initialization introduced by 44b172e88.
2016-09-10 Werner Lemberg <wl@gnu.org>
[sfnt] Fix previous commit.

View File

@ -577,24 +577,21 @@ typedef ptrdiff_t FT_PtrDist;
/* All cells that are on the left of the clipping region go to the */
/* min_ex - 1 horizontal position. */
if ( ex > ras.max_ex )
ex = ras.max_ex;
if ( ex < ras.min_ex )
ex = ras.min_ex - 1;
/* are we moving to a different cell ? */
if ( ex != ras.ex || ey != ras.ey )
{
/* record the current one if it is valid */
if ( !ras.invalid )
gray_record_cell( RAS_VAR );
/* record the current one if it is valid */
if ( !ras.invalid )
gray_record_cell( RAS_VAR );
ras.area = 0;
ras.cover = 0;
ras.ex = ex;
ras.ey = ey;
}
ras.area = 0;
ras.cover = 0;
ras.ex = ex;
ras.ey = ey;
ras.invalid = ( ey >= ras.max_ey || ey < ras.min_ey ||
ex >= ras.max_ex );
@ -1820,7 +1817,7 @@ typedef ptrdiff_t FT_PtrDist;
ras.num_cells = 0;
ras.invalid = 1;
ras.min_ey = band[1];
ras.max_ey = ras.ey = band[0];
ras.max_ey = band[0];
error = gray_convert_glyph_inner( RAS_VAR );