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

Commit e30e1ff8 authored by Adam Powell's avatar Adam Powell Committed by Android Git Automerger
Browse files

am 7d04f2bc: am 4c72ad75: Merge "Fix bug 2918587 Infinite loop and memory leak...

am 7d04f2bc: am 4c72ad75: Merge "Fix bug 2918587 Infinite loop and memory leak in AdapterView" into gingerbread

Merge commit '7d04f2bc'

* commit '7d04f2bc':
  Fix bug 2918587 Infinite loop and memory leak in AdapterView
parents 22f5ee93 7d04f2bc
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -808,7 +808,6 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
            mNextSelectedPosition = INVALID_POSITION;
            mNextSelectedRowId = INVALID_ROW_ID;
            mNeedSync = false;
            checkSelectionChanged();

            checkFocus();
            requestLayout();
@@ -819,13 +818,21 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
        }
    }

    private class SelectionNotifier extends Handler implements Runnable {
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        removeCallbacks(mSelectionNotifier);
    }

    private class SelectionNotifier implements Runnable {
        public void run() {
            if (mDataChanged) {
                // Data has changed between when this SelectionNotifier
                // was posted and now. We need to wait until the AdapterView
                // has been synched to the new data.
                if (getAdapter() != null) {
                    post(this);
                }
            } else {
                fireOnSelected();
            }
@@ -842,7 +849,7 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
                if (mSelectionNotifier == null) {
                    mSelectionNotifier = new SelectionNotifier();
                }
                mSelectionNotifier.post(mSelectionNotifier);
                post(mSelectionNotifier);
            } else {
                fireOnSelected();
            }