1. 程式人生 > >spice-gtk-0.35關於usb方面的程式碼

spice-gtk-0.35關於usb方面的程式碼

spice-gtk-0.35是裡面有一個spicy的測試工具,可以直接用來遠端連線虛擬機器代替remote-viewer,但是spicy遠端連線的虛擬機器卻不能自動載入插入的usb裝置,下面簡單解析一下spice-gtk-0.35中關於usb的程式碼

usb-device-manager.c

這個檔案和spice-session是關聯的,session啟動的時候起來一個spice-channel,其實就是usb-device-manager.c(這個類似一個channel-display.c)裡面的,裡面有一個spice_usb_device_manager_add_dev這個函式就是channel檢測到有usb之後執行的任務。函式裡面有一個判斷 if (priv->auto_connect)如果這個執行,就會自動連線usb的,如果不執行那就需要在上面的input的menu選單裡面點選usb設定選擇usb以後才能重定向usb     spice_usb_device_manager_add_dev最後發射:

    g_signal_emit(self, signals[DEVICE_ADDED], 0, device);訊號傳輸給usb-deivce-widget.c裡面

usb-device-widget.c

在這個裡面收到訊號的時候就會在這個widget類中新增這個usb的按鈕,如果說上面不執行auto_connect那就需要你點選按鈕以後才會將usb重定向,如果上面是,那就直接給你按鈕按下去了,自動重定向連線usb。

spicy.c

這個裡面是主視窗,主視窗上面的選單欄裡面input可以點開usb的設定,點開的操作就會執行usb-device-widget-new建立一個新的widget來控制usb的連線和斷開。