Hi David,
On 3/26/07, David J. Andruczyk <[EMAIL PROTECTED]> wrote:
> I would NOT expect updating approx 10 labels perhaps 5-10 times per
> second (ie. when data chages) on a 1.8Ghz machine be so cpu hungry.
I made a tiny test program. This updates 50 labels at 100Hz with less
than 1% CPU on my machine.
--------------
/* compile with
* gcc -Wall try16.c `pkg-config gtk+-2.0 --cflags --libs`
*/
#include <gtk/gtk.h>
#include <stdlib.h>
const int NUM_LABELS = 50;
const int FPS = 100;
gboolean
update_labels (GtkWidget * label[])
{
int i;
for (i = 0; i < NUM_LABELS; i++)
{
char buf[256];
snprintf (buf, 256, "%d", rand ());
gtk_label_set_text (GTK_LABEL (label[i]), buf);
}
return TRUE;
}
int
main (int argc, char **argv)
{
GtkWidget *label[NUM_LABELS];
GtkWidget *win, *box;
int i;
gtk_init (&argc, &argv);
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (win, "destroy", G_CALLBACK (gtk_main_quit), NULL);
box = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (win), box);
for (i = 0; i < NUM_LABELS; i++)
{
label[i] = gtk_label_new (NULL);
gtk_box_pack_start (GTK_BOX (box), label[i], TRUE, TRUE, 0);
}
g_timeout_add (1000 / FPS, (GSourceFunc) update_labels, label);
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
-------------
I have Dapper still on my machine (gtk 2.8, amd64 2.7 GHz) which might
make some difference I guess. Though I think Pango has actually sped
up in 2.10.
I wonder if another reason might be resizing? Setting a label's text
can cause the label to change size, which might be forcing some
(large?) chunk of your interface to resize too. You could try using
gtk_widget_set_size_request() on your labels to make them a fixed
size.
John
_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list