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

问题描述 投票:0回答:1

我正在尝试编写一个简短的C程序,这使得所有程序重新加载GTK + 2主题,就像LXAppearance一样,当你点击apply时。

看看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)

我究竟做错了什么?

gtk2
1个回答
0
投票

你还没有初始化GTK。至少,要使用GTK访问当前的X显示器,您需要在执行任何其他与X相关的操作之前调用gtk_init function

© www.soinside.com 2019 - 2024. All rights reserved.