Hi David, On Fri, 25 May 2012 18:24:59 -0700 (PDT) you wrote: > Hi guys, > > This might be a really dumb one... > It's certainly a very common "failure to grasp a basic concept" issue. > --- code tidbits --- > > Loop: > > memset (text, 0, 100); > sprintf (text, "some very interesting data", interesting_arguments); > textbuffer1 = gtk_text_view_get_buffer (GTK_TEXT_VIEW (data->textview1)); > gtk_text_buffer_get_end_iter (textbuffer1, &end); > gtk_text_buffer_insert (textbuffer1, &end, text, -1); > gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (data->textview1), &end, 0.0, FALSE, 0, 0); > > End Loop > > --- end of code --- > > Any idea what I've done wrong? > You have not understood that EVERYTHING done by Gtk (and all such tool kits) gets buffered for performance reasons. Your program is hogging the CPU doing its work, part of which is to populate the text buffer, and never letting Gtk have a chance to update the display. If you want the display to respond, you MUST let the Gtk main loop get a slot. Try re-writing your code into a form like: g_idle_add ( my_worker_callback, NULL ); Gboolean my_worker_callback(gpointer data) { do_some_small_amount_of_stuff(); sprintf (text, "some very interesting data", interesting_arguments); textbuffer1 = gtk_text_view_get_buffer (GTK_TEXT_VIEW(data->textview1)); gtk_text_buffer_get_end_iter (textbuffer1, &end); gtk_text_buffer_insert (textbuffer1, &end, text, -1); gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (data->textview1),&end, 0.0, FALSE, 0, 0); return more_to_do_yet; } (You'll need to check the syntax details, I've only thrown together a basic shape) In other words, don't use a loop construct - instead register the contents of the loop as an idle task and let the Gtk main loop be your loop. HTH, Rob _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list