我是靠谱客的博主 爱笑玉米,最近开发中收集的这篇文章主要介绍gtk在多线程中的界面问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在编写一个gtk的多线程程序,在一个线程中需要弹出一个对话框(gtk_message_dialog),结果就Segment fault了,而且还会报在src/xcb_io.c有 process_responses,查了一下,果然是说 X isn't tread-safe,所以需要用 g_idle_add()来更新界面,使用后程序正常了。

简单来说就是这样:

 

gboolean dialog_example(gpointer data)

{

......;

return FALSE;

}

 

......;

gtk_add_idle(refresh_ui, data);

 

程序里的例子:

gboolean create_message_dialog(gchar* message)
{
    GtkWidget* dialog_box;
    dialog_box = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, message);
    gtk_dialog_run(GTK_DIALOG(dialog_box));
    gtk_widget_destroy(dialog_box);

    return FALSE;
}

 

.......;

g_idle_add(create_message_dialog, "data example");

 

最后

以上就是爱笑玉米为你收集整理的gtk在多线程中的界面问题的全部内容,希望文章能够帮你解决gtk在多线程中的界面问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部