Properly merge flags when merging transactions

Test: atest SurfaceFlinger_test

Change-Id: Ib1446c5afe00fd2588f7682f33cbbc6d6eb6a1ea
diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp
index 6066421..aa07cbe 100644
--- a/libs/gui/LayerState.cpp
+++ b/libs/gui/LayerState.cpp
@@ -267,8 +267,9 @@
     }
     if (other.what & eFlagsChanged) {
         what |= eFlagsChanged;
-        flags = other.flags;
-        mask = other.mask;
+        flags &= ~other.mask;
+        flags |= (other.flags & other.mask);
+        mask |= other.mask;
     }
     if (other.what & eLayerStackChanged) {
         what |= eLayerStackChanged;