gtk_events_pending () retorna FALSE com eventos ainda pendentes

Estou trabalhando em um aplicativo que possui um botão iniciar e parar. Esses botões bloqueiam a interface do usuário e, por vários motivos, não consigo gerar um thread.

Eu tenho mostrado uma tela de trabalho quando esses botões são pressionados, usando:

while (gtk_events_pending()) gtk_main_iteration();

o que garante que a tela de trabalho seja carregada antes do início / início das operações.

Atualizei recentemente para o GTK + 3.8.6 e parece quegtk_events_pending() agora está quebrado. Agora, às vezes a janela aparece, mas a imagem na janela não está lá. Às vezes a janela nem aparece.

A função em questão se parece com:

gtk_widget_show(working_screen);
while (gtk_events_pending()) gtk_main_iteration();

long_running_blocking_function();

Se eu fizer algo como:

int busy_wait = 0;
gtk_widget_show(working_screen);
while (gtk_events_pending() || busy_wait < 5) 
{
    gtk_main_iteration();
    if (!gtk_events_pending()) ++busy_wait;
}

long_running_blocking_function();

...Funciona bem. No entanto, eu sei que é apenas uma questão de tempo até que o busy_wait precise ser mais longo, então eu gostaria de encontrar uma resposta melhor. Alguém já experimentou esse problema? Alguém tem alguma idéia de como eu posso resolver isso?

questionAnswers(1)

yourAnswerToTheQuestion