幾則
gtk+
開發技巧 l
使用gtk_idle_add
實現非同步
signal。
最近開發桌面模組時,遇到乙個棘手的問題:向
directfb
的視窗管理器註冊了頂層視窗改變的事件。當前頂層視窗切換時,視窗管理器**我設定的**函式,在**函式中又要呼叫視窗管理器的函式,以獲取頂層視窗的資訊。整個過程是同步呼叫的,即直接呼叫函式,這會重入乙個視窗管理器函式,造成死鎖。
後來通過
gtk_idle_add
把同步操作轉換成非同步操作,解決了這個問題。在
window
上,sendmessage
和postmessage
分別對應於同步和非同步訊息。而在
gtk+
中,它所有的
signal
都是同步,要實現非同步的
signal
,最簡單的辦法就使用
gtk_idle_add。
l使用
gtk_quit_add
釋放資源。
在開發桌面模組時,遇到另外乙個問題:在登出時,退出桌面,這時要釋放一些資源,包括關閉一些
gtkwidget
。這些操作是在退出
gtk主迴圈後處理的,關閉
gtkwidget
時,總是會會死掉。看樣子,在此之前,
gtkwidget
已經被非正常關閉了。所謂非正常,是說資源被銷毀了,但
destroy
函式並沒有被呼叫。
後來發現,在退出主迴圈時,所有的
gui資源都被釋放掉了,
directfb
已經銷毀,之後再訪問
gui資源,後果無法預料。這樣的操作只能在主迴圈之退出前呼叫,要做到這一點,可以通過
gtk_quit_add
增加了乙個釋放函式,在退出主迴圈之前被自動呼叫。一切
ok了。 l
除錯用libtool
生成的可執行檔案。
用libtool
產生的可執行檔案,分為兩層,外層是乙個指令碼檔案,內層才是
elf檔案。
elf檔案放在
.lib
目錄中,在
linux
下,以.
開頭的檔案都是隱藏的,所以正常情況下看不到。一般都通過指令碼檔案執行,指令碼檔案會處理共享庫相關的一些設定,比如設定庫的路徑等等。
不知道內幕的新手,往往嘗試用
gdb去除錯指令碼檔案,面對莫名其妙的錯誤束手無策。即使知道
.lib
下的檔案才是真正的可執行檔案,去除錯那個
elf檔案仍然很麻煩,你必須要手工去設定庫的路徑。
其實不用那麼麻煩,指令碼檔案最終不是要執行真正的
elf檔案嗎?用
vim開啟那個檔案,我們發現它呼叫
exec
去執行真正的
elf檔案,把
exec
換成gdb
,然後再執行這個指令碼檔案,不用其它任何設定,自動進入偵錯程式。當然,你可以把這個檔案拷貝乙份,乙個用於正常執行,乙個用於除錯執行。
幾則GTK 開發技巧
幾則gtk 開發技巧 作者 li xianjing 2006 12 19 這兩周在開發 s應用程式,這是第一次用gtk 開發完整的應用程式。在這個過程中,學到一些小技巧,感覺挺有用的,這裡做個筆記。1.使用g object set data儲存上下文資訊。在win32下,通過setwindowlon...
Hyper V使用技巧幾則
在主機上安裝windows server 2008 r2 hyper v server 2008 r2的時候,幾點注意事項 1 在cmos設定中,啟用虛擬化與dep的支援。2 將主機硬碟劃分為2個分割槽,其中第1分割槽大小為30 50gb,第2分割槽為硬碟剩餘空間,用來儲存虛擬機器。所有分割槽使用n...
幾則gdb使用技巧
分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!幾則gdb 使用技巧 gdb的功能強大,與帶gui 的偵錯程式相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式設計師用的,不用做得傻瓜化。另外一方面它的命令太...