From: Timm Bäder Date: Tue, 28 May 2019 08:14:52 +0000 (+0200) Subject: icontheme: optimize icon_uri_is_symbolic as well X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~908 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a0947232fa7a6f9bf3c2375131c28b5dca6c5d16;p=gtk4.git icontheme: optimize icon_uri_is_symbolic as well --- diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c index 0fab4eddd6..8389e4acce 100644 --- a/gtk/gtkicontheme.c +++ b/gtk/gtkicontheme.c @@ -1638,13 +1638,28 @@ icon_name_is_symbolic (const gchar *icon_name, return FALSE; } -static gboolean -icon_uri_is_symbolic (const gchar *icon_name) +static inline gboolean +icon_uri_is_symbolic (const gchar *icon_name, + int icon_name_len) { - return g_str_has_suffix (icon_name, "-symbolic.svg") - || g_str_has_suffix (icon_name, "-symbolic-ltr.svg") - || g_str_has_suffix (icon_name, "-symbolic-rtl.svg") - || g_str_has_suffix (icon_name, ".symbolic.png"); + if (icon_name_len < 0) + icon_name_len = strlen (icon_name); + + if (icon_name_len > strlen ("-symbolic.svg")) + { + if (strcmp (icon_name + icon_name_len - strlen ("-symbolic.svg"), "-symbolic.svg") == 0 || + strcmp (icon_name + icon_name_len - strlen (".symbolic.png"), ".symbolic.png") == 0) + return TRUE; + } + + if (icon_name_len > strlen ("-symbolic-ltr.svg")) + { + if (strcmp (icon_name + icon_name_len - strlen ("-symbolic.ltr.svg"), "-symbolic-ltr.svg") == 0 || + strcmp (icon_name + icon_name_len - strlen ("-symbolic.rtl.svg"), "-symbolic-rtl.svg") == 0) + return TRUE; + } + + return FALSE; } static GtkIconInfo * @@ -3489,7 +3504,7 @@ gtk_icon_info_is_symbolic (GtkIconInfo *icon_info) if (icon_info->icon_file) icon_uri = g_file_get_uri (icon_info->icon_file); - is_symbolic = (icon_uri != NULL) && (icon_uri_is_symbolic (icon_uri)); + is_symbolic = (icon_uri != NULL) && (icon_uri_is_symbolic (icon_uri, -1)); g_free (icon_uri); return is_symbolic;