0 前言
Android主要包括Primary(主显)、External(外显)和Virtual(虚拟显示,例如WFD)三大类显示设备,其中Primary和External都由物理显示设备来充当。当存在多个物理显示设备时,如何确定哪个为主显呢?本文将对该问题进行深入分析。
Tips:系统UI布局以主显为主,外显和虚拟显示只能在此基础上进行拉伸等转换之再显示,分辨率和主显不一致时,显示效果通常不如主显。
1 HWC2
定义显示设备时通过mType代表其类型:
namespace impl {
class Display : public HWC2::Display {
...
private:
DisplayType mType;
}
// @file: frameworks/native/services/surfaceflinger/DisplayHardware/HWC2.h
类型定义如下:
enum class DisplayType : int32_t {
Invalid = HWC2_DISPLAY_TYPE_INVALID,
Physical = HWC2_DISPLAY_TYPE_PHYSICAL,
Virtual = HWC2_DISPLAY_TYPE_VIRTUAL,
};
// @file: hardware/libhardware/include/hardware/hwcomposer2.h
可见只包含