Both of the attached modifications of the program appears to work properly every
time.

So is my problem that the label isn't actually ready to be drawn on the first
call to sleep() for some reason?

-- 
MELVILLE THEATRE ~ Real D 3D Digital Cinema ~ www.melvilletheatre.com
www.creekfm.com - FIFTY THOUSAND WATTS of POW WOW POWER!


#include <gtk/gtk.h>

void subroutine(GtkWidget *button, gpointer data);
gboolean sleeper(GtkWidget *subwindow);

int main( int argc, char *argv[])
        {
        GtkWidget *window, *button;
        gtk_init(&argc, &argv);
        window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(G_OBJECT(window), "destroy", 
G_CALLBACK(gtk_main_quit), NULL);
        button=gtk_button_new_from_stock(GTK_STOCK_OK);
        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(subroutine), 
NULL);
        gtk_container_add(GTK_CONTAINER(window),button);
        gtk_widget_show_all(window);
        gtk_main();
        return 0;
        }

void subroutine(GtkWidget *button, gpointer data)
        {
        gint x;
        GtkWidget *subwindow, *vbox,*label;
        subwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(subwindow), 400, 50);
        vbox=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(subwindow),vbox);
        label=gtk_label_new("Label");
        gtk_container_add(GTK_CONTAINER(vbox),label);
        gtk_widget_show_all(subwindow);
        for (x=0; x < 3000; x++)
                {
                while (g_main_context_iteration(NULL, FALSE));
                
g_idle_add_full(G_PRIORITY_LOW,(GSourceFunc)sleeper,(gpointer)subwindow,NULL);
                }
        gtk_widget_destroy(subwindow);
        return;
        }
        

gboolean sleeper(GtkWidget *subwindow)
        {
        g_usleep(1000);
        return FALSE;
        }


#include <gtk/gtk.h>

void subroutine(GtkWidget *button, gpointer data);
void sleeper();

int main( int argc, char *argv[])
        {
        GtkWidget *window, *button;
        gtk_init(&argc, &argv);
        window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(G_OBJECT(window), "destroy", 
G_CALLBACK(gtk_main_quit), NULL);
        button=gtk_button_new_from_stock(GTK_STOCK_OK);
        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(subroutine), 
NULL);
        gtk_container_add(GTK_CONTAINER(window),button);
        gtk_widget_show_all(window);
        gtk_main();
        return 0;
        }

void subroutine(GtkWidget *button, gpointer data)
        {
        gint x;
        GtkWidget *subwindow, *vbox,*label;
        subwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(subwindow), 400, 50);
        vbox=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(subwindow),vbox);
        label=gtk_label_new("Label");
        gtk_container_add(GTK_CONTAINER(vbox),label);
        gtk_widget_show_all(subwindow);
        for (x=0; x < 3000; x++)
                sleeper();
        gtk_widget_destroy(subwindow);
        return;
        }
        

void sleeper()
        {
        while (g_main_context_iteration(NULL, FALSE));
        g_usleep(1000);
        return;
        }
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to