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

Commit f7abcda5 authored by Gopal Krishna Shukla's avatar Gopal Krishna Shukla Committed by Shibin George
Browse files

Provide synchronization to setview to avoid NPE

If setView() will be called from two different threads
then mView property of a View object may have inconsistent
value. For instance, setView() may set mView to null causing
NullPointerException. Synchronize root.setView() as well to
avoid this.

Change-Id: I5f9cf47ece5d4aca575bd8644ecfcee0ed43d843
parent 2309b98b
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -335,22 +335,19 @@ public final class WindowManagerGlobal {
            mViews.add(view);
            mRoots.add(root);
            mParams.add(wparams);
        }

            // do this last because it fires off messages to start doing things
            try {
                root.setView(view, wparams, panelParentView);
            } catch (RuntimeException e) {
                // BadTokenException or InvalidDisplayException, clean up.
            synchronized (mLock) {
                final int index = findViewLocked(view, false);
                if (index >= 0) {
                    removeViewLocked(index, true);
                }
            }
                throw e;
            }
        }
    }

    public void updateViewLayout(View view, ViewGroup.LayoutParams params) {
        if (view == null) {