Merge remote-tracking branch 'aosp/upstream-main' into merge-from-upstream Test: presubmit Bug: 379812682 * aosp/upstream-main: drm_hwcomposer: fix null deref happening when clearing callback drm_hwcomposer: Add libdisplay-info dependency and update tar with library Change-Id: I654fff5e0093497f99dcb8c1443e7cf752d4566c
diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 9dfe3d3..a9e2242 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile
@@ -41,10 +41,10 @@ USER ${RUN_USER} # Install aospless package (produced by GloDroid/aospext) -RUN wget -P ${USER_HOME} https://gitlab.freedesktop.org/-/project/5/uploads/70643bd1c4d419015b9930b7aadc9cfd/aospless_drm_hwcomposer_arm64.tar.xz && \ +RUN wget -P ${USER_HOME} https://gitlab.freedesktop.org/-/project/5/uploads/97f99b51143107ba02a51cf1c0ddb542/aospless_drm_hwcomposer_arm64.tar.xz && \ cd ${USER_HOME} && \ sha256sum aospless_drm_hwcomposer_arm64.tar.xz && \ - (echo 640e0d0e04761c804db69f880e0c0957699babdbe82c72c507177b860d878569 aospless_drm_hwcomposer_arm64.tar.xz | sha256sum --check) && \ + (echo dae29adb121f51e59c95fb7b29e0f7aed5b2983d10c7f1d5f1b9fd551c4bbb47 aospless_drm_hwcomposer_arm64.tar.xz | sha256sum --check) && \ tar xf aospless_drm_hwcomposer_arm64.tar.xz && ln -s ../drm_hwcomposer/ ${USER_HOME}/aospless/src # Create project path
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b045da8..9f3d022 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml
@@ -26,7 +26,7 @@ - cd .. - rm -f aospless_drm_hwcomposer_arm64.tar.xz - rm -rf aospless/* - - wget https://gitlab.freedesktop.org/-/project/5/uploads/70643bd1c4d419015b9930b7aadc9cfd/aospless_drm_hwcomposer_arm64.tar.xz + - wget https://gitlab.freedesktop.org/-/project/5/uploads/97f99b51143107ba02a51cf1c0ddb542/aospless_drm_hwcomposer_arm64.tar.xz - tar xf aospless_drm_hwcomposer_arm64.tar.xz - rm -rf aospless/src - ln -s ../drm-hwcomposer/ aospless/src @@ -44,7 +44,7 @@ - cd .. - rm -f aospless_drm_hwcomposer_arm64.tar.xz - rm -rf aospless/* - - wget https://gitlab.freedesktop.org/-/project/5/uploads/70643bd1c4d419015b9930b7aadc9cfd/aospless_drm_hwcomposer_arm64.tar.xz + - wget https://gitlab.freedesktop.org/-/project/5/uploads/97f99b51143107ba02a51cf1c0ddb542/aospless_drm_hwcomposer_arm64.tar.xz - tar xf aospless_drm_hwcomposer_arm64.tar.xz - cd - - make -j$(nproc) -k -f .ci/Makefile
diff --git a/hwc2_device/HwcDisplay.cpp b/hwc2_device/HwcDisplay.cpp index 60861af..3469c85 100644 --- a/hwc2_device/HwcDisplay.cpp +++ b/hwc2_device/HwcDisplay.cpp
@@ -1047,20 +1047,21 @@ if (type_ == HWC2::DisplayType::Virtual) { return HWC2::Error::None; } + if (!vsync_worker_) { + return HWC2::Error::NoResources; + } vsync_event_en_ = HWC2_VSYNC_ENABLE == enabled; - + std::optional<VSyncWorker::VsyncTimestampCallback> callback = std::nullopt; if (vsync_event_en_) { DrmHwc *hwc = hwc_; hwc2_display_t id = handle_; // Callback will be called from the vsync thread. - auto callback = [hwc, id](int64_t timestamp, uint32_t period_ns) { + callback = [hwc, id](int64_t timestamp, uint32_t period_ns) { hwc->SendVsyncEventToClient(id, timestamp, period_ns); }; - vsync_worker_->SetTimestampCallback(callback); - } else { - vsync_worker_->SetTimestampCallback(std::nullopt); } + vsync_worker_->SetTimestampCallback(std::move(callback)); return HWC2::Error::None; }
diff --git a/meson.build b/meson.build index 8cfbbc8..97474e2 100644 --- a/meson.build +++ b/meson.build
@@ -45,6 +45,12 @@ '-DUSE_IMAPPER4_METADATA_API', ] +dep_libdisplay_info = dependency('display_info', required : false) +if dep_libdisplay_info.found() + common_cpp_flags += '-DHAS_LIBDISPLAY_INFO' + deps += dep_libdisplay_info +endif + hwc2_cpp_flags = [ '-DHWC2_INCLUDE_STRINGIFICATION', '-DHWC2_USE_CPP11',