• Ken Raeburn's avatar
    Cache XParseColor results in the X display info structure. · b8eea1d7
    Ken Raeburn authored
    With repeated lookups of foreground and background colors for multiple
    faces per frame, we issue a lot of redundant color name lookups to the
    X server, waiting every time for the response.  On a remote network
    with, say, 30ms round-trip time, this can add nearly a full second to
    creation of a new frame.
    * src/gtkutil.c (xg_check_special_colors): Call x_parse_color.
    * src/image.c (get_spec_bg_or_alpha_as_argb):
    (xpm_init_color_cache, xpm_lookup_color):
    * src/xfns.c (x_defined_color):
    * src/xterm.c (x_parse_color): New function; caches color names not
    starting with "#" in the display-info structure.
    (x_delete_display): Delete the cache content.
    * src/xterm.h (struct color_name_cache_entry): New type.
    (x_parse_color): Declare.
    (struct x_display_info): Add a new field for the cache.
xfns.c 206 KB