diff options
author | 2023-06-09 21:31:26 +0000 | |
---|---|---|
committer | 2023-08-17 21:00:03 +0000 | |
commit | 4cc1a633a629097fe1c30b07bebc64d69c544356 (patch) | |
tree | 817c446a5ebfe2f1299b2ff750f5c4c3324b7906 /libs/input/SpriteController.h | |
parent | 49ac12fa801aa7b735662d7c69d4cf459d41615a (diff) |
Strong pointer fixes in libinputservice
Make components of libinputservice work with implicit conversions
disabled for strong pointers.
Bug: 278783893
Test: Build
Change-Id: Ibe1e97c845662113437635efd7a1e875e8407c64
Diffstat (limited to 'libs/input/SpriteController.h')
-rw-r--r-- | libs/input/SpriteController.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/libs/input/SpriteController.h b/libs/input/SpriteController.h index 1f113c045360..3144401257d3 100644 --- a/libs/input/SpriteController.h +++ b/libs/input/SpriteController.h @@ -109,7 +109,7 @@ public: * * Clients are responsible for animating sprites by periodically updating their properties. */ -class SpriteController : public MessageHandler { +class SpriteController : public RefBase { protected: virtual ~SpriteController(); @@ -117,6 +117,9 @@ public: using ParentSurfaceProvider = std::function<sp<SurfaceControl>(int /*displayId*/)>; SpriteController(const sp<Looper>& looper, int32_t overlayLayer, ParentSurfaceProvider parent); + /* Initialize the callback for the message handler. */ + void setHandlerController(const sp<SpriteController>& controller); + /* Creates a new sprite, initially invisible. */ virtual sp<Sprite> createSprite(); @@ -129,9 +132,12 @@ public: virtual void closeTransaction(); private: - enum { - MSG_UPDATE_SPRITES, - MSG_DISPOSE_SURFACES, + class Handler : public virtual android::MessageHandler { + public: + enum { MSG_UPDATE_SPRITES, MSG_DISPOSE_SURFACES }; + + void handleMessage(const Message& message) override; + wp<SpriteController> spriteController; }; enum { @@ -192,7 +198,7 @@ private: virtual ~SpriteImpl(); public: - explicit SpriteImpl(const sp<SpriteController> controller); + explicit SpriteImpl(const sp<SpriteController>& controller); virtual void setIcon(const SpriteIcon& icon); virtual void setVisible(bool visible); @@ -245,7 +251,7 @@ private: sp<Looper> mLooper; const int32_t mOverlayLayer; - sp<WeakMessageHandler> mHandler; + sp<Handler> mHandler; ParentSurfaceProvider mParentSurfaceProvider; sp<SurfaceComposerClient> mSurfaceComposerClient; @@ -260,7 +266,6 @@ private: void invalidateSpriteLocked(const sp<SpriteImpl>& sprite); void disposeSurfaceLocked(const sp<SurfaceControl>& surfaceControl); - void handleMessage(const Message& message); void doUpdateSprites(); void doDisposeSurfaces(); |