如何修复GTK + 2中的“断言'GDK_IS_SCREEN(屏幕)'失败”错误

时间:2019-04-26 20:36:00

标签: gtk2

我正在尝试编写一个简短的C程序,使所有程序在单击Apply时都重新加载GTK + 2主题,就像LXAppearance一样。

通过查看LXAppearance的源代码,我发现了一个可以执行此操作的函数。在gtk-theme-switch中也发现了相同的功能(没有仅适用于LXSession的if-else)。

这是作为单独程序编写的代码:

#include <gtk/gtk.h>

int main()
{
    GdkEventClient event;
    event.type = GDK_CLIENT_EVENT;
    event.send_event = TRUE;
    event.window = NULL;
    event.message_type = gdk_atom_intern("_GTK_READ_RCFILES", FALSE);
    event.data_format = 8;
    gdk_event_send_clientmessage_toall((GdkEvent*)&event);
}

运行程序时出现以下错误:

(process:3428): Gdk-CRITICAL **: 21:38:49.599: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
Segmentation fault (core dumped)

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您尚未初始化GTK。至少,要使用GTK访问当前的X显示器,您需要先调用gtk_init function,然后再执行其他与X相关的事情。