diff options
-rw-r--r-- | include/android/choreographer.h | 69 | ||||
-rw-r--r-- | include/binder/Status.h | 7 | ||||
-rw-r--r-- | libs/binder/Status.cpp | 5 |
3 files changed, 76 insertions, 5 deletions
diff --git a/include/android/choreographer.h b/include/android/choreographer.h new file mode 100644 index 0000000000..02c83dc07c --- /dev/null +++ b/include/android/choreographer.h @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2015 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. + */ + +/** + * @addtogroup Choreographer + * @{ + */ + +/** + * @file choreographer.h + */ + +#ifndef ANDROID_CHOREOGRAPHER_H +#define ANDROID_CHOREOGRAPHER_H + +#include <sys/cdefs.h> + +__BEGIN_DECLS + +struct AChoreographer; +typedef struct AChoreographer AChoreographer; + +/** + * Prototype of the function that is called when a new frame is being rendered. + * It's passed the time that the frame is being rendered as nanoseconds in the + * CLOCK_MONOTONIC time base, as well as the data pointer provided by the + * application that registered a callback. All callbacks that run as part of + * rendering a frame will observe the same frame time, so it should be used + * whenever events need to be synchronized (e.g. animations). + */ +typedef void (*AChoreographer_frameCallback)(long frameTimeNanos, void* data); + +/** + * Get the AChoreographer instance for the current thread. This must be called + * on an ALooper thread. + */ +AChoreographer* AChoreographer_getInstance(); + +/** + * Post a callback to be run on the next frame. The data pointer provided will + * be passed to the callback function when it's called. + */ +void AChoreographer_postFrameCallback(AChoreographer* choreographer, + AChoreographer_frameCallback callback, void* data); +/** + * Post a callback to be run on the frame following the specified delay. The + * data pointer provided will be passed to the callback function when it's + * called. + */ +void AChoreographer_postFrameCallbackDelayed(AChoreographer* choreographer, + AChoreographer_frameCallback callback, void* data, long delayMillis); +__END_DECLS + +#endif // ANDROID_CHOREOGRAPHER_H + +/** @} */ diff --git a/include/binder/Status.h b/include/binder/Status.h index ce947fa3de..7253af8fd3 100644 --- a/include/binder/Status.h +++ b/include/binder/Status.h @@ -18,6 +18,7 @@ #define ANDROID_BINDER_STATUS_H #include <cstdint> +#include <sstream> #include <binder/Parcel.h> #include <utils/String8.h> @@ -142,11 +143,7 @@ private: }; // class Status // For gtest output logging -template<typename T> -T& operator<< (T& stream, const Status& s) { - stream << s.toString8().string(); - return stream; -} +std::stringstream& operator<< (std::stringstream& stream, const Status& s); } // namespace binder } // namespace android diff --git a/libs/binder/Status.cpp b/libs/binder/Status.cpp index d3520d62e9..5ae6db2f58 100644 --- a/libs/binder/Status.cpp +++ b/libs/binder/Status.cpp @@ -158,5 +158,10 @@ String8 Status::toString8() const { return ret; } +std::stringstream& operator<< (std::stringstream& stream, const Status& s) { + stream << s.toString8().string(); + return stream; +} + } // namespace binder } // namespace android |