gtk_init挂在一个线程中

时间:2014-10-28 06:07:52

标签: c++ gtk

我有一个c ++应用程序,必须在某个事件上创建一个基于gtk的弹出窗口。 目前,我在名为_displaytask的事件上分叉一个线程,该线程调用gtk_init()。 对gtk_init的调用挂起,永不返回。任何人都知道电话挂断的原因吗? gtk版本是gtk + -2.0。

void* Gui::displayTask(void *data)
{
    IDC_TRACE("Gui::display task tart");
    Gui* obj=(Gui *)data;
    if(obj!=NULL)
    {    
        if( ! g_thread_supported() )
            g_thread_init( NULL );

        /* Secure gtk */
        gdk_threads_init();
            gdk_threads_enter();
        IDC_TRACE("doing a gtk init");        
        gtk_init_check(0,0);
        obj->initialise();

控件达到gtk_init()但永远不会超过它以达到初始值。

2 个答案:

答案 0 :(得分:0)

http://www.bassi.io/articles/2014/08/27/gdk-and-threads/

您的订单有误。

应该是:

enter
init
main
leave

答案 1 :(得分:0)

Gui_display:04714807269964847148072699648 errno variable = 0

(进程:26070):Gtk-WARNING **:此进程当前正在运行setuid或setgid。 这不是GTK +的支持使用。您必须创建一个帮助器 程序而不是。有关详细信息,请参阅:

http://www.gtk.org/setuid.html

拒绝初始化GTK +。

我之前不知道。收到此错误信息。现在,唯一的方法就是在不同的过程中