| Index: third_party/hwcplus/src/hwcplus_util.c
|
| diff --git a/third_party/hwcplus/src/hwcplus_util.c b/third_party/hwcplus/src/hwcplus_util.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..57c4519c8790370db400a6e5cee03295b60d156c
|
| --- /dev/null
|
| +++ b/third_party/hwcplus/src/hwcplus_util.c
|
| @@ -0,0 +1,75 @@
|
| +// 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.
|
| +
|
| +#include <stdarg.h>
|
| +#include <stdio.h>
|
| +#include <string.h>
|
| +
|
| +#include <hardware/hardware.h>
|
| +#include <cutils/properties.h>
|
| +
|
| +#define LOG_BUF_SIZE 1024
|
| +
|
| +static int default_log_fn(int prio, const char* tag, const char* msg);
|
| +
|
| +static hwcplus_log_fn_t hwcplus_log_fn = default_log_fn;
|
| +
|
| +void hwcplus_set_log_fn(hwcplus_log_fn_t fn) {
|
| + hwcplus_log_fn = fn;
|
| +}
|
| +
|
| +#ifndef HAVE_STRLCPY
|
| +size_t strlcpy(char* dst, const char* src, size_t siz) {
|
| + char* d = dst;
|
| + const char* s = src;
|
| + size_t n = siz;
|
| +
|
| + /* Copy as many bytes as will fit */
|
| + if (n != 0) {
|
| + while (--n != 0) {
|
| + if ((*d++ = *s++) == '\0')
|
| + break;
|
| + }
|
| + }
|
| +
|
| + /* Not enough room in dst, add NUL and traverse rest of src */
|
| + if (n == 0) {
|
| + if (siz != 0)
|
| + *d = '\0'; /* NUL-terminate dst */
|
| + while (*s++) {
|
| + }
|
| + }
|
| +
|
| + return(s - src - 1); /* count does not include NUL */
|
| +}
|
| +#endif
|
| +
|
| +static int default_log_fn(int prio, const char* tag, const char* msg) {
|
| + fprintf(stderr, "<%d> %s %s\n", prio, tag, msg);
|
| +}
|
| +
|
| +int __android_log_write(int prio, const char* tag, const char* msg) {
|
| + hwcplus_log_fn(prio, tag, msg);
|
| +}
|
| +
|
| +int __android_log_print(int prio, const char* tag, const char* fmt, ...) {
|
| + va_list ap;
|
| + char buf[LOG_BUF_SIZE];
|
| +
|
| + va_start(ap, fmt);
|
| + vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
|
| + va_end(ap);
|
| +
|
| + return __android_log_write(prio, tag, buf);
|
| +}
|
| +
|
| +int property_get(const char* key, char* value, const char* default_value) {
|
| + printf("property_get %s\n", key);
|
| + const char* r = default_value;
|
| + if (!r)
|
| + r = "";
|
| + strncpy(value, r, PROPERTY_VALUE_MAX);
|
| + return strlen(r);
|
| +}
|
| +
|
|
|