From: Mustafa Sahin (msahin@comu.edu.tr)
Date: Thu 31 Jul 2003 - 08:23:10 EEST
Bu tip durumlarda thread mantıgı kullanılır yani senin dongu icinde
yaptırdıgın islemi thread icinde yaptırırsın boylece diger
uygulamaların ve senin diger kodlarında arada bir calisir GTK da thread
var mı bilmiyorum ama bakman lazım.
sanırım soyle olması gerekiyor
gdk_threads_enter();
//senin dongun
gdk_threads_leave();
necati.demir@students.comu.edu.tr wrote:
>merhabalar,
>gtk+ ile bir pencere oluşturdum, üstüne butonu koydum. ardından butonun
>click sinyalini main2 fonksiyonuna yönlerdim. main2 fonksiyonun yaptığı iş
>durmadan(saniyede bir) konsola merhaba yazıyor. işte bu esnada oluşturduğum
>pencereyi bir daha kullanamıyorum. kitleniyor. ne yapmam lazım. kodlar
>aşağıda. pencere içine başka nesne koysam, onu da kullanamıyorum. yani
>pencere kitleniyor (sonsuz döngü nedeniyle).
>/***********Necati*********/
>#include <gtk/gtk.h>
>#include <time.h>
>#include <stdlib.h>
>GtkWidget *window;
>GtkWidget *button;
>struct timespec *req, *rem;
>void main2(GtkWidget * widget, gpointer gdata)
>{
>
> req = new timespec;
> rem = new timespec;
> req->tv_sec = 1;
> req->tv_nsec = rem->tv_nsec = rem->tv_sec = 0;
> while(1){
>
> g_print("merhaba\n");
> nanosleep (req, rem);
>
> }
>}
>/*****************/
>int main(gint argc,gchar *argv[])
>{
>
>
> gtk_init (&argc, &argv);
> window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
> button=gtk_button_new_with_label("TAMAM");
> gtk_container_add (GTK_CONTAINER (window), button);
>
>gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(main2),NULL)
>;
> gtk_widget_show (window);
> gtk_widget_show (button);
> gtk_main ();
> exit (0);
>
>}
>
>
>
>
>
>