| |||||||
adm | Find | login register |
OS: openSUSE 13.1 GNOME: 3.10.2 GNOME 3 以後 gnome-shell 與 IM 軟體 empathy 整合,讓使用者可以直接在 pop-up 提示視窗打字,左鍵按一下提示視窗才跳出真正的 empathy 聊天視窗,但是在按下提示視窗的時候會造成整個桌面卡住。我發現 gnome-shell 是卡在 gcin-im-client.cpp:703 gcin_im_client_focus_out2() 裡的 handle_read(),而 gcin (server) 則是在 eve.cpp: 1619 gcin_FocusOut() 裡的 is_tip_window() 等待 WindowAttributes。由於 gnome-shell 負責處理視窗,所以跟 gcin 造成了 deadlock 我把 is_tip_window() 移掉以後可以暫時避掉這個問題,但不確定這是不是個好解法。 gnome-shell 的提示視窗: | |||||||||||||
有點不相信 XGetWindowAttributes 是 Window manager 提供的?這樣不就很沒效率,怎麼不是 X server 自己 keep Window attributes ? 這是為了克服之前 chrome 的問題,或許現在的 chrome 不需要。等有空來測試看看。 | |||||||||||||
這個問題只會出現在 empathy chat window 沒有先開啟的時候。如果我先開了 empathy chat window,一切就正常。不是很確定 WindowAttributes 是不是 gnome-shell 提供的,我猜跟 gnome-shell 開啟新的 window 有關。 | |||||||||||||
最新的 chrome 已經不再需要 is_tip_window | |||||||||||||
謝謝!在新的 gcin 出來前我會先用 patch 把 is_tip_window 拿掉。 |
| |||||||
adm | Find | login register |