Il Wed, 6 Sep 2017 16:08:07 +0000 Rúben Rodrigues <ruben...@live.com.pt> 
scrisse:

> ...
> void on_button_Util_Firmware_Update_clicked(GtkButton *button, gpointer 
> user_data)
> {
>      GtkLabel    *gLabel_Result;
>      FILE        *fp;
>      gchar        pcTmp[BUFSIZ];
> 
>      // Fecha a janela.
> gtk_widget_hide(GTK_WIDGET(gtk_widget_get_toplevel(GTK_WIDGET(button))));
> 
>      // Mostra a janela de espera.
>      gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(builder, 
> "Setup_Wait_dialog")));
>      sleep(10);
> ...

Hi Rúben,

this is the normal behavior in a single-threaded application: the
user interface is updated only when you release the CPU so that
the execution returns to the main loop:

https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#glib-The-Main-Event-Loop.description

The rule of thumb is: never block, i.e. never put a `sleep(10)` or
something equivalent in your code otherwise you'll get what you
requested, in that case an unresponsive interface for 10 seconds.

If you have a heavy process, fork to a working thread or decompose
it in a loop that can be run incrementally with an idle callback.

Ciao.
-- 
Nicola
_______________________________________________
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