Gtkmm E MultiThread atualizando um Label

1. Gtkmm E MultiThread atualizando um Label

Ahmad
praise

(usa CentOS)

Enviado em 25/08/2009 - 08:46h

Olá turma eu estou desenvolvento um sistema que na parte superior tem um relogio que fica sendo executado, eu estou usando Gtkmm e para ficar atualizando um Label do cronometro eu estou usando a api pthread, mas o Label não atualizado, ele atualiza apenas quando eu passo o mause em cima do botao que estartou o relogio, e depois disso eu recebo o erro de falha de segmentação. Alguem tem uma dica ou uma solução melhor, o meu codigo em C++ segue abaixo, obrigado, eu estou muito pecisando de ajuda.

################################################################################################

#include <iostream>
#include <time.h>
#include <pthread.h>
#include <gtkmm.h>
#include <glibmm/timer.h>

using namespace std;

time_t start, end;
tm * ptm;
bool *executa;
char timetoShow[20];

static Gtk::Label *label;

char* cronometroRun()
{
time (&end);
time_t tempoGasto = end - start;
ptm = gmtime ( &tempoGasto );
sprintf(timetoShow, "%2d:%02d", ptm->tm_min, ptm->tm_sec );

return timetoShow;
}

void* run(void *arg){
while(true){
label->set_label(cronometroRun());
}
}
void iniciar(Gtk::Label *msg)
{
printf("Iniciar o Cronometro...");
label = msg;
pthread_t tid;
pthread_create(&tid, NULL, run,msg);
}
int main(int argc, char** argv)
{
Gtk::Main main(argc,argv);
Gtk::Window janela;
janela.set_title("Teste");
janela.set_border_width(4);
janela.resize (300, 200);

Gtk::Table tabela (3,2);
janela.add(tabela);

Gtk::Button botao("Executar...");
Gtk::Label msg("Espeando...");
botao.signal_clicked().connect(sigc::bind(sigc::ptr_fun(iniciar), &msg));

tabela.attach( botao , 1, 2, 1, 2 );
tabela.attach( msg , 1, 2, 2, 3 );


janela.show_all();
Gtk::Main::run(janela);
printf("Gloria Deus...");

return 0;

}

################################################################################################


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts