I've been running xfce4-battery-plugin with this patch for a week and
noticed no increase in resource usage.

As far as I understand it, creating a new GtkCssProvider every second
made it hard for libgtk to process new requests to change the
progressbar style.

Please let me know if this patch needs to be improved.

-- 
Best regards,
Ivan
--- -	2017-11-27 15:28:44.041233353 +0300
+++ panel-plugin/battery.c	2017-11-27 15:28:14.908550361 +0300
@@ -104,6 +104,7 @@
     GtkLabel        *acfan;
     GtkLabel        *temp;
     GtkWidget        *image;
+    GtkCssProvider  *css_provider;
 } t_battmon;
 
 typedef struct
@@ -608,11 +609,10 @@
     gchar *css = g_strdup_printf("progressbar progress { background-color: %s; background-image: none; }",
 #endif
                                  gdk_rgba_to_string(color));
-    GtkCssProvider *css_provider = gtk_css_provider_new ();
-    gtk_css_provider_load_from_data (css_provider, css, strlen(css), NULL);
+    gtk_css_provider_load_from_data (battmon->css_provider, css, strlen(css), NULL);
     gtk_style_context_add_provider (
         GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (battmon->battstatus))),
-        GTK_STYLE_PROVIDER (css_provider),
+        GTK_STYLE_PROVIDER (battmon->css_provider),
         GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
     g_free(css);
 #else
@@ -674,6 +674,7 @@
     battmon->ebox = gtk_box_new(xfce_panel_plugin_get_orientation(battmon->plugin), 0);
 
     battmon->battstatus = gtk_progress_bar_new();
+    battmon->css_provider = gtk_css_provider_new ();
 
     gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(battmon->battstatus), 0.0);
     gtk_orientable_set_orientation(GTK_ORIENTABLE(battmon->battstatus),
_______________________________________________
Pkg-xfce-devel mailing list
Pkg-xfce-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-xfce-devel

Reply via email to