icons: Remove caching
This commit is contained in:
		@ -240,7 +240,7 @@ static void render_button_in_context(EekRenderer *self,
 | 
				
			|||||||
    if (icon_name) {
 | 
					    if (icon_name) {
 | 
				
			||||||
        gint scale = priv->scale_factor;
 | 
					        gint scale = priv->scale_factor;
 | 
				
			||||||
        cairo_surface_t *icon_surface =
 | 
					        cairo_surface_t *icon_surface =
 | 
				
			||||||
            eek_renderer_get_icon_surface (self, icon_name, 16 / priv->scale,
 | 
					            eek_renderer_get_icon_surface (icon_name, 16 / priv->scale,
 | 
				
			||||||
                                           scale);
 | 
					                                           scale);
 | 
				
			||||||
        if (icon_surface) {
 | 
					        if (icon_surface) {
 | 
				
			||||||
            gint width = cairo_image_surface_get_width (icon_surface);
 | 
					            gint width = cairo_image_surface_get_width (icon_surface);
 | 
				
			||||||
@ -258,6 +258,7 @@ static void render_button_in_context(EekRenderer *self,
 | 
				
			|||||||
                                       foreground.blue,
 | 
					                                       foreground.blue,
 | 
				
			||||||
                                       foreground.alpha);
 | 
					                                       foreground.alpha);
 | 
				
			||||||
            cairo_mask_surface (cr, icon_surface, 0.0, 0.0);
 | 
					            cairo_mask_surface (cr, icon_surface, 0.0, 0.0);
 | 
				
			||||||
 | 
					            cairo_surface_destroy(icon_surface);
 | 
				
			||||||
            cairo_fill (cr);
 | 
					            cairo_fill (cr);
 | 
				
			||||||
            cairo_restore (cr);
 | 
					            cairo_restore (cr);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@ -834,30 +835,20 @@ eek_renderer_create_pango_layout (EekRenderer  *renderer)
 | 
				
			|||||||
    return pango_layout_new (priv->pcontext);
 | 
					    return pango_layout_new (priv->pcontext);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Surfaces returned from this are cached and must not be freed
 | 
					 | 
				
			||||||
cairo_surface_t *
 | 
					cairo_surface_t *
 | 
				
			||||||
eek_renderer_get_icon_surface (EekRenderer *renderer,
 | 
					eek_renderer_get_icon_surface (const gchar *icon_name,
 | 
				
			||||||
                               const gchar *icon_name,
 | 
					 | 
				
			||||||
                               gint size,
 | 
					                               gint size,
 | 
				
			||||||
                               gint scale)
 | 
					                               gint scale)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    GError *error = NULL;
 | 
					    GError *error = NULL;
 | 
				
			||||||
    cairo_surface_t *surface;
 | 
					    cairo_surface_t *surface = gtk_icon_theme_load_surface (gtk_icon_theme_get_default (),
 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_RENDERER(renderer), NULL);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    surface = g_hash_table_lookup (priv->icons, icon_name);
 | 
					 | 
				
			||||||
    if (!surface) {
 | 
					 | 
				
			||||||
        surface = gtk_icon_theme_load_surface (gtk_icon_theme_get_default (),
 | 
					 | 
				
			||||||
                                                            icon_name,
 | 
					                                                            icon_name,
 | 
				
			||||||
                                                            size,
 | 
					                                                            size,
 | 
				
			||||||
                                                            scale,
 | 
					                                                            scale,
 | 
				
			||||||
                                                            NULL,
 | 
					                                                            NULL,
 | 
				
			||||||
                                                            0,
 | 
					                                                            0,
 | 
				
			||||||
                                                            &error);
 | 
					                                                            &error);
 | 
				
			||||||
        g_hash_table_insert (priv->icons, g_strdup(icon_name), surface);
 | 
					
 | 
				
			||||||
    if (surface == NULL) {
 | 
					    if (surface == NULL) {
 | 
				
			||||||
        g_warning ("can't get icon surface for %s: %s",
 | 
					        g_warning ("can't get icon surface for %s: %s",
 | 
				
			||||||
                   icon_name,
 | 
					                   icon_name,
 | 
				
			||||||
@ -865,7 +856,7 @@ eek_renderer_get_icon_surface (EekRenderer *renderer,
 | 
				
			|||||||
        g_error_free (error);
 | 
					        g_error_free (error);
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
    return surface;
 | 
					    return surface;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -82,8 +82,7 @@ void             eek_renderer_render_button       (EekRenderer     *renderer,
 | 
				
			|||||||
                                                gdouble          scale,
 | 
					                                                gdouble          scale,
 | 
				
			||||||
                                                gboolean         rotate);
 | 
					                                                gboolean         rotate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cairo_surface_t *eek_renderer_get_icon_surface(EekRenderer     *renderer,
 | 
					cairo_surface_t *eek_renderer_get_icon_surface(const gchar     *icon_name,
 | 
				
			||||||
                                                const gchar     *icon_name,
 | 
					 | 
				
			||||||
                                                gint             size,
 | 
					                                                gint             size,
 | 
				
			||||||
                                                gint             scale);
 | 
					                                                gint             scale);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user