Loading packages/SystemUI/src/com/android/systemui/screenshot/ImageTileSet.java +54 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.systemui.screenshot; import android.annotation.AnyThread; import android.graphics.Bitmap; import android.graphics.HardwareRenderer; import android.graphics.RecordingCanvas; Loading @@ -26,6 +27,9 @@ import android.util.Log; import androidx.annotation.UiThread; import com.android.internal.util.CallbackRegistry; import com.android.internal.util.CallbackRegistry.NotifierCallback; import java.util.ArrayList; import java.util.List; Loading @@ -34,10 +38,14 @@ import java.util.List; * <p> * To display on-screen, use {@link #getDrawable()}. */ @UiThread class ImageTileSet { private static final String TAG = "ImageTileSet"; private CallbackRegistry<OnBoundsChangedListener, ImageTileSet, Rect> mOnBoundsListeners; private CallbackRegistry<OnContentChangedListener, ImageTileSet, Rect> mContentListeners; ImageTileSet(@UiThread Handler handler) { mHandler = handler; } Loading @@ -64,15 +72,43 @@ class ImageTileSet { private OnContentChangedListener mOnContentChangedListener; private OnBoundsChangedListener mOnBoundsChangedListener; void setOnBoundsChangedListener(OnBoundsChangedListener listener) { mOnBoundsChangedListener = listener; void addOnBoundsChangedListener(OnBoundsChangedListener listener) { if (mOnBoundsListeners == null) { mOnBoundsListeners = new CallbackRegistry<>( new NotifierCallback<OnBoundsChangedListener, ImageTileSet, Rect>() { @Override public void onNotifyCallback(OnBoundsChangedListener callback, ImageTileSet sender, int arg, Rect newBounds) { callback.onBoundsChanged(newBounds.left, newBounds.top, newBounds.right, newBounds.bottom); } }); } mOnBoundsListeners.add(listener); } void setOnContentChangedListener(OnContentChangedListener listener) { mOnContentChangedListener = listener; void addOnContentChangedListener(OnContentChangedListener listener) { if (mContentListeners == null) { mContentListeners = new CallbackRegistry<>( new NotifierCallback<OnContentChangedListener, ImageTileSet, Rect>() { @Override public void onNotifyCallback(OnContentChangedListener callback, ImageTileSet sender, int arg, Rect newBounds) { callback.onContentChanged(); } }); } mContentListeners.add(listener); } @AnyThread void addTile(ImageTile tile) { if (!mHandler.getLooper().isCurrentThread()) { mHandler.post(() -> addTile(tile)); return; } final Rect newBounds = new Rect(mBounds); final Rect newRect = tile.getLocation(); mTiles.add(tile); Loading @@ -84,27 +120,15 @@ class ImageTileSet { notifyContentChanged(); } void notifyContentChanged() { if (mOnContentChangedListener == null) { return; } if (mHandler.getLooper().isCurrentThread()) { mOnContentChangedListener.onContentChanged(); } else { mHandler.post(() -> mOnContentChangedListener.onContentChanged()); private void notifyContentChanged() { if (mContentListeners != null) { mContentListeners.notifyCallbacks(this, 0, null); } } void notifyBoundsChanged(Rect bounds) { if (mOnBoundsChangedListener == null) { return; } if (mHandler.getLooper().isCurrentThread()) { mOnBoundsChangedListener.onBoundsChanged( bounds.left, bounds.top, bounds.right, bounds.bottom); } else { mHandler.post(() -> mOnBoundsChangedListener.onBoundsChanged( bounds.left, bounds.top, bounds.right, bounds.bottom)); private void notifyBoundsChanged(Rect bounds) { if (mOnBoundsListeners != null) { mOnBoundsListeners.notifyCallbacks(this, 0, bounds); } } Loading Loading @@ -180,8 +204,13 @@ class ImageTileSet { return mBounds.height(); } @AnyThread void clear() { if (mBounds.isEmpty()) { if (!mHandler.getLooper().isCurrentThread()) { mHandler.post(this::clear); return; } if (mTiles.isEmpty()) { return; } mBounds.setEmpty(); Loading packages/SystemUI/src/com/android/systemui/screenshot/TiledImageDrawable.java +2 −1 Original line number Diff line number Diff line Loading @@ -38,9 +38,10 @@ public class TiledImageDrawable extends Drawable { public TiledImageDrawable(ImageTileSet tiles) { mTiles = tiles; mTiles.setOnContentChangedListener(this::onContentChanged); mTiles.addOnContentChangedListener(this::onContentChanged); } private void onContentChanged() { if (mNode != null && mNode.hasDisplayList()) { mNode.discardDisplayList(); Loading Loading
packages/SystemUI/src/com/android/systemui/screenshot/ImageTileSet.java +54 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.systemui.screenshot; import android.annotation.AnyThread; import android.graphics.Bitmap; import android.graphics.HardwareRenderer; import android.graphics.RecordingCanvas; Loading @@ -26,6 +27,9 @@ import android.util.Log; import androidx.annotation.UiThread; import com.android.internal.util.CallbackRegistry; import com.android.internal.util.CallbackRegistry.NotifierCallback; import java.util.ArrayList; import java.util.List; Loading @@ -34,10 +38,14 @@ import java.util.List; * <p> * To display on-screen, use {@link #getDrawable()}. */ @UiThread class ImageTileSet { private static final String TAG = "ImageTileSet"; private CallbackRegistry<OnBoundsChangedListener, ImageTileSet, Rect> mOnBoundsListeners; private CallbackRegistry<OnContentChangedListener, ImageTileSet, Rect> mContentListeners; ImageTileSet(@UiThread Handler handler) { mHandler = handler; } Loading @@ -64,15 +72,43 @@ class ImageTileSet { private OnContentChangedListener mOnContentChangedListener; private OnBoundsChangedListener mOnBoundsChangedListener; void setOnBoundsChangedListener(OnBoundsChangedListener listener) { mOnBoundsChangedListener = listener; void addOnBoundsChangedListener(OnBoundsChangedListener listener) { if (mOnBoundsListeners == null) { mOnBoundsListeners = new CallbackRegistry<>( new NotifierCallback<OnBoundsChangedListener, ImageTileSet, Rect>() { @Override public void onNotifyCallback(OnBoundsChangedListener callback, ImageTileSet sender, int arg, Rect newBounds) { callback.onBoundsChanged(newBounds.left, newBounds.top, newBounds.right, newBounds.bottom); } }); } mOnBoundsListeners.add(listener); } void setOnContentChangedListener(OnContentChangedListener listener) { mOnContentChangedListener = listener; void addOnContentChangedListener(OnContentChangedListener listener) { if (mContentListeners == null) { mContentListeners = new CallbackRegistry<>( new NotifierCallback<OnContentChangedListener, ImageTileSet, Rect>() { @Override public void onNotifyCallback(OnContentChangedListener callback, ImageTileSet sender, int arg, Rect newBounds) { callback.onContentChanged(); } }); } mContentListeners.add(listener); } @AnyThread void addTile(ImageTile tile) { if (!mHandler.getLooper().isCurrentThread()) { mHandler.post(() -> addTile(tile)); return; } final Rect newBounds = new Rect(mBounds); final Rect newRect = tile.getLocation(); mTiles.add(tile); Loading @@ -84,27 +120,15 @@ class ImageTileSet { notifyContentChanged(); } void notifyContentChanged() { if (mOnContentChangedListener == null) { return; } if (mHandler.getLooper().isCurrentThread()) { mOnContentChangedListener.onContentChanged(); } else { mHandler.post(() -> mOnContentChangedListener.onContentChanged()); private void notifyContentChanged() { if (mContentListeners != null) { mContentListeners.notifyCallbacks(this, 0, null); } } void notifyBoundsChanged(Rect bounds) { if (mOnBoundsChangedListener == null) { return; } if (mHandler.getLooper().isCurrentThread()) { mOnBoundsChangedListener.onBoundsChanged( bounds.left, bounds.top, bounds.right, bounds.bottom); } else { mHandler.post(() -> mOnBoundsChangedListener.onBoundsChanged( bounds.left, bounds.top, bounds.right, bounds.bottom)); private void notifyBoundsChanged(Rect bounds) { if (mOnBoundsListeners != null) { mOnBoundsListeners.notifyCallbacks(this, 0, bounds); } } Loading Loading @@ -180,8 +204,13 @@ class ImageTileSet { return mBounds.height(); } @AnyThread void clear() { if (mBounds.isEmpty()) { if (!mHandler.getLooper().isCurrentThread()) { mHandler.post(this::clear); return; } if (mTiles.isEmpty()) { return; } mBounds.setEmpty(); Loading
packages/SystemUI/src/com/android/systemui/screenshot/TiledImageDrawable.java +2 −1 Original line number Diff line number Diff line Loading @@ -38,9 +38,10 @@ public class TiledImageDrawable extends Drawable { public TiledImageDrawable(ImageTileSet tiles) { mTiles = tiles; mTiles.setOnContentChangedListener(this::onContentChanged); mTiles.addOnContentChangedListener(this::onContentChanged); } private void onContentChanged() { if (mNode != null && mNode.hasDisplayList()) { mNode.discardDisplayList(); Loading