SurfaceFlinger: Only update client parent if set.

We use the idea of client with parents to allow applications
to access SurfaceFlinger as long as they have an original "root"
Surface granted to them from the WindowManager. Sometimes the WindowManager
may reparent these child surfaces to a new surface, and so we need to update
which Surface is providing this grant. However, if a client never had a root
surface and is instead relying on ACCESS_SURFACE_FLINGER, e.g. the WindowManager
we need to not reparent or we may end up making the client invalid when
the Surface dies when we never intended to.

Bug: 78301580
Bug: 62536731
Test: Manual repro of b/78301580
Change-Id: Ib18cfe86e1cec3da7808fcd01e2b7ce02bebff6d
3 files changed