diff options
Diffstat (limited to 'libs/hwui/DeviceInfo.cpp')
-rw-r--r-- | libs/hwui/DeviceInfo.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/libs/hwui/DeviceInfo.cpp b/libs/hwui/DeviceInfo.cpp index e4162875279c..40cc73a82846 100644 --- a/libs/hwui/DeviceInfo.cpp +++ b/libs/hwui/DeviceInfo.cpp @@ -16,6 +16,8 @@ #include <DeviceInfo.h> +#include "Properties.h" + #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> @@ -29,6 +31,19 @@ namespace android { namespace uirenderer { +static constexpr android::DisplayInfo sDummyDisplay { + 1080, // w + 1920, // h + 320.0, // xdpi + 320.0, // ydpi + 60.0, // fps + 2.0, // density + 0, // orientation + false, // secure? + 0, // appVsyncOffset + 0, // presentationDeadline +}; + static DeviceInfo* sDeviceInfo = nullptr; static std::once_flag sInitializedFlag; @@ -47,20 +62,26 @@ void DeviceInfo::initialize() { void DeviceInfo::initialize(int maxTextureSize) { std::call_once(sInitializedFlag, [maxTextureSize]() { sDeviceInfo = new DeviceInfo(); - sDeviceInfo->loadDisplayInfo(); + sDeviceInfo->mDisplayInfo = DeviceInfo::queryDisplayInfo(); sDeviceInfo->mMaxTextureSize = maxTextureSize; }); } void DeviceInfo::load() { - loadDisplayInfo(); + mDisplayInfo = queryDisplayInfo(); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); } -void DeviceInfo::loadDisplayInfo() { +DisplayInfo DeviceInfo::queryDisplayInfo() { + if (Properties::isolatedProcess) { + return sDummyDisplay; + } + + DisplayInfo displayInfo; sp<IBinder> dtoken(SurfaceComposerClient::getBuiltInDisplay(ISurfaceComposer::eDisplayIdMain)); - status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &mDisplayInfo); + status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &displayInfo); LOG_ALWAYS_FATAL_IF(status, "Failed to get display info, error %d", status); + return displayInfo; } } /* namespace uirenderer */ |