Cool. Thanks for doing this. On Thu, Jun 23, 2016 at 11:24 PM, Alexei Podtelezhnikov <[email protected]> wrote: > branch: master > commit 25e82bc2b54054b1819c92bad01b623de7d380c7 > Author: Alexei Podtelezhnikov <[email protected]> > Commit: Alexei Podtelezhnikov <[email protected]> > > [smooth] Consolidate memory management. > > * src/smooth/ftgrays.c (gray_init_cells): Remove function. > (gray_TWorker): Remove fields that become local variables. > (gray_raster_render): Move rendering buffer declaration from here. > (gray_convert_glyph): ... to here and update accordingly. > --- > ChangeLog | 9 +++++++++ > src/smooth/ftgrays.c | 43 ++++++------------------------------------- > 2 files changed, 15 insertions(+), 37 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 219b5a6..a57b267 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,12 @@ > +2016-06-23 Alexei Podtelezhnikov <[email protected]> > + > + [smooth] Consolidate memory management. > + > + * src/smooth/ftgrays.c (gray_init_cells): Remove function. > + (gray_TWorker): Remove fields that become local variables. > + (gray_raster_render): Move rendering buffer declaration from here. > + (gray_convert_glyph): ... to here and update accordingly. > + > 2016-06-22 Alexei Podtelezhnikov <[email protected]> > > [smooth] Consolidate boundary checks. > diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c > index 85d39c1..140ec8e 100644 > --- a/src/smooth/ftgrays.c > +++ b/src/smooth/ftgrays.c > @@ -452,11 +452,6 @@ typedef ptrdiff_t FT_PtrDist; > void* render_span_data; > int span_y; > > - int band_size; > - > - void* buffer; > - long buffer_size; > - > PCell* ycells; > TPos ycount; > > @@ -510,27 +505,6 @@ typedef ptrdiff_t FT_PtrDist; > > /*************************************************************************/ > /* */ > - /* Initialize the cells table. */ > - /* */ > - static void > - gray_init_cells( RAS_ARG_ void* buffer, > - long byte_size ) > - { > - ras.buffer = buffer; > - ras.buffer_size = byte_size; > - > - ras.ycells = (PCell*) buffer; > - ras.cells = NULL; > - ras.max_cells = 0; > - ras.num_cells = 0; > - ras.area = 0; > - ras.cover = 0; > - ras.invalid = 1; > - } > - > - > - /*************************************************************************/ > - /* */ > /* Record the current cell in the table. */ > /* */ > static PCell > @@ -1910,6 +1884,8 @@ typedef ptrdiff_t FT_PtrDist; > static int > gray_convert_glyph( RAS_ARG ) > { > + TCell buffer[FT_MAX_GRAY_POOL]; > + const int band_size = FT_MAX_GRAY_POOL / 8; > gray_TBand bands[40]; > gray_TBand* volatile band; > int volatile n, num_bands; > @@ -1917,7 +1893,7 @@ typedef ptrdiff_t FT_PtrDist; > > > /* set up vertical bands */ > - num_bands = (int)( ( ras.max_ey - ras.min_ey ) / ras.band_size ); > + num_bands = (int)( ( ras.max_ey - ras.min_ey ) / band_size ); > if ( num_bands == 0 ) > num_bands = 1; > if ( num_bands >= 39 ) > @@ -1928,7 +1904,7 @@ typedef ptrdiff_t FT_PtrDist; > > for ( n = 0; n < num_bands; n++, min = max ) > { > - max = min + ras.band_size; > + max = min + band_size; > if ( n == num_bands - 1 || max > max_y ) > max = max_y; > > @@ -1954,10 +1930,10 @@ typedef ptrdiff_t FT_PtrDist; > if ( FT_MAX_GRAY_POOL - cell_start < 2 ) > goto ReduceBands; > > - ras.cells = (PCell)ras.buffer + cell_start; > + ras.cells = buffer + cell_start; > ras.max_cells = (FT_PtrDist)( FT_MAX_GRAY_POOL - cell_start ); > > - ras.ycells = (PCell*)ras.buffer; > + ras.ycells = (PCell*)buffer; > ras.ycount = (TPos)ycount; > while ( ycount ) > ras.ycells[--ycount] = NULL; > @@ -2018,8 +1994,6 @@ typedef ptrdiff_t FT_PtrDist; > > gray_TWorker worker[1]; > > - TCell buffer[FT_MAX_GRAY_POOL]; > - > > if ( !raster ) > return FT_THROW( Invalid_Argument ); > @@ -2100,12 +2074,7 @@ typedef ptrdiff_t FT_PtrDist; > ras.count_ex = ras.max_ex - ras.min_ex; > ras.count_ey = ras.max_ey - ras.min_ey; > > - gray_init_cells( RAS_VAR_ buffer, sizeof ( buffer ) ); > - > ras.outline = *outline; > - ras.num_cells = 0; > - ras.invalid = 1; > - ras.band_size = FT_MAX_GRAY_POOL / 8; > ras.num_gray_spans = 0; > ras.span_y = 0; > >
-- behdad http://behdad.org/ _______________________________________________ Freetype-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/freetype-devel
