| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
The get_static_image() method for gifs is leaking an iterator and since
the iterator has a reference to the animation, this results in all
animation frames being leaked.
|
|
|
|
|
|
| |
Avoid overflows by using the checked multiplication macro for gsize.
Fixes: #132
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes build failure of:
../gdk-pixbuf/io-gif-animation.c: In function ‘gdk_pixbuf_gif_anim_iter_get_pixbuf’:
../gdk-pixbuf/io-gif-animation.c:418:17: error: implicit declaration of function ‘memset’ [-Werror=implicit-function-declaration]
418 | memset (gdk_pixbuf_get_pixels (anim->last_frame_data), 0, gdk_pixbuf_get_rowstride (anim->last_frame_data) * anim->height);
| ^~~~~~
../gdk-pixbuf/io-gif-animation.c:418:17: warning: incompatible implicit declaration of built-in function ‘memset’
../gdk-pixbuf/io-gif-animation.c:28:1: note: include ‘<string.h>’ or provide a declaration of ‘memset’
27 | #include "lzw.h"
+++ |+#include <string.h>
28 |
../gdk-pixbuf/io-gif-animation.c:443:33: warning: incompatible implicit declaration of built-in function ‘memset’
443 | memset (line, 0, (x_end - anim->last_frame->x_offset) * 4);
| ^~~~~~
../gdk-pixbuf/io-gif-animation.c:443:33: note: include ‘<string.h>’ or provide a declaration of ‘memset’
cc1: some warnings being treated as errors
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
io-gif.c:509:44: runtime error: index -2 out of bounds for type 'guchar [280]'
io-gif.c:510:44: runtime error: index -1 out of bounds for type 'guchar [280]'
io-gif-animation.c:422:68: runtime error: left shift of 249 by 24 places cannot be represented in type 'int'
https://bugzilla.gnome.org/show_bug.cgi?id=778584
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Update the logic to create the next frame.
When the new frame uses a buffer from the previous frame, in retain,
revert or dispose mode, try to reuse the allocated buffer from the
previous frame.
This reduces allocated memory by an order of magnitude.
For other cases when we can't use the old buffer, clean up the previous
buffers after the new frame has been handled.
https://bugzilla.gnome.org/show_bug.cgi?id=585425
|
| |
|
|
|
|
|
|
|
|
| |
This has the nice side-effect of giving us thread-safe get_type
functions, which might fix a few thumbnailing-related gnome-shell
segfaults that have been accumulating in bugzilla. See e.g.
https://bugzilla.redhat.com/show_bug.cgi?id=756343
|
| |
|
|
|
|
|
|
|
|
|
| |
Either g_type_register_static_simple (used by G_DEFINE_TYPE_EXTENDED)
and G_IMPLEMENT_INTERFACE use automatic variables for GTypeInfo and
GInterfaceInfo structs, while tutorials and source code often use
static variables. This commit consistently adopts the former method.
https://bugzilla.gnome.org/show_bug.cgi?id=600158
|
|
|
|
|
|
|
|
|
|
|
|
| |
2008-06-21 Johan Dahlin <jdahlin@async.com.br>
* *.[ch]: Include "config.h" instead of <config.h>
Command used:
find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
Rubberstamped by Mitch and Tim
svn path=/trunk/; revision=20669
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* io-ani-animation.c (gdk_pixbuf_ani_anim_iter_get_type)
(gdk_pixbuf_ani_anim_get_type):
* io-gif-animation.c (gdk_pixbuf_gif_anim_get_type)
(gdk_pixbuf_gif_anim_iter_get_type):
* gdk-pixbuf-loader.c (gdk_pixbuf_loader_get_type):
* gdk-pixbuf.c (gdk_pixbuf_get_type):
* gdk-pixbuf-animation.c (gdk_pixbuf_animation_get_type):
Intern type names before registering the type to avoid
unnecessary copies.
|
|
|
|
|
|
|
| |
2005-03-09 Matthias Clasen <mclasen@redhat.com>
* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite): Fix
a C99ism. (#169741, Morten Welinder)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2005-03-03 Matthias Clasen <mclasen@redhat.com>
Make the gif loader handle oom when loading
animations. (#168857, Tommi Komulainen)
* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite):
Handle oom by returning NULL.
* io-gif.c (gif_get_lzw): Return an error if composite
returns NULL.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fri Jun 27 03:56:59 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite): Make
it compile with C89 compilers.
Thu Jun 26 21:41:16 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktreeviewcolumn.c
(gtk_tree_view_column_cell_set_cell_data): only set "is_expander"
and "is_expanded" if the new value is different fromt he old one.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-06-22 Matthias Clasen <matthias@localhost.localdomain>
* io-gif.c (gif_get_extension): Reset block_count to 0 for all application extensions, otherwise the data blocks
of unknown extensions are not propertly skipped.
Second half of the fix for #106962, handle frames extending beyond the logical screen:
* io-gif.c (clip_frame): New helper function to clip a rectangle to the logical screen size of the gif.
(maybe_update): New helper function to call update_func only if the rectangle is not completely off-bounds.
(gif_get_lzw): Read frames extending outside the logical screen size, but be careful clip to the logical screen size
when operating on the composite pixbuf and when calling update_func.
(gif_init): Set the animation size to the logical screen size.
(gif_get_frame_info): Don't refuse to load images with frames extending beyond the logical screen size.
* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite): Be careful to clip all rectangles to the logical screen
size, also handle the fact that frames may be completely off-bounds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-05-19 Matthias Clasen <maclas@gmx.de>
Improve progressive loading from slow sources: (#107368)
* io-gif-animation.c (gdk_pixbuf_gif_anim_get_iter): Initialize
first_loop_slowness.
(gdk_pixbuf_gif_anim_iter_advance): Don't wrap during loading if
the datasource falls behind the speed of the display.
* io-gif-animation.h: Add a loading flag to GdkPixbufGifAnim and
first_loop_slowness to GdkPixbufGifAnimIter.
|
|
|
|
|
|
|
|
|
| |
2003-02-20 Matthias Clasen <maclas@gmx.de>
* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite):
Always clear the initial frame and "disposed" areas with
transparent pixels, no matter whether the frame has transparency
or not. (#55502)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile.am gdk-pixbuf-animation.c gdk-pixbuf-data.c
gdk-pixbuf-io.c gdk-pixbuf-io.h gdk-pixbuf-loader.c
gdk-pixbuf-loader.h gdk-pixbuf-private.h gdk-pixbuf.h
gdk-pixdata.c io-ani-animation.h io-ani.c io-bmp.c
io-gif-animation.c io-gif-animation.h io-gif.c io-ico.c
io-jpeg.c io-png.c io-pnm.c io-ras.c io-tga.c io-tiff.c
io-wbmp.c io-xbm.c io-xpm.c pixbufloader_ani.def
pixbufloader_bmp.def pixbufloader_gif.def pixbufloader_ico.def
pixbufloader_jpeg.def pixbufloader_png.def
pixbufloader_pnm.def pixbufloader_ras.def pixbufloader_tga.def
pixbufloader_tiff.def pixbufloader_wbmp.def
pixbufloader_xbm.def pixbufloader_xpm.def test-gdk-pixbuf.c
gdk-pixbuf-animation.h queryloaders.c: Support for separately
installed loaders. (#77486)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-12-13 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gdk-pixbuf-animation.c, gdk-pixbuf-loader.c, gdk-pixpuf.c,
io-gif-animation.c, io-gif.c, io-tiff.c, test-loaders.c: Remove
assorted G_OBJECT casts where unnecessary.
* gdk-pixbuf-loader.c: Call g_object_ref and g_object_unref
instead of gdk_pixbuf_animation_ref and gdk_pixbuf_animation_unref
resp.
* gdk-pixbuf-csource.c, io-bmp.c, io-gif-animation.c, io-ico.c,
io-jpeg.c, io-png.c, io-pnm.c, io-ras.c, io-tga.c, io-wbmp.c,
io-xbm.c, io-xpm.c, test-gdk-pixbuf.c: Dito for gdk_pixbuf_ref and
gdk_pixbuf_unref.
* Makefile.am, pixops/Makefile.am: Compile everything with
-DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED
* gdk-pixdata.c: Use g_ascii_strup() instead of g_strup().
* io-xpm.c: Use g_ascii_strcasecmp() instead of g_strcasecmp().
* demos/testpixbuf-drawable.c, demos/testpixbuf-save.c,
demos/testpixbuf-scale.c, demos/testpixbuf.c: Call g_object_ref
and g_object_unref instead of gdk_pixbuf_ref and gdk_pixbuf_unref
resp.
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-06-08 Havoc Pennington <hp@redhat.com>
* gdk-pixbuf-loader.c (gdk_pixbuf_loader_load_module): remove
bogus g_return_if_fail
* io-gif.c (gif_get_lzw): if delay time is 0 or smaller than
likely timeout resolution, set it to an arbitrarily-chosen short
delay.
Fixes bug #55953 from warmenhoven@yahoo.com
|
|
2001-05-04 Havoc Pennington <hp@redhat.com>
* configure.in: fix some shell typos
* gtk/gtkcolorsel.c (gtk_color_selection_destroy): warning fix
* gtk/gtkimage.c: handle animations
* gtk/gtkcheckbutton.c (gtk_check_button_size_request): request
border_width * 2, not just border_width
* gtk/gtkscale.c: add "format_value" signal to allow people
to override the way values are drawn.
(gtk_scale_get_value_size): fix width/height mistake,
and compute size from actual displayed text, not
from made-up text.
* gtk/gtktexttag.c (gtk_text_tag_class_init): fix return type in
signal registration
* tests/testtext.c: Add "Remove all tags" menu item for testing
* gtk/gtktextbuffer.c (gtk_text_buffer_remove_all_tags): implement
* demos/gtk-demo/main.c (main): add hack so we can find modules
without installing gtk
* demos/gtk-demo/textview.c (insert_text): demo font scaling
* gtk/gtkcellrenderertext.c: Add "scale" property (font scaling
factor)
(gtk_cell_renderer_text_set_property): remove some bogus
g_object_notify
* gtk/gtktexttag.c: add "scale" property which is a font scaling
factor
* gtk/gtktextlayout.c (add_text_attrs): add font scale attribute
to layout
* gtk/gtktextiter.c (gtk_text_iter_is_start): rename from
gtk_text_iter_is_first
2001-05-04 Havoc Pennington <hp@redhat.com>
* pixops/pixops.c (pixops_process): merge fix from stable: Patch
from hoshem@mel.comcen.com.au to fix nonzero X offsets. Fixes
bug #50371.
* gdk-pixbuf/pixops/pixops.c (pixops_composite_nearest): merge
from stable: Patch from OKADA Mitsuru <m-okada@fjb.co.jp> to fix
confusion of using "src" instead of "p".
(pixops_composite_color_nearest): Use a more accurate (and
correct, to begin with) compositing method. This cures checks
showing through on images with no alpha.
* gdk-pixbuf.c (gdk_pixbuf_fill): fix bug that left some trailing
bytes unfilled.
* gdk-pixbuf-io.h: fix UpdatedNotifyFunc to use signed ints
* gdk-pixbuf-loader.h (struct _GdkPixbufLoaderClass): Change
area_updated signal to use signed ints. Removed animation-related
signals.
* io-gif.c, io-gif-animation.h, io-gif-animation.c: Massive
rewrite action
* gdk-pixbuf-animation.c: Add GdkPixbufAnimationIter to abstract
all the pesky details. Remove old frame-based API. Make
GdkPixbufAnimation an abstract base class, derived by the loaders.
|