On Tue, 2007-04-17 at 13:56 +0530, prabahar k wrote: > Hi > > Thanks Tristan for u r suggestion for using g_thread_create. > Thanks James for u r nice code. > > > Also If we want to retain the p_thread_create() in the program then > its enough to change the compile time flags to include > `pkg-config --cflags --libs gtk+-2.0 gthread-2.0` > Its working fine. > > Here is the code: > /**************************gtk19mod.c************************ > compile: > gcc -g -o gtk19mod gtk19mod.c `pkg-config --cflags --libs gtk+-2.0 > gthread-2.0` > ************************************************************/ > > #include <gtk/gtk.h> > #include <glib.h> > #include <pthread.h> > pthread_t thrd1; > > void destroy (GtkWidget *widget, gpointer data) > { > gtk_main_quit (); > } > > void *argument_thread (void *args) > { > > > for (;(*(gboolean *)args);) > { > /* sleep a while */ > g_usleep(1000000); > g_print("Inside thread"); > } > g_thread_exit (NULL);
OK, but don't mix the threading api's. remove the g_thread_exit(). For portability and stability - I always use glib's threading apis when using GTK/GDK. James, > > return NULL; > } > > int main (int argc, char *argv[]) > { > GtkWidget *window; > > gboolean b_run_flag = TRUE; > > /* init threads */ > g_print("Going thread init\n"); > > g_thread_init (NULL); > gdk_threads_init (); > > gdk_threads_enter (); > > gtk_init(&argc, &argv); > > g_print("After init\n"); > /* create a window */ > > window = gtk_window_new (GTK_WINDOW_TOPLEVEL); > gtk_signal_connect (GTK_OBJECT (window), "destroy", > GTK_SIGNAL_FUNC (destroy), NULL); > gtk_container_set_border_width (GTK_CONTAINER (window), 10); > gtk_widget_show (window); > > > pthread_create (&thrd1, NULL, argument_thread, (void*)&b_run_flag); > > > gtk_main (); > gdk_threads_leave (); > > b_run_flag = FALSE; > return 0; > } > /************End*******************************************/ > > > On 4/17/07, James Scott Jr <[EMAIL PROTECTED]> wrote: > > > > On Mon, 2007-04-16 at 18:09 +0530, prabahar k wrote: > > > > hi i am trying to use a threaded GTK program. While running theprogram it > > gives segmentation fault and it seem to be anthread init problem. is there > > any thing i am missing? Pleasegive u r comments. > > the code > > is:/***********************gtk19.c**************************/#include > > <stdio.h>#include <stdlib.h>#include <unistd.h>#include <time.h>#include > > <gtk/gtk.h>#include <glib.h>#include <pthread.h> > > pthread_t thrd1; > > void destroy (GtkWidget *widget, gpointer data){ gtk_main_quit ();} > > void *argument_thread (void *args){gdk_threads_enter (); for (;;) { > > /* sleep a while */ > > > > > > sleep(1); g_print("Inside thread"); > > > > }gdk_threads_leave (); return NULL;} > > int main (int argc, char *argv[]){ GtkWidget *window; > > /* init threads */ > > g_thread_init (NULL); gdk_threads_init (); /* init gtk */ > > gdk_threads_enter ();/*[Line :70] */ gtk_init(&argc, &argv); > > g_print("After init\n"); > > /* create a window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); > > gtk_signal_connect (GTK_OBJECT (window), "destroy", > > GTK_SIGNAL_FUNC (destroy), NULL); > > gtk_container_set_border_width (GTK_CONTAINER (window), 10); > > gtk_widget_show (window); > > pthread_create (&thrd1, NULL, argument_thread, NULL); > > gtk_main (); gdk_threads_leave (); > > return 0;}/**************************************************/ > > I compile it asgcc -Wall -g gtk19.c -o base -lpthread `pkg-config --cflags > > gtk+-2.0``pkg-config --libs gtk+-2.0` `gtk-config --cflags --libs gthread` > > > > --- > > prabahar > > _______________________________________________gtk-app-devel-list mailing > > [EMAIL PROTECTED]://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > > > > > > > > prabahar, > > > > I just modified your code to show the needed changes. Notice that the > > gdk_threads_enter/leave is removed from the thread and the thread is created > > using glib's api. I also updated the includes and compile command. > > > > James, > > > > > > > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list