diff options
Diffstat (limited to 'xbmc/platform')
4 files changed, 75 insertions, 0 deletions
diff --git a/xbmc/platform/android/activity/CMakeLists.txt b/xbmc/platform/android/activity/CMakeLists.txt index fddcec8525..55714df929 100644 --- a/xbmc/platform/android/activity/CMakeLists.txt +++ b/xbmc/platform/android/activity/CMakeLists.txt @@ -16,6 +16,7 @@ set(SOURCES android_main.cpp JNIXBMCNsdManagerResolveListener.cpp JNIXBMCJsonHandler.cpp JNIXBMCFile.cpp + JNIXBMCTextureCache.cpp JNIXBMCURIUtils.cpp JNIXBMCDisplayManagerDisplayListener.cpp JNIXBMCSpeechRecognitionListener.cpp @@ -42,6 +43,7 @@ set(HEADERS AndroidFeatures.h JNIXBMCNsdManagerResolveListener.h JNIXBMCJsonHandler.h JNIXBMCFile.h + JNIXBMCTextureCache.h JNIXBMCURIUtils.h JNIXBMCDisplayManagerDisplayListener.h JNIXBMCSpeechRecognitionListener.h diff --git a/xbmc/platform/android/activity/JNIXBMCTextureCache.cpp b/xbmc/platform/android/activity/JNIXBMCTextureCache.cpp new file mode 100644 index 0000000000..bacb4a826d --- /dev/null +++ b/xbmc/platform/android/activity/JNIXBMCTextureCache.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "JNIXBMCTextureCache.h" + +#include "CompileInfo.h" +#include "TextureCache.h" + +#include <androidjni/Context.h> +#include <androidjni/jutils-details.hpp> + +using namespace jni; + +static std::string s_className = std::string(CCompileInfo::GetClass()) + "/XBMCTextureCache"; + +void CJNIXBMCTextureCache::RegisterNatives(JNIEnv* env) +{ + jclass cClass = env->FindClass(s_className.c_str()); + if (cClass) + { + JNINativeMethod methods[] = { + {"_unwrapImageURL", "(Ljava/lang/String;)Ljava/lang/String;", + (void*)&CJNIXBMCTextureCache::_unwrapImageURL}, + }; + + env->RegisterNatives(cClass, methods, sizeof(methods) / sizeof(methods[0])); + } +} + +jstring CJNIXBMCTextureCache::_unwrapImageURL(JNIEnv* env, jobject thiz, jstring image) +{ + std::string strImage = jcast<std::string>(jhstring::fromJNI(image)); + std::string responseData = CTextureUtils::UnwrapImageURL(strImage); + + jstring jres = env->NewStringUTF(responseData.c_str()); + return jres; +} diff --git a/xbmc/platform/android/activity/JNIXBMCTextureCache.h b/xbmc/platform/android/activity/JNIXBMCTextureCache.h new file mode 100644 index 0000000000..92da6e91d5 --- /dev/null +++ b/xbmc/platform/android/activity/JNIXBMCTextureCache.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2020 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include <androidjni/JNIBase.h> + +namespace jni +{ + +class CJNIXBMCTextureCache : public CJNIBase +{ +public: + CJNIXBMCTextureCache(const jni::jhobject& object) : CJNIBase(object) {} + + static void RegisterNatives(JNIEnv* env); + +protected: + ~CJNIXBMCTextureCache() override = default; + + static jstring _unwrapImageURL(JNIEnv* env, jobject thiz, jstring image); +}; + +} // namespace jni diff --git a/xbmc/platform/android/activity/android_main.cpp b/xbmc/platform/android/activity/android_main.cpp index 3970e78f49..a934b6ee1c 100644 --- a/xbmc/platform/android/activity/android_main.cpp +++ b/xbmc/platform/android/activity/android_main.cpp @@ -23,6 +23,7 @@ #include "platform/android/activity/JNIXBMCNsdManagerResolveListener.h" #include "platform/android/activity/JNIXBMCSpeechRecognitionListener.h" #include "platform/android/activity/JNIXBMCSurfaceTextureOnFrameAvailableListener.h" +#include "platform/android/activity/JNIXBMCTextureCache.h" #include "platform/android/activity/JNIXBMCURIUtils.h" #include "platform/android/activity/JNIXBMCVideoView.h" @@ -127,6 +128,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) CJNIXBMCNsdManagerResolveListener::RegisterNatives(env); CJNIXBMCSpeechRecognitionListener::RegisterNatives(env); CJNIXBMCSurfaceTextureOnFrameAvailableListener::RegisterNatives(env); + CJNIXBMCTextureCache::RegisterNatives(env); CJNIXBMCURIUtils::RegisterNatives(env); CJNIXBMCVideoView::RegisterNatives(env); |