Hi all, I have a application that was build using the gtk-1.2 readhat 9.0. The application has two threads. The main thread is the display thread, while the second one updates the display on sometimes. When the secons thread updated the display , The following error occurs: --------------------------------- Thread2: update_alarm_report_window() <- function called Xlib: unexpected async reply (sequence 0x5c07)! ------------------------------------------------
I got over the problem by compiling with following options gcc -o out test.c `pkg-config --cflags --libs libgnome-2.0 libgnomeui-2.0 gthread` Thank to Frank W. Miller for listing out the compilation and link steps of the g_threads_init so clearly. This is exactly what works. After successful compilation, I could never bring up the application: In fact the main thread dumped with the following error at the very begning while showing the very first screen ---------------------------------------- Thread1: DH: create_login_window called DH: DEBUG1 GLib-GObject-CRITICAL **: gtype.c:1875: initialization assertion failed, use g_type_init() prior to this function GLib-GObject-CRITICAL **: file gobject.c: line 615 (g_object_new): assertion `G_TYPE_IS_OBJECT (object_type)' failed ------------------------------------------ So I added the following call g_type_init(); Then I got the following Error: ------------------------------------------ DH: create_login_window called DEBUG1 Gdk-CRITICAL **: file gdkvisual-x11.c: line 533 (gdk_screen_list_visuals): assertion `GDK_IS_SCREEN (screen)' failed ---------------------------------------- I explicitly checked the return value of the gdk_screen_list_visuals() function. It is NULL. Please HELP. Regards Rita The code is as follows: main (int argc, char* argv[]) { initialize_display(argc,argv) } int initialize_display(int argc, char* argv[]) { g_print("\nDH: initialize_display called"); g_type_init(); g_thread_init(NULL); gdk_init(&argc, &argv); gdk_threads_init(); gdk_threads_enter (); gtk_init (&argc, &argv); gnome_init ("nw_map", "0.1", argc, argv); gtk_rc_parse( "resource.rc" ); // Create the login window create_login_window(NULL); <<<<<<<<<<<-------------GUI Function Defined below gtk_main(); gdk_threads_leave (); } void create_login_window (GtkWidget *prev_win) { GtkWidget *login_window; GtkWidget *fixed1; GtkWidget *login_label; GtkWidget *login_entry; GtkWidget *password_label; GtkWidget *password_entry; GtkWidget *login_button; GtkWidget *login_cancel_button; GList *gl; g_print("\n create_login_window called"); if (prev_win != NULL) gtk_widget_destroy (prev_win); gl=NULL; login_window = gtk_window_new (GTK_WINDOW_DIALOG); gtk_object_set_data (GTK_OBJECT (login_window), "login_window", login_window); gtk_window_set_title (GTK_WINDOW (login_window), _("LOGIN")); gtk_window_set_position (GTK_WINDOW (login_window), GTK_WIN_POS_CENTER); gtk_window_set_modal (GTK_WINDOW (login_window), TRUE); gtk_window_set_default_size(GTK_WINDOW(login_window),360,250); fixed1 = gtk_fixed_new (); gtk_widget_ref (fixed1); gtk_object_set_data_full (GTK_OBJECT (login_window), "fixed1", fixed1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fixed1); gtk_container_add (GTK_CONTAINER (login_window), fixed1); login_label = gtk_label_new (_("Login")); gtk_widget_ref (login_label); gtk_object_set_data_full (GTK_OBJECT (login_window), "login_label", login_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (login_label); gtk_fixed_put (GTK_FIXED (fixed1), login_label, 56, 56); gtk_widget_set_uposition (login_label, 56, 56); gtk_widget_set_usize (login_label, 35, 16); login_entry = gtk_entry_new_with_max_length (30); gtk_widget_ref (login_entry); gtk_object_set_data_full (GTK_OBJECT (login_window), "login_entry", login_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (login_entry); gtk_fixed_put (GTK_FIXED (fixed1), login_entry, 136, 56); gtk_widget_set_uposition (login_entry, 136, 56); gtk_widget_set_usize (login_entry, 158, 22); password_label = gtk_label_new (_("Password")); gtk_widget_ref (password_label); gtk_object_set_data_full (GTK_OBJECT (login_window), "password_label", password_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (password_label); gtk_fixed_put (GTK_FIXED (fixed1), password_label, 56, 120); gtk_widget_set_uposition (password_label, 56, 120); gtk_widget_set_usize (password_label, 55, 16); password_entry = gtk_entry_new_with_max_length (15); gtk_widget_ref (password_entry); gtk_object_set_data_full (GTK_OBJECT (login_window), "password_entry", password_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (password_entry); gtk_fixed_put (GTK_FIXED (fixed1), password_entry, 136, 120); gtk_widget_set_uposition (password_entry, 136, 120); gtk_widget_set_usize (password_entry, 158, 22); gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE); login_button = gtk_button_new_with_label (_("Login")); gtk_widget_ref (login_button); gtk_object_set_data_full (GTK_OBJECT (login_window), "login_button", login_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (login_button); gtk_fixed_put (GTK_FIXED (fixed1), login_button, 88, 208); gtk_widget_set_uposition (login_button, 88, 208); gtk_widget_set_usize (login_button, 80, 22); login_cancel_button = gnome_stock_button (GNOME_STOCK_BUTTON_CANCEL); gtk_widget_ref (login_cancel_button); gtk_object_set_data_full (GTK_OBJECT (login_window), "login_cancel_button", login_cancel_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (login_cancel_button); gtk_fixed_put (GTK_FIXED (fixed1), login_cancel_button, 200, 208); gtk_widget_set_uposition (login_cancel_button, 200, 208); gtk_widget_set_usize (login_cancel_button, 80, 22); gl=g_list_append(gl,login_entry); gl=g_list_append(gl,password_entry); gl=g_list_append(gl,login_window); gtk_signal_connect (GTK_OBJECT (login_button), "clicked", GTK_SIGNAL_FUNC (on_login_ok_button_clicked), gl); gtk_signal_connect (GTK_OBJECT (login_cancel_button), "clicked", GTK_SIGNAL_FUNC (on_login_cancel_button_clicked), gl ); g_print("\nDH: DEBUG1"); gtk_widget_show(login_window); //<<<<<<<<<<<------------------FAILS HERE g_print("\nDH: DEBUG2"); } The make uses the following : gcc -Wall -DMIBTXTDIR=\"/usr/local/etc\" -DMIBDIR=\"/usr/local/share/gxsnmp/mibs\" -g -o .libs/nhms -rdynamic -rdynamic -DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/orbit-2.0 -I/usr/include/libbonobo-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/linc-1.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libart-2.0 -I/usr/include/libbonoboui-2.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/X11R6/include -I/usr/include/libxml2 -pthread -Wl,--export-dynamic -o .libs/nhms ../APP_NHMS/ display_handler.o data_handler.o -lgnome -lgnomesupport -lesd -laudiofile -lm -L/usr/lib -L/usr/X11R6/lib -lgnorba -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lnsl -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -ldl -lXi -lXext -lX11 -lm -ldl -lXi -lXext -lX11 -lm -ldl -ldl -lXi -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm /usr/lib/libgtk.so -ldl -lXi -lXext -lX11 -lm /usr/lib/libgdk.so -ldl -lXi -lXext -lX11 -lm /usr/lib/libgmodule.so -ldl /usr/lib/libglib.so -ldl -lXi -lXext -lX11 -lm -L/usr/lib/mysql -lmysqlclient -lpthread /usr/local/lib/libgxsnmp.so /usr/local/lib/libsmi.so /usr/local/lib/libgxsnmpapp.so /usr/local/lib/libgxsnmpdb.so -lgnomeui-2 -lSM -lICE -lbonoboui-2 /usr/lib/libxml2.so -lm -lz -lgnomecanvas-2 -lgnome-2 -lart_lgpl_2 -lpangoft2-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lbonobo-2 -lgconf-2 -lgnomevfs-2 -lbonobo-activation -lORBit-2 -lm /usr/lib/liblinc.so -lgmodule-2.0 -ldl -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -Wl,--rpath -Wl,/usr/local/lib creating app PLEASE HELP _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list