// 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. #ifndef CC_SURFACES_SURFACE_SEQUENCE_H_ #define CC_SURFACES_SURFACE_SEQUENCE_H_ namespace cc { // A per-surface-namespace sequence number that's used to coordinate // dependencies between frames. A sequence number may be satisfied once, and // may be depended on once. struct SurfaceSequence { SurfaceSequence() : id_namespace(0u), sequence(0u) {} SurfaceSequence(uint32_t id_namespace, uint32_t sequence) : id_namespace(id_namespace), sequence(sequence) {} uint32_t id_namespace; uint32_t sequence; }; inline bool operator==(const SurfaceSequence& a, const SurfaceSequence& b) { return a.id_namespace == b.id_namespace && a.sequence == b.sequence; } inline bool operator!=(const SurfaceSequence& a, const SurfaceSequence& b) { return !(a == b); } inline bool operator<(const SurfaceSequence& a, const SurfaceSequence& b) { if (a.id_namespace != b.id_namespace) return a.id_namespace < b.id_namespace; return a.sequence < b.sequence; } } // namespace cc #endif // CC_SURFACES_SURFACE_SEQUENCE_H_