Remember me

Lost Password?

Register now!


Who's Online
75 user(s) are online (58 user(s) are browsing Forums)

Members: 0
Guests: 75


Support us!


Report message:*

Re: Odyssey 1.23 progress

Subject: Re: Odyssey 1.23 progress
by kas1e on 2020/3/15 10:22:42

About png issues with png-animation images when swapped from 1.2 to 1.6 its as i expect tomorrow: when we compile with 1.2, then we inside of "if(data->surface)". When compile with 1.6, then we have no data->surface there, and fallback to to builtin animation.

Now need to understand why. Interesting that it happens only with animation pngs, not with pure ones, all other pngs loads and shows fine.

I do search in whole odysseys code just on "if(data->surface)", to see if it used anywhere else and it used in 4 classes: 2 for animation (tabtransferanimclass.cpp and transferanimclass.cpp) and 2 for icons (faciconclass.cpp and iconclass.cpp). As icons in the tabs, and icons in the hotlinks are works, it mean that "data->surface" thing works with libpng1.6, just by some reassons fail for those 2 anim classes.

Any ideas ?:)

The things i change in the Odyssey's code to compile it with 1.6, its only there (see commented at end of 2 strings, that what i added for 1.6):

https://github.com/kas1e/Odyssey/blob/ ... NGImageDecoderWK.cpp#L318

So for 1.2 its:


png_uint_32 width = png->width;
png_uint_32 height = png->height;

And for 1.6 its:


png_uint_32 width = png_get_image_width(png, info);
png_uint_32 height = png_get_image_height(png, info);

But then i even use the 1.6 way, and compile with 1.2png (and 1.2 includes, no 1.6 of course), and it also works. So if something to blame, its new png includes differences and/or classes itself.

EDIT2: i also checked today's webkit code and they use the same way for 1.6 build. It seems that issue can be inside of amiga-mui code, as png-decoder seems almost the same in today's webkit. At least in that png-decoder part.

Maybe something should be also changed in cairo parts of odyssey code ..

EDIT3: I added more debug printfs to the "DEFNEW" function of one of animation classes there: https://github.com/kas1e/Odyssey/blob/ ... ransferanimclass.cpp#L100

And when i compile with includes/lib from 1.2, then i go inside of "if(cairo_surface_status(data->surface) == CAIRO_STATUS_SUCCESS)". But when i compile with 1.6, then i go to "else", so fallback later in DEFMMETHOD(Draw) to default animation, as no data->surface of course.

By some reassons with 1.6 we have !=CAIRO_STATUS_SUCCESS. Maybe cairo_image_surface_create_from_png fail somehow

Powered by XOOPS 2.0 © 2001-2016 The XOOPS Project