Files
Chavi Weingarten b8afa7f7b9 Make SurfaceSyncGroup AIDL interface and add cross process syncs
When two processes are involved in a sync, we don't want them to
exchange Transaction info because it may contain SurfaceControls that
the two transactions shouldn't exchange. Instead, have system server
take care of the cross process syncs and ensure SurfaceSyncGroup
sends the data to system server instead of to the two apps.

This is done by the following flow:
1. P1 creates a SyncGroup
2. P1 adds something local to the SyncGroup. No WM API is called.
3. P1 adds something in P2 to SyncGroup
3a. P1 creates a SyncGroup in WM with P1's SyncGroup as token
3b. P1 notifies P2 that it should be added to the SyncGroup with a
specified token
3c. P2 invokes WM call and adds itself to the same SyncGroup in WM

When P1 and P2 groups are done, they will invoke the transaction
callback to WM, who will merge into a single transaction

4. P1 marks SyncGroup as ready, which calls into WM to mark the
   associated SyncGroup as ready. When all callbacks are complete, it
   will apply the final transaction

Test: SurfaceSyncGroupContinuousTest
Bug: 237804605
Change-Id: I0f52f2e2d1a95e0ecc2b95b6dddd2ebb5b3edb54
2023-01-06 17:16:51 +00:00

35 lines
1.1 KiB
Plaintext

//
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "frameworks_base_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["frameworks_base_license"],
}
android_test {
name: "SurfaceControlViewHostTest",
srcs: [
"**/*.aidl",
"**/*.java",
],
platform_apis: true,
certificate: "platform",
}