I have built digikam on libpng15. There were two
simple fixes for:
if (setjmp(png_jmpbuf(png_ptr)))
The remaining errors involved:
digikamthumbnail.cpp:416:17: error: invalid use of
incomplete type 'png_info
{aka struct png_info_def}'
In file included from digikamthumbnail.cpp:96:0:
/usr/include/png.h:726:16: error: forward declaration of
'png_info {aka struct
png_info_def}'
digikamthumbnail.cpp:419:17: error: invalid use of
incomplete type 'png_info
{aka struct png_info_def}'
In file included from digikamthumbnail.cpp:96:0:
/usr/include/png.h:726:16: error: forward declaration of
'png_info {aka struct
png_info_def}'
digikamthumbnail.cpp:425:17: error: invalid use of
incomplete type 'png_info
{aka struct png_info_def}'
In file included from digikamthumbnail.cpp:96:0:
The above all involved references like:
if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
I know the 'info_ptr->color_type' is the problem.
That's wrong due to no
longer having direct access to the png struct. Looking at
other patches, it
looked like I could simply do:
if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
Since we have already made the call to:
png_get_IHDR(png_ptr, info_ptr, (png_uint_32
*) (&w32),
(png_uint_32 *) (&h32),
&bit_depth, &color_type,
&interlace_type, NULL, NULL);
color_type should already hold the color type. So is just
using 'color_type'
correct?
Digikam builds fine, but I need somebody to verify
the patch. Darrell, we will
need to add preprocessor checks for the libpng version. I
haven't done that yet.
The consolidated patch is attached for review.
Some days I get confused so easily. :) When you wrote "two simple fixes" did you
mean you used Tim's patch that has already been merged into GIT, derived your own
patch, a derived another patch in addition to Tim's?
Is the original patch still needed in addition to the png_jmpbuf patch(es)?
Darrell