diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-19 13:18:38 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-19 13:18:38 -0700 |
commit | 2a8477c89915298be2b2a6297e45024a1e69c7ea (patch) | |
tree | 5e4412825b02cc711643122b84fdde0ac675edf0 | |
parent | 9d82c1a447a72a2c086b9cd34c5b73b163d7acbc (diff) | |
parent | fc0541328190d60b3cf6beb72b630e115dc7a2be (diff) | |
download | libhardware-2a8477c89915298be2b2a6297e45024a1e69c7ea.tar.gz |
Merge changes 21851,21852 into eclair
* changes:
split gralloc_priv.h and make sure it is C friendly
integrate this change from the generic gralloc
-rw-r--r-- | modules/gralloc/allocator.h | 2 | ||||
-rw-r--r-- | modules/gralloc/framebuffer.cpp | 1 | ||||
-rw-r--r-- | modules/gralloc/gr.h | 63 | ||||
-rw-r--r-- | modules/gralloc/gralloc_priv.h | 56 |
4 files changed, 82 insertions, 40 deletions
diff --git a/modules/gralloc/allocator.h b/modules/gralloc/allocator.h index 68239829..b0d89e9e 100644 --- a/modules/gralloc/allocator.h +++ b/modules/gralloc/allocator.h @@ -21,7 +21,7 @@ #include <stdint.h> #include <sys/types.h> -#include "gralloc_priv.h" +#include "gr.h" // ---------------------------------------------------------------------------- diff --git a/modules/gralloc/framebuffer.cpp b/modules/gralloc/framebuffer.cpp index 5f97032a..7d2b582f 100644 --- a/modules/gralloc/framebuffer.cpp +++ b/modules/gralloc/framebuffer.cpp @@ -38,6 +38,7 @@ #endif #include "gralloc_priv.h" +#include "gr.h" /*****************************************************************************/ diff --git a/modules/gralloc/gr.h b/modules/gralloc/gr.h new file mode 100644 index 00000000..1775bfa7 --- /dev/null +++ b/modules/gralloc/gr.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2008 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. + */ + +#ifndef GR_H_ +#define GR_H_ + +#include <stdint.h> +#ifdef HAVE_ANDROID_OS // just want PAGE_SIZE define +# include <asm/page.h> +#else +# include <sys/user.h> +#endif +#include <limits.h> +#include <sys/cdefs.h> +#include <hardware/gralloc.h> +#include <pthread.h> +#include <errno.h> + +#include <cutils/native_handle.h> + +/*****************************************************************************/ + +struct private_module_t; +struct private_handle_t; + +inline size_t roundUpToPageSize(size_t x) { + return (x + (PAGE_SIZE-1)) & ~(PAGE_SIZE-1); +} + +int mapFrameBufferLocked(struct private_module_t* module); +int terminateBuffer(gralloc_module_t const* module, private_handle_t* hnd); + +/*****************************************************************************/ + +class Locker { + pthread_mutex_t mutex; +public: + class Autolock { + Locker& locker; + public: + inline Autolock(Locker& locker) : locker(locker) { locker.lock(); } + inline ~Autolock() { locker.unlock(); } + }; + inline Locker() { pthread_mutex_init(&mutex, 0); } + inline ~Locker() { pthread_mutex_destroy(&mutex); } + inline void lock() { pthread_mutex_lock(&mutex); } + inline void unlock() { pthread_mutex_unlock(&mutex); } +}; + +#endif /* GR_H_ */ diff --git a/modules/gralloc/gralloc_priv.h b/modules/gralloc/gralloc_priv.h index bfd3635b..c3655a50 100644 --- a/modules/gralloc/gralloc_priv.h +++ b/modules/gralloc/gralloc_priv.h @@ -18,11 +18,6 @@ #define GRALLOC_PRIV_H_ #include <stdint.h> -#ifdef HAVE_ANDROID_OS // just want PAGE_SIZE define -# include <asm/page.h> -#else -# include <sys/user.h> -#endif #include <limits.h> #include <sys/cdefs.h> #include <hardware/gralloc.h> @@ -39,34 +34,6 @@ struct private_module_t; struct private_handle_t; -inline size_t roundUpToPageSize(size_t x) { - return (x + (PAGE_SIZE-1)) & ~(PAGE_SIZE-1); -} - -int mapFrameBufferLocked(struct private_module_t* module); -int terminateBuffer(gralloc_module_t const* module, private_handle_t* hnd); - -/*****************************************************************************/ - -class Locker { - pthread_mutex_t mutex; -public: - class Autolock { - Locker& locker; - public: - inline Autolock(Locker& locker) : locker(locker) { locker.lock(); } - inline ~Autolock() { locker.unlock(); } - }; - inline Locker() { pthread_mutex_init(&mutex, 0); } - inline ~Locker() { pthread_mutex_destroy(&mutex); } - inline void lock() { pthread_mutex_lock(&mutex); } - inline void unlock() { pthread_mutex_unlock(&mutex); } -}; - -/*****************************************************************************/ - -struct private_handle_t; - struct private_module_t { gralloc_module_t base; @@ -93,8 +60,13 @@ struct private_module_t { /*****************************************************************************/ -struct private_handle_t : public native_handle -{ +#ifdef __cplusplus +struct private_handle_t : public native_handle { +#else +struct private_handle_t { + struct native_handle nativeHandle; +#endif + enum { PRIV_FLAGS_FRAMEBUFFER = 0x00000001, PRIV_FLAGS_USES_PMEM = 0x00000002, @@ -106,17 +78,21 @@ struct private_handle_t : public native_handle LOCK_STATE_READ_MASK = 0x3FFFFFFF }; + // file-descriptors int fd; + // ints int magic; int flags; int size; int offset; + // FIXME: the attributes below should be out-of-line int base; int lockState; int writeOwner; int pid; +#ifdef __cplusplus static const int sNumInts = 8; static const int sNumFds = 1; static const int sMagic = 0x3141592; @@ -138,13 +114,14 @@ struct private_handle_t : public native_handle } static int validate(const native_handle* h) { + const private_handle_t* hnd = (const private_handle_t*)h; if (!h || h->version != sizeof(native_handle) || - h->numInts!=sNumInts || h->numFds!=sNumFds) { + h->numInts != sNumInts || h->numFds != sNumFds || + hnd->magic != sMagic) + { + LOGE("invalid gralloc handle (at %p)", h); return -EINVAL; } - const private_handle_t* hnd = (const private_handle_t*)h; - if (hnd->magic != sMagic) - return -EINVAL; return 0; } @@ -154,6 +131,7 @@ struct private_handle_t : public native_handle } return NULL; } +#endif }; #endif /* GRALLOC_PRIV_H_ */ |