gpt4 book ai didi

haskell - gtk 窗口停止更新,即使应用程序看起来正在运行

转载 作者:行者123 更新时间:2023-12-02 18:24:14 24 4
gpt4 key购买 nike

我维护一个 gtk3(虽然是 gtk2hs 和 gi-gtk 的混合体)应用程序,它用作平铺窗口管理器的独立状态栏,称为 taffybar。

Taffybar 有一个长期存在的错误,发生某些情况会导致其中一个窗口(它可以有多个窗口,例如在多个显示器上显示时)完全停止更新 ( issue here )。我已经通过各种日志记录机制验证了应该更新窗口的代码实际上仍在继续运行。另外,如果 taffybar 显示在多个窗口上,则每次都会影响一个窗口 - 也就是说,挂起似乎只影响发生它的窗口,这排除了 UI 线程上发生任何奇怪的情况或类似的情况.

不幸的是,我没有一致的方法来重现该问题。更糟糕的是,我什至无法想出一种以编程方式检测问题的方法。话虽如此,出现这个问题相对容易,因为最近添加了新的图标加载机制,情况变得更糟(在最新版本中,它似乎每 5 分钟发生一次)。这提醒我,我应该提到的另一件事是,我相对确定该问题与 pixbufs 和图像显示有关,因为我从未见过在工作区图像模块未激活时出现该问题。

我讨厌在无法提供一致的方式来重现问题的情况下提出问题,但我只是不知道如何解决/调试这个问题。我很难想象我所描述的行为实际上是如何可能的。我希望有关该问题的特殊性质的一些信息可能足以让比我更了解 gtk 的人对问题可能是什么做出一些猜测。

为了使我的问题尽可能明确,我将如下表述:

什么可能导致 gtk 应用程序窗口挂起(停止更新)而不导致应用程序或 UI 线程崩溃,或影响应用程序创建的任何其他窗口?

编辑:此错误的一个更有趣的怪癖是,即使窗口停止更新,它仍然响应鼠标输入。

EDIT2:另一件值得注意的事情是,我偶尔会收到以下消息:

gtkicontheme.c:3956:proxy_pixbuf_destroy: assertion failed: (icon_info->proxy_pixbuf != NULL)

当我尝试在代码中销毁挂起的窗口时,我还收到以下消息:

Source ID 363524 was not found when attempting to remove it

我有时会从图标主题加载图标

最佳答案

我相信这个问题的原因很简单,一些 UI 更新没有在主 UI 线程上执行。我不能 100% 确定这一点,因为我从未能够重现。请参阅此评论了解更多详细信息:

https://github.com/taffybar/taffybar/issues/228#issuecomment-402591159

关于haskell - gtk 窗口停止更新,即使应用程序看起来正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50902489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com