函式fb_find_logo實現在檔案kernel/goldfish/drivers/video/logo/logo.c檔案中,如下所示:
extern
const
struct
linux_logo logo_linux_mono;
extern
const
struct
linux_logo logo_linux_vga16;
extern
const
struct
linux_logo logo_linux_clut224;
extern
const
struct
linux_logo logo_blackfin_vga16;
extern
const
struct
linux_logo logo_blackfin_clut224;
extern
const
struct
linux_logo logo_dec_clut224;
extern
const
struct
linux_logo logo_mac_clut224;
extern
const
struct
linux_logo logo_parisc_clut224;
extern
const
struct
linux_logo logo_sgi_clut224;
extern
const
struct
linux_logo logo_sun_clut224;
extern
const
struct
linux_logo logo_superh_mono;
extern
const
struct
linux_logo logo_superh_vga16;
extern
const
struct
linux_logo logo_superh_clut224;
extern
const
struct
linux_logo logo_m32r_clut224;
static
intnologo;
module_param(nologo, bool
, 0);
module_parm_desc(nologo, "disables startup logo"
);
/* logo's are marked __initdata. use __init_refok to tell
* modpost that it is intended that this function uses data
* marked __initdata.
*/const
struct
linux_logo * __init_refok fb_find_logo(
intdepth)
if(depth >= 4)
if(depth >= 8)
return
logo;
} export_symbol_gpl(fb_find_logo);
檔案開始宣告的一系列linux_logo結構體變數分別用來儲存kernel/goldfish/drivers/video/logo目錄下的一系列ppm或者pbm檔案的內容的。這些ppm或者pbm檔案都是用來描述第乙個開機畫面的。
全域性變數nologo是乙個型別為布林變數的模組引數,它的預設值等於0,表示要顯示第乙個開機畫面。在這種情況下,函式fb_find_logo就會根據引數depth的值以及不同的編譯選項來選擇第乙個開機畫面的內容,並且儲存在變數logo中返回給呼叫者。
這一步執行完成之後,第乙個開機畫面的內容就儲存在模組fbmem的全域性變數fb_logo的成員變數logo中了。這時候控制台的初始化過程也結束了,接下來系統就會執行切換控制台的操作。前面提到,當系統執行切換控制台的操作的時候,模組fbcon中的函式fbcon_switch就會被呼叫。在呼叫的過程中,就會執行顯示第乙個開機畫面的操作。
static
intfbcon_switch(
struct
vc_data *vc)
return
1;
}
由於前面在準備第乙個開機畫面的內容的時候,全域性變數logo_show的值被設定為fbcon_logo_draw,因此,接下來就會呼叫函式fb_show_logo來顯示第乙個開機畫面。在顯示之前,這個函式會將全域性變數logo_shown的值設定為fg_console,後者表示系統當前可見的控制台的編號。
函式fb_show_logo實現在檔案kernel/goldfish/drivers/video/fbmem.c中,如下所示:
intfb_show_logo(
struct
fb_info *info,
introtate)
這個函式呼叫另外乙個函式fb_show_logo_line來進一步執行渲染第乙個開機畫面的操作。
修改Android開機畫面
android系統開機動畫包括兩部分 開機顯示的 android 文字 android發光動畫。這篇文章說的開機動畫是第一種,下面開始正文!1.製作當前螢幕畫素的 模擬器預設為320 480 使用ps製作一張320 480的,儲存時選 儲存為 web 所用格式 然後在彈開的視窗上,預設 項選擇 pn...
Android開機畫面修改
第一屏 1.將大小為480 800的png轉換為mbn格式 ffmpeg i image.png f rawvideo pix fmt rgb565 oemlogo.mbn 2把生成的oemlogo.mbn檔案放到手機的指定資料夾,覆蓋原來的 資料夾的位置我們可以通過檢視 init.rc得到 cat...
Android系統的開機畫面顯示過程分析(2)
接下來我們主要關注函式fbcon init和fbcon switch的實現,系統就是通過它來初始化和切換控制台的。在初始化的過程中,會決定是否需要準備第乙個開機畫面的內容,而在切換控制台的過程中,會決定是否需要顯示第乙個開機畫面的內容。函式fbcon init的實現如下所示 static void ...