• Paul Eggert's avatar
    Clean up and simplify image-type setup · 41bf8653
    Paul Eggert authored
    This also fixes an unlikely hang involving a circular image
    * src/dispextern.h (struct image.type): Now pointer-to-const.
    * src/image.c (struct image_type.init) [!WINDOWSNT]: Omit.
    (IMAGE_TYPE_INIT): New macro.
    (image_types): Now a small array-of-const, not a pointer.
    (CACHE_IMAGE_TYPE): Remove; the code’s simpler without it.
    (ADD_IMAGE_TYPE): Remove this macro, replacing with ...
    (add_image_type): ... this equivalent function.  All uses changed.
    (define_image_type): Remove.  All uses removed.
    (valid_image_p): Use FOR_EACH_TAIL_SAFE to avoid Emacs hanging
    if the user creates a circular description of an image.
    (xbm_type, xpm_type, pbm_type, png_type, jpeg_type, tiff_type)
    (gif_type, imagemagick_type, svg_type, gs_type):
    Remove; now done by image_types.
    (init_imagemagick_functions): Remove decl of nonexistent function.
    (gs_clear_image): Remove; all uses replaced by image_clear_image.
    (initialize_image_type): New function, which captures a lot
    of the previously-scattered WINDOWSNT ifdefs.
    (lookup_image_type): Use it.
    (reset_image_types): Remove.  All uses removed.
    (syms_of_image): Don’t worry about ignoring image_types for
    pdumper, since it’s a constant now.
emacs.c 88 KB