| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module cc.mojom; |
| |
| // A surface ID is composed of three parts: a client ID, a local ID, and a |
| // nonce. The local part and nonce are allocated by the client using any scheme |
| // that avoids duplicates and makes IDs unguessable respectively. The client ID |
| // is allocated by the service and will be different for each client. |
| // |
| // The special client_id value 0 is equivalent to the current client. |
| // This can be used to create, destroy and submit frames to surfaces before |
| // learning the client ID and to reference other surfaces owned by the same |
| // client. The actual client ID must be used to pass surface ids to other |
| // clients for them to reference. |
| struct SurfaceId { |
| // A service allocated ID identifying a client. |
| uint32 client_id; |
| |
| // An identifier allocated by the client uniquely identifying a surface within |
| // a client process. |
| uint32 local_id; |
| |
| // A cryptographically secure random int chosen to make the SurfaceId |
| // unguessable by other clients. |
| uint64 nonce; |
| }; |