Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b24190c9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Set draw drop shadow for vector pointer icons when sprite is set." into main

parents 58304fb0 acbe18d0
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -202,11 +202,13 @@ void SpriteController::doUpdateSprites() {
                && update.state.surfaceDrawn;
        bool becomingVisible = wantSurfaceVisibleAndDrawn && !update.state.surfaceVisible;
        bool becomingHidden = !wantSurfaceVisibleAndDrawn && update.state.surfaceVisible;
        if (update.state.surfaceControl != NULL && (becomingVisible || becomingHidden
                || (wantSurfaceVisibleAndDrawn && (update.state.dirty & (DIRTY_ALPHA
                        | DIRTY_POSITION | DIRTY_TRANSFORMATION_MATRIX | DIRTY_LAYER
                        | DIRTY_VISIBILITY | DIRTY_HOTSPOT | DIRTY_DISPLAY_ID
                        | DIRTY_ICON_STYLE))))) {
        if (update.state.surfaceControl != NULL &&
            (becomingVisible || becomingHidden ||
             (wantSurfaceVisibleAndDrawn &&
              (update.state.dirty &
               (DIRTY_ALPHA | DIRTY_POSITION | DIRTY_TRANSFORMATION_MATRIX | DIRTY_LAYER |
                DIRTY_VISIBILITY | DIRTY_HOTSPOT | DIRTY_DISPLAY_ID | DIRTY_ICON_STYLE |
                DIRTY_DRAW_DROP_SHADOW))))) {
            needApplyTransaction = true;

            if (wantSurfaceVisibleAndDrawn
@@ -235,13 +237,15 @@ void SpriteController::doUpdateSprites() {
                        update.state.transformationMatrix.dtdy);
            }

            if (wantSurfaceVisibleAndDrawn
                    && (becomingVisible
                            || (update.state.dirty & (DIRTY_HOTSPOT | DIRTY_ICON_STYLE)))) {
            if (wantSurfaceVisibleAndDrawn &&
                (becomingVisible ||
                 (update.state.dirty &
                  (DIRTY_HOTSPOT | DIRTY_ICON_STYLE | DIRTY_DRAW_DROP_SHADOW)))) {
                Parcel p;
                p.writeInt32(static_cast<int32_t>(update.state.icon.style));
                p.writeFloat(update.state.icon.hotSpotX);
                p.writeFloat(update.state.icon.hotSpotY);
                p.writeBool(update.state.icon.drawNativeDropShadow);

                // Pass cursor metadata in the sprite surface so that when Android is running as a
                // client OS (e.g. ARC++) the host OS can get the requested cursor metadata and
@@ -388,12 +392,13 @@ void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) {
    uint32_t dirty;
    if (icon.isValid()) {
        mLocked.state.icon.bitmap = icon.bitmap.copy(ANDROID_BITMAP_FORMAT_RGBA_8888);
        if (!mLocked.state.icon.isValid()
                || mLocked.state.icon.hotSpotX != icon.hotSpotX
                || mLocked.state.icon.hotSpotY != icon.hotSpotY) {
        if (!mLocked.state.icon.isValid() || mLocked.state.icon.hotSpotX != icon.hotSpotX ||
            mLocked.state.icon.hotSpotY != icon.hotSpotY ||
            mLocked.state.icon.drawNativeDropShadow != icon.drawNativeDropShadow) {
            mLocked.state.icon.hotSpotX = icon.hotSpotX;
            mLocked.state.icon.hotSpotY = icon.hotSpotY;
            dirty = DIRTY_BITMAP | DIRTY_HOTSPOT;
            mLocked.state.icon.drawNativeDropShadow = icon.drawNativeDropShadow;
            dirty = DIRTY_BITMAP | DIRTY_HOTSPOT | DIRTY_DRAW_DROP_SHADOW;
        } else {
            dirty = DIRTY_BITMAP;
        }
@@ -404,7 +409,7 @@ void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) {
        }
    } else if (mLocked.state.icon.isValid()) {
        mLocked.state.icon.bitmap.reset();
        dirty = DIRTY_BITMAP | DIRTY_HOTSPOT | DIRTY_ICON_STYLE;
        dirty = DIRTY_BITMAP | DIRTY_HOTSPOT | DIRTY_ICON_STYLE | DIRTY_DRAW_DROP_SHADOW;
    } else {
        return; // setting to invalid icon and already invalid so nothing to do
    }
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ private:
        DIRTY_HOTSPOT = 1 << 6,
        DIRTY_DISPLAY_ID = 1 << 7,
        DIRTY_ICON_STYLE = 1 << 8,
        DIRTY_DRAW_DROP_SHADOW = 1 << 9,
    };

    /* Describes the state of a sprite.
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ struct SpriteIcon {
    PointerIconStyle style{PointerIconStyle::TYPE_NULL};
    float hotSpotX{};
    float hotSpotY{};
    bool drawNativeDropShadow{false};
    bool drawNativeDropShadow{};

    inline bool isValid() const { return bitmap.isValid() && !bitmap.isEmpty(); }