summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-04-07 20:04:48 -0700
committer Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-04-07 20:04:48 -0700
commit7f83865f6fa01d85f491484242b904ddd354ca1b (patch)
treeffb4d203a6fb785c872863b8f81ca61ad17aab35
parentc127ba1b5c51e19546dbda092c5d43ffd9559785 (diff)
parent02eff543a4f684fe5d7e53efaed469ffc8dbe536 (diff)
Merge cherrypicks of ['googleplex-android-review.googlesource.com/32720584'] into 25Q2-release.
Change-Id: I6bd50ba259eb473edda3846901987acb39bb8f94
-rw-r--r--libs/gui/SurfaceControl.cpp4
-rw-r--r--libs/gui/include/gui/Choreographer.h7
-rw-r--r--libs/gui/include/gui/SurfaceControl.h6
3 files changed, 8 insertions, 9 deletions
diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp
index 50877f8c56..1eb9b87c3c 100644
--- a/libs/gui/SurfaceControl.cpp
+++ b/libs/gui/SurfaceControl.cpp
@@ -194,7 +194,7 @@ const std::string& SurfaceControl::getName() const {
return mName;
}
-sp<Choreographer> SurfaceControl::getChoreographer() {
+std::shared_ptr<Choreographer> SurfaceControl::getChoreographer() {
if (mChoreographer) {
return mChoreographer;
}
@@ -203,7 +203,7 @@ sp<Choreographer> SurfaceControl::getChoreographer() {
ALOGE("%s: No looper prepared for thread", __func__);
return nullptr;
}
- mChoreographer = sp<Choreographer>::make(looper, getHandle());
+ mChoreographer = std::make_shared<Choreographer>(looper, getHandle());
status_t result = mChoreographer->initialize();
if (result != OK) {
ALOGE("Failed to initialize choreographer");
diff --git a/libs/gui/include/gui/Choreographer.h b/libs/gui/include/gui/Choreographer.h
index b436af1eb3..c632098fb9 100644
--- a/libs/gui/include/gui/Choreographer.h
+++ b/libs/gui/include/gui/Choreographer.h
@@ -79,6 +79,9 @@ public:
};
static Context gChoreographers;
+ explicit Choreographer(const sp<Looper>& looper, const sp<IBinder>& layerHandle = nullptr)
+ EXCLUDES(gChoreographers.lock);
+
void postFrameCallbackDelayed(AChoreographer_frameCallback cb,
AChoreographer_frameCallback64 cb64,
AChoreographer_vsyncCallback vsyncCallback, void* data,
@@ -111,10 +114,6 @@ public:
private:
Choreographer(const Choreographer&) = delete;
- explicit Choreographer(const sp<Looper>& looper, const sp<IBinder>& layerHandle = nullptr)
- EXCLUDES(gChoreographers.lock);
- friend class sp<Choreographer>;
- friend AChoreographer* AChoreographer_create();
void dispatchVsync(nsecs_t timestamp, PhysicalDisplayId displayId, uint32_t count,
VsyncEventData vsyncEventData) override;
diff --git a/libs/gui/include/gui/SurfaceControl.h b/libs/gui/include/gui/SurfaceControl.h
index 91a422d155..344b957ba7 100644
--- a/libs/gui/include/gui/SurfaceControl.h
+++ b/libs/gui/include/gui/SurfaceControl.h
@@ -26,7 +26,6 @@
#include <android/gui/ISurfaceComposerClient.h>
-#include <gui/Choreographer.h>
#include <ui/FrameStats.h>
#include <ui/PixelFormat.h>
#include <ui/Region.h>
@@ -37,6 +36,7 @@ namespace android {
// ---------------------------------------------------------------------------
+class Choreographer;
class IGraphicBufferProducer;
class Surface;
class SurfaceComposerClient;
@@ -82,7 +82,7 @@ public:
const std::string& getName() const;
// TODO(b/267195698): Consider renaming.
- sp<Choreographer> getChoreographer();
+ std::shared_ptr<Choreographer> getChoreographer();
sp<IGraphicBufferProducer> getIGraphicBufferProducer();
@@ -134,7 +134,7 @@ private:
PixelFormat mFormat = PIXEL_FORMAT_NONE;
uint32_t mCreateFlags = 0;
uint64_t mFallbackFrameNumber = 100;
- sp<Choreographer> mChoreographer;
+ std::shared_ptr<Choreographer> mChoreographer;
};
}; // namespace android