Delay em aplicações GTK+

Se desenvolve aplicações em GTK+, certamente já sentiu necessidade de colocar um pequeno delay dentro de um callback. O problema é que se o delay demorar mais que 10ms, o usuário pode perceber e a interface vai travar, o que não é nada agradável.

A solução abaixo é bem simples e permite que seu código fique parado por (pelo menos) dados milisegundos, sem parar o loop principal do GTK+. Está em C, mas usar a mesma técnica em outra linguagem é trivial:

static gboolean __nonblock_cb(gpointer data)
{
gtk_main_quit();
return FALSE;
}

void nonblock_sleep(guint msec)
{
g_timeout_add(msec, (GSourceFunc)__nonblock_cb, NULL);
gtk_main();
}

Leave a Comment