summaryrefslogtreecommitdiff
path: root/libs/input/SpriteController.h
diff options
context:
space:
mode:
author Prabir Pradhan <prabirmsp@google.com> 2023-06-09 21:31:26 +0000
committer Prabir Pradhan <prabirmsp@google.com> 2023-08-17 21:00:03 +0000
commit4cc1a633a629097fe1c30b07bebc64d69c544356 (patch)
tree817c446a5ebfe2f1299b2ff750f5c4c3324b7906 /libs/input/SpriteController.h
parent49ac12fa801aa7b735662d7c69d4cf459d41615a (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.h19
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();