如何解决JNI 中的 GSettings 信号
我正在尝试通过 GSettings 来监听 Gnome 的系统设置,特别是 gtk-theme
中的 org.gnome.desktop.interface
键。我面临的问题是,如果更改发生在我注册处理程序的应用程序之外,则不会触发任何更改信号。
我用来注册处理程序的代码:
void settingsChanged(GSettings *settings,char *key,gpointer user_data) {
std::cout << "Settings have been changed" << std::endl;
}
...
auto settings = g_settings_new("org.gnome.desktop.interface");
g_signal_connect(G_OBJECT(settings),"changed::gtk-theme",G_CALLBACK(settingsChanged2),(gpointer) this);
g_settings_get_string(settings,"gtk-theme");
如果我在应用程序中更改 gtk-theme
的值,它将成功调用信号处理程序“settingsChanged”,但例如如果我使用命令行 gsettings set org.gnome.desktop.interface gtk-theme Adwaita
更改值,则不会调用处理程序。
我应该注意到处理程序注册是使用 JNI 从 Java 调用的。有没有我遗漏的线程问题?我以前从未使用过信号甚至 Glib,并且可以在文档中找到有关此主题的任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。