Set Change::Metadata on LayerMetadata update

Currently, on layer_state_t::eMetadataChanged, only
Change::GameMode is set. Hence, for other metadata changes
such as METADATA_OWNER_UID, METADATA_MOUSE_CURSOR,
etc. (used by ARC++), these doesn't get propagated until
`forceUpdate=true` or `gameMode` is updated.

This leaves ARC++ LayerFE receiving stale metadata, even
though "update" was received.

Bug: 339382668
Test: atest libsurfaceflinger_unittests
Change-Id: I8130c3505b9808a9aa04d1641dc1c22352d6bf87
diff --git a/services/surfaceflinger/FrontEnd/LayerSnapshotBuilder.cpp b/services/surfaceflinger/FrontEnd/LayerSnapshotBuilder.cpp
index f2497d4..caeb575 100644
--- a/services/surfaceflinger/FrontEnd/LayerSnapshotBuilder.cpp
+++ b/services/surfaceflinger/FrontEnd/LayerSnapshotBuilder.cpp
@@ -785,10 +785,12 @@
         }
     }
 
-    if (forceUpdate || snapshot.changes.test(RequestedLayerState::Changes::GameMode)) {
-        snapshot.gameMode = requested.metadata.has(gui::METADATA_GAME_MODE)
-                ? requested.gameMode
-                : parentSnapshot.gameMode;
+    if (forceUpdate || snapshot.changes.test(RequestedLayerState::Changes::Metadata)) {
+        if (snapshot.changes.test(RequestedLayerState::Changes::GameMode)) {
+            snapshot.gameMode = requested.metadata.has(gui::METADATA_GAME_MODE)
+                    ? requested.gameMode
+                    : parentSnapshot.gameMode;
+        }
         updateMetadata(snapshot, requested, args);
         if (args.includeMetadata) {
             snapshot.layerMetadata = parentSnapshot.layerMetadata;