// 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_SCHEDULER_COMMIT_EARLYOUT_REASON_H_ #define CC_SCHEDULER_COMMIT_EARLYOUT_REASON_H_ #include "base/logging.h" #include "cc/base/cc_export.h" namespace cc { namespace proto { class CommitEarlyOutReason; } enum class CommitEarlyOutReason { ABORTED_OUTPUT_SURFACE_LOST, ABORTED_NOT_VISIBLE, ABORTED_DEFERRED_COMMIT, FINISHED_NO_UPDATES, }; // Please update the To/From Protobuf methods for any updates made to // CommitEarlyOutReason enum. CC_EXPORT CommitEarlyOutReason CommitEarlyOutReasonFromProtobuf(const proto::CommitEarlyOutReason& proto); CC_EXPORT void CommitEarlyOutReasonToProtobuf( CommitEarlyOutReason reason, proto::CommitEarlyOutReason* proto); inline const char* CommitEarlyOutReasonToString(CommitEarlyOutReason reason) { switch (reason) { case CommitEarlyOutReason::ABORTED_OUTPUT_SURFACE_LOST: return "CommitEarlyOutReason::ABORTED_OUTPUT_SURFACE_LOST"; case CommitEarlyOutReason::ABORTED_NOT_VISIBLE: return "CommitEarlyOutReason::ABORTED_NOT_VISIBLE"; case CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT: return "CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT"; case CommitEarlyOutReason::FINISHED_NO_UPDATES: return "CommitEarlyOutReason::FINISHED_NO_UPDATES"; } NOTREACHED(); return "???"; } inline bool CommitEarlyOutHandledCommit(CommitEarlyOutReason reason) { return reason == CommitEarlyOutReason::FINISHED_NO_UPDATES; } } // namespace cc #endif // CC_SCHEDULER_COMMIT_EARLYOUT_REASON_H_