Add incStrong and decStrong methods to android_native_{window,buffer}_t.
This change adds the methods necessary to use sp<> to handle refcounting android_native_window_t and android_native_buffer_t. The new methods forward the refcounting operations to the corresponding android_native_base_t functions. Change-Id: I7de8e262728e439bc1efdf69374a2a9f6f432ced
This commit is contained in:
parent
69cb780bed
commit
5e67f87430
|
@ -33,6 +33,15 @@ typedef struct android_native_buffer_t
|
|||
common.version = sizeof(android_native_buffer_t);
|
||||
memset(common.reserved, 0, sizeof(common.reserved));
|
||||
}
|
||||
|
||||
// Implement the methods that sp<android_native_buffer_t> expects so that it
|
||||
// can be used to automatically refcount android_native_buffer_t's.
|
||||
void incStrong(const void* id) const {
|
||||
common.incRef(const_cast<android_native_base_t*>(&common));
|
||||
}
|
||||
void decStrong(const void* id) const {
|
||||
common.decRef(const_cast<android_native_base_t*>(&common));
|
||||
}
|
||||
#endif
|
||||
|
||||
struct android_native_base_t common;
|
||||
|
|
|
@ -98,6 +98,15 @@ typedef struct android_native_window_t
|
|||
common.version = sizeof(android_native_window_t);
|
||||
memset(common.reserved, 0, sizeof(common.reserved));
|
||||
}
|
||||
|
||||
// Implement the methods that sp<android_native_window_t> expects so that it
|
||||
// can be used to automatically refcount android_native_window_t's.
|
||||
void incStrong(const void* id) const {
|
||||
common.incRef(const_cast<android_native_base_t*>(&common));
|
||||
}
|
||||
void decStrong(const void* id) const {
|
||||
common.decRef(const_cast<android_native_base_t*>(&common));
|
||||
}
|
||||
#endif
|
||||
|
||||
struct android_native_base_t common;
|
||||
|
@ -291,6 +300,15 @@ namespace android {
|
|||
template <typename NATIVE_TYPE, typename TYPE, typename REF>
|
||||
class EGLNativeBase : public NATIVE_TYPE, public REF
|
||||
{
|
||||
public:
|
||||
// Disambiguate between the incStrong in REF and NATIVE_TYPE
|
||||
void incStrong(const void* id) const {
|
||||
REF::incStrong(id);
|
||||
}
|
||||
void decStrong(const void* id) const {
|
||||
REF::decStrong(id);
|
||||
}
|
||||
|
||||
protected:
|
||||
typedef EGLNativeBase<NATIVE_TYPE, TYPE, REF> BASE;
|
||||
EGLNativeBase() : NATIVE_TYPE(), REF() {
|
||||
|
|
Loading…
Reference in New Issue