cht電腦資訊gcin
adm Find login register

gcin-im-client 卡住 gnome-shell

lcp
1 gcin-im-client 卡住 gnome-shell
Promote 0 Bookmark 02014-01-10quote  

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 的提示視窗:提示視窗

eliu
2
Promote 0 Bookmark 02014-01-10quote  

有點不相信 XGetWindowAttributes 是 Window manager 提供的?這樣不就很沒效率,怎麼不是 X server 自己 keep Window attributes ?

這是為了克服之前 chrome 的問題,或許現在的 chrome 不需要。等有空來測試看看。

lcp
3
Promote 0 Bookmark 02014-01-10quote  

eliu

有點不相信 XGetWindowAttributes 是 Window manager 提供的?這樣不就很沒效率,怎麼不是 X server 自己 keep Window attributes ?

這是為了克服之前 chrome 的問題,或許現在的 chrome 不需要。等有空來測試看看。

這個問題只會出現在 empathy chat window 沒有先開啟的時候。如果我先開了 empathy chat window,一切就正常。不是很確定 WindowAttributes 是不是 gnome-shell 提供的,我猜跟 gnome-shell 開啟新的 window 有關。

eliu
4
Promote 0 Bookmark 02014-01-10quote  
lcp
5
Promote 0 Bookmark 02014-01-10quote  

eliu

最新的 chrome 已經不再需要 is_tip_window

謝謝!在新的 gcin 出來前我會先用 patch 把 is_tip_window 拿掉。

cht電腦資訊gcin
adm Find login register
views:12952