openbox的异常,虽然标题是这个,但未必是openbox的bug
但肯定的是与openbox关系比较密切
项目中出现一件灵异事件:
当程序(基于qt)起来之后,有时,主界面会发生列表框里快速闪,频率超过3次/秒,感觉很快
注意:是有时,目前还未完全掌握规律,开机的时候比较容易出现,其他时间段暂时不清除是否会出现
此时会导致,触摸屏按其他地方是无效的,当然如果手速足够快的人,可以触发其他按键
此时,根本停不下来,持续时间久了之后,可能会导致整个UI卡死。
还有一个奇怪现象,此时若把自己的程序kill掉,然后再重启,貌似就正常了。
ps:由于涉及到项目,又是动态效果,因此只能文字描述下
先排除下自己代码,经过走查是可以排除
此时的现象,是焦点切换,通过qt定时判断 焦点是否在窗体上:
QWidget* p = QApplication::focusWidget();
的确,也会抓到 p==0 的情况
说明,当出现闪烁的时候,qt程序认为焦点是丢失了的,至于是否又抢回来了,这个不好判断,也有可能”第三方“设置回来了
因此,猜测:
1. 是否有其他后台进程,来抢占焦点?
这个猜测有点不靠谱,就是,抢焦点就抢好了,抢了之后无非就没有焦点,不会导致一直闪烁。
另外,关键是我们的应用程序又没有 “当失去焦点的时候,重新设回”的操作。
通过xdotool查看当前焦点所在进程,不管怎么操作,都是指向我们的进程,说明不可能有其他进程后台来“夺”焦点。
那跟openbox又有什么关系?
来看下openbox是什么,干什么的。
Openbox 是运行于搭载X11的GNU/Linux上的轻巧窗口管理器。是个窗口管理器,管理哪些窗口在前面后面之类,当然也涉及到一些焦点
另外,
如果出现以上现象
kill openbox
然后,现象就好了
关系肯定有的,但不知道为什么会导致这个现象?