Use gdk_threads_enter/gdk_threads_leave to ensure gtk multithread safe If the video player tries to play an unknown type file, it will enter the error_cb() function, which is called in another thread. Use gdk_threads_enter/gdk_threads_leave to ensure the safe of gtk multi-thread operation. Signed-off-by: Dongxiao Xu diff -ruN video-orig/src/video.c video/src/video.c --- video-orig/src/video.c 2010-10-15 16:07:26.522346398 +0800 +++ video/src/video.c 2010-10-15 16:25:51.780296717 +0800 @@ -96,6 +96,7 @@ { GtkWidget *dialog; + gdk_threads_enter(); dialog = gtk_message_dialog_new (data->window, GTK_DIALOG_NO_SEPARATOR, GTK_MESSAGE_ERROR, @@ -103,6 +104,7 @@ error->message); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); + gdk_threads_leave(); } /** @@ -606,7 +608,9 @@ gtk_widget_show_all (GTK_WIDGET (data->window)); + gdk_threads_enter(); gtk_main (); + gdk_threads_leave(); /** * Cleanup.