diff options
author | Tor Lillqvist <tlillqvist@suse.com> | 2012-06-11 18:02:56 +0300 |
---|---|---|
committer | Tor Lillqvist <tlillqvist@suse.com> | 2012-06-12 13:50:45 +0300 |
commit | 4e4dcdae48dcd0437ff3f87a1ffc4fada53f2e3f (patch) | |
tree | 66f51bca26065cdad55c040024815a09bd8ffb7c /sal | |
parent | 3a793f9558c61000dc00534df0820e06135c8c24 (diff) |
Add Android-specific sal/ByteBufferWrapper.hxx header
Used for impedance matching between Java's direct ByteBuffer and the
boost::shared_array used by basebmp. Not sure yet how well this will
actually work. I'm afraid leaks might be possible in exception
throwing cases.
Change-Id: I74fc57aaf46b2dd9f227043bd9045d4815a5ed40
Diffstat (limited to 'sal')
-rw-r--r-- | sal/Package_inc.mk | 1 | ||||
-rw-r--r-- | sal/inc/sal/ByteBufferWrapper.hxx | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/sal/Package_inc.mk b/sal/Package_inc.mk index 1bce8ecd4aba..00dc323a2b4e 100644 --- a/sal/Package_inc.mk +++ b/sal/Package_inc.mk @@ -106,6 +106,7 @@ $(eval $(call gb_Package_add_file,sal_inc,inc/rtl/ustring.h,rtl/ustring.h)) $(eval $(call gb_Package_add_file,sal_inc,inc/rtl/ustring.hxx,rtl/ustring.hxx)) $(eval $(call gb_Package_add_file,sal_inc,inc/rtl/uuid.h,rtl/uuid.h)) $(eval $(call gb_Package_add_file,sal_inc,inc/sal/alloca.h,sal/alloca.h)) +$(eval $(call gb_Package_add_file,sal_inc,inc/sal/ByteBufferWrapper.hxx,sal/ByteBufferWrapper.hxx)) $(eval $(call gb_Package_add_file,sal_inc,inc/sal/config.h,sal/config.h)) $(eval $(call gb_Package_add_file,sal_inc,inc/sal/log-areas.dox,sal/log-areas.dox)) $(eval $(call gb_Package_add_file,sal_inc,inc/sal/log.hxx,sal/log.hxx)) diff --git a/sal/inc/sal/ByteBufferWrapper.hxx b/sal/inc/sal/ByteBufferWrapper.hxx new file mode 100644 index 000000000000..954922d65b16 --- /dev/null +++ b/sal/inc/sal/ByteBufferWrapper.hxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright 2012 LibreOffice contributors. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef _SAL_BYTEBUFFERWRAPPER_HXX +#define _SAL_BYTEBUFFERWRAPPER_HXX + +#ifdef ANDROID + +#include <jni.h> + +#include <sal/types.h> + +namespace org { namespace libreoffice { namespace touch { + +class ByteBufferWrapper +{ +private: + JNIEnv *env; + jobject object; + +public: + ByteBufferWrapper(JNIEnv *e, jobject o) : + env(e) + { + object = env->NewGlobalRef(o); + } + + sal_uInt8* pointer() + { + return (sal_uInt8 *) env->GetDirectBufferAddress(object); + } + + void operator()(sal_uInt8 * /* p */) + { + env->DeleteGlobalRef(object); + } +}; + +}; }; }; + +#endif + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |