يبقى ConfigStore HAL في AOSP لدعم أقسام المورّدين القديمة. على الأجهزة التي تعمل بالإصدار Android 10 والإصدارات الأحدث، يقرأ surfaceflinger أولاً خصائص النظام. إذا لم يتم تحديد خاصية نظام لعنصر ضبط في SurfaceFlingerProperties.sysprop، سيعود surfaceflinger إلى ConfigStore HAL.
إنشاء العلامات وسمات النظام
تحتوي كل علامة إصدار في ConfigStore على سمة نظام مطابقة، كما هو موضّح في الجدول التالي. للحصول على تفاصيل حول هذه السمات، يُرجى الاطّلاع على
frameworks/native/services/surfaceflinger/sysprop/
SurfaceFlingerProperties.sysprop.
| علامات الإصدار | سمات النظام |
|---|---|
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
|
ro.surface_flinger.force_hwc_copy_for_virtual_displays
|
TARGET_HAS_HDR_DISPLAY
|
ro.surface_flinger.has_HDR_display
|
TARGET_HAS_WIDE_COLOR_DISPLAY
|
ro.surface_flinger.has_wide_color_display
|
NUM_FRAMEBUFFER_SURFACE_BUFFERS
|
ro.surface_flinger.max_frame_buffer_acquired_buffers
|
MAX_VIRTUAL_DISPLAY_DIMENSION
|
ro.surface_flinger.max_virtual_display_dimension
|
PRIMARY_DISPLAY_ORIENTATION
|
ro.surface_flinger.primary_display_orientation
|
PRESENT_TIME_OFFSET_FROM_VSYNC_NS
|
ro.surface_flinger.present_time_offset_from_vsync_ns
|
TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK
|
ro.surface_flinger.running_without_sync_framework
|
SF_START_GRAPHICS_ALLOCATOR_SERVICE
|
ro.surface_flinger.start_graphics_allocator_service
|
TARGET_USE_CONTEXT_PRIORITY
|
ro.surface_flinger.use_context_priority
|
USE_VR_FLINGER
|
ro.surface_flinger.use_vr_flinger
|
VSYNC_EVENT_PHASE_OFFSET_NS
|
ro.surface_flinger.vsync_event_phase_offset_ns
|
SF_VSYNC_EVENT_PHASE_OFFSET_NS
|
ro.surface_flinger.vsync_sf_event_phase_offset_ns
|
استخدام SurfaceFlingerProperties
توضّح الأمثلة التالية كيفية استخدام مكتبة SurfaceFlingerProperties والسمة ro.surface_flinger.vsync_event_phase_offset_ns الخاصة بـ Surface Flinger.
للاستعلام عن قيمة السمة، استخدِم api_name كاسم الدالة.
أدرِج SurfaceFlingerProperties في ملف الإصدار على النحو التالي:
cc_binary {
name: "cc_client",
srcs: ["baz.cpp"],
shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
name: "JavaClient",
srcs: ["foo/bar.java"],
libs: ["SurfaceFlingerProperties"],
}
يستخدم مقتطف الرمز التالي بلغة Java السمة ro.surface_flinger.vsync_event_phase_offset_ns للنظام:
import android.sysprop.SurfaceFlingerProperties;
...
static void foo() {
...
boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true);
...
}
...
يستخدم مقتطف الرمز التالي بلغة C++ السمة ro.surface_flinger.vsync_event_phase_offset_ns للنظام:
#include <SurfaceFlingerProperties.sysprop.h>
using namespace android::sysprop;
...
void bar() {
...
bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true);
...
}
...