| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current Meson build files define built-in loader(s) as a dependency to
libgdkpixbuf, which has an undesired side effect of making them required
by GDK-Pixbuf's pkg-config file, which renders build systems that consume
this pkg-config file output bad build files.
This fixes this by:
-Make libgdkpixbuf depend on the objects that are built for those loader(s),
when the loader(s) are built into libgdkpixbuf.
-Include the external dependencies of these built-in loaders, if applicable,
such as libpng etc., as dependencies of libgdkpixbuf.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous code loaded all the frames into memory, which causes a memory
and CPU explosion when a large GIF was loaded.
From the existing code:
/* The below reflects the "use hell of a lot of RAM" philosophy of coding */
The updated code now generates each image on demand by storing the compressed
data and decompressing and combining with the last image. This uses more CPU
than the old method, but allows arbitraritly large GIFs to play.
The stop_after_first_frame hack that worked around this is no longer required
and removed. This hack didn't work for progressive loading.
If a GIF was played with frames out of order (e.g. in reverse) this would be
quite slow, as repeated rendering would occur. This seems unlikely in the
GIF use case but if it was a problem storing some key frames that would
normally be discarded would reduce this while not using too much memory.
A render cache could also be helpful in making a CPU / RAM trade-off for
small repeating GIFs that have few frames.
Fixes #101
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
We could have well found the headers and .lib's needed for libpng, so
only use the fallback wrapper for libpng when we couldn't find the
headers and .lib's.
|
|
|
|
|
| |
A corrupt file might have non valid UTF-8 data in the version, so we need to
escape it.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Common GdkPixbufAnimation implementations need to avoid warnings caused
by the recent deprecation of GTimeVal in GLib 2.62.
|
|
|
|
|
|
| |
We're measuring time deltas; the monotonic clock provides a better
resolution, and we don't have to care about things like microsecond
wrap-around or the clock going backwards mid-measurement.
|
|
|
|
|
|
|
|
|
|
|
| |
GLib 2.62 deprecated GTimeVal and GTime because they are not Y2038-safe.
Since we expose these types in our public API, we need to disable
warnings to avoid projects breaking horribly just by importing
gdk-pixbuf.h.
Sadly, GdkPixbufAnimation public types not only require GTimeVal in
virtual function signatures for loaders, but they also do not have any
room left in the class vtable for adding int64 variants.
|
| |
|
|
|
|
|
|
|
|
|
| |
There's no reason to use g_memmove() instead of memmove().
The `g_memmove()` wrapper was a symbol internal to GLib between 2004 and
2013, when it was exposed as a plain C pre-processor symbol around C90's
memmove(). Starting from GLib 2.61, using g_memmove() is going to raise
a deprecation warning from the compiler.
|
|
|
|
|
|
| |
The `install` argument is implicitly set to true when specifying the
`install_dir` argument. The argument is only used by Meson ≥ 0.50, and
ever there, it's only ever useful if paired to a configuration option.
|
|
|
|
|
|
|
| |
We should not rely on the installation prefix being part of PATH, but is
the location of the binary used by the build system.
Fixes: #126
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The "run once" initialisation of pixbuf modules shipped with gdk-pixbuf
itself would be skipped if an application was successfully calling
gdk_pixbuf_init_modules() first, as this would set the internal list of
file_formats to be non-NULL, and skip any initialisation of those
modules.
This fix makes sure that pixbuf modules shipped with gdk-pixbuf are
always initialised, regardless of whether gdk_pixbuf_init_modules()
successfully initialised an application provided one.
Fixes: fd1376b799e411f983ab6faa00b066a8007ad9a1
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Fail hard when the XPM file's advertised width or height does not match
the data contained within the file.
|
| |
|
|
|
|
| |
In the same way that libXpm sanity checks it.
|
|
|
|
| |
A laaaarge XPM file.
|
| |
|
|
|
|
|
| |
This is needed to build gtk+ and all dependencies from scratch on
Windows with meson subprojects.
|
| |
|