diff --git a/sources/Swappy/src/common/JNIUtil.h b/sources/Swappy/src/common/JNIUtil.h index 18d98559..5e119f32 100644 --- a/sources/Swappy/src/common/JNIUtil.h +++ b/sources/Swappy/src/common/JNIUtil.h @@ -34,7 +34,6 @@ // to your game/engine's own Java component, you do not need to add the binary // resource and can instead define ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE which // will avoid the linker requiring these symbols. -#define ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE #ifndef ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE extern const char _binary_classes_dex_start; extern const char _binary_classes_dex_end; @@ -63,8 +62,8 @@ static bool deleteFile(std::string fileName) { static bool createTempFile(JNIEnv* env, jobject activity, const char* ext, std::string& tempFileName) { - bool result = false; - jclass activityClass = env->GetObjectClass(activity); + bool result = false; + jclass activityClass = env->GetObjectClass(activity); jmethodID getCacheDir = env->GetMethodID(activityClass, "getCacheDir", "()Ljava/io/File;"); jobject cacheDir = env->CallObjectMethod(activity, getCacheDir); @@ -72,13 +71,13 @@ static bool createTempFile(JNIEnv* env, jobject activity, const char* ext, env->ExceptionDescribe(); env->ExceptionClear(); } else { - jclass fileClass = env->FindClass("java/io/File"); + jclass fileClass = env->FindClass("java/io/File"); jmethodID createTempFile = env->GetStaticMethodID(fileClass, "createTempFile", "(Ljava/lang/String;Ljava/lang/String;Ljava/" "io/File;)Ljava/io/File;"); - jstring prefix = env->NewStringUTF("ags"); - jstring suffix = env->NewStringUTF(ext); + jstring prefix = env->NewStringUTF("ags"); + jstring suffix = env->NewStringUTF(ext); jobject tempFile = env->CallStaticObjectMethod( fileClass, createTempFile, prefix, suffix, cacheDir); if (env->ExceptionCheck()) { @@ -105,11 +104,11 @@ static bool createTempFile(JNIEnv* env, jobject activity, const char* ext, return result; } -#endif // #ifndef ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE +#endif // #ifndef ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE static jclass loadClass(JNIEnv* env, jobject activity, const char* name, JNINativeMethod* nativeMethods, - size_t nativeMethodsSize) { + size_t nativeMethodsSize) { /* * 1. Get a classloader from actvity * 2. Try to create the requested class from the activty classloader @@ -120,15 +119,15 @@ static jclass loadClass(JNIEnv* env, jobject activity, const char* name, if (!env || !activity || !name) { return nullptr; } - jclass activityClass = env->GetObjectClass(activity); - jclass classLoaderClass = env->FindClass("java/lang/ClassLoader"); - jmethodID getClassLoader = env->GetMethodID(activityClass, "getClassLoader", + jclass activityClass = env->GetObjectClass(activity); + jclass classLoaderClass = env->FindClass("java/lang/ClassLoader"); + jmethodID getClassLoader = env->GetMethodID(activityClass, "getClassLoader", "()Ljava/lang/ClassLoader;"); - jobject classLoaderObj = env->CallObjectMethod(activity, getClassLoader); - jmethodID loadClass = env->GetMethodID( + jobject classLoaderObj = env->CallObjectMethod(activity, getClassLoader); + jmethodID loadClass = env->GetMethodID( classLoaderClass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); - jstring className = env->NewStringUTF(name); - jclass targetClass = static_cast( + jstring className = env->NewStringUTF(name); + jclass targetClass = static_cast( env->CallObjectMethod(classLoaderObj, loadClass, className)); if (env->ExceptionCheck()) { env->ExceptionClear(); @@ -230,10 +229,10 @@ static jclass loadClass(JNIEnv* env, jobject activity, const char* name, if (imclassloaderClass) { env->DeleteLocalRef(imclassloaderClass); } -#endif // #ifdef ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE +#endif // #ifdef ANDROIDGAMESDK_NO_BINARY_DEX_LINKAGE } env->DeleteLocalRef(className); return targetClass; } -} // namespace gamesdk +} // namespace gamesdk diff --git a/sources/Swappy/src/swappy/CMakeLists.txt b/sources/Swappy/src/swappy/CMakeLists.txt index 97fe30cc..1c587c9e 100644 --- a/sources/Swappy/src/swappy/CMakeLists.txt +++ b/sources/Swappy/src/swappy/CMakeLists.txt @@ -16,6 +16,9 @@ set(IgnoreOldToolchainWarning "${ANDROID_UNIFIED_HEADERS}") # set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-s" ) # set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--hash-style=both" ) +#no statistics log +set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG" ) + set ( SOURCE_LOCATION ${CMAKE_CURRENT_LIST_DIR}) set ( SOURCE_LOCATION_COMMON "${SOURCE_LOCATION}/common" ) set ( SOURCE_LOCATION_OPENGL "${SOURCE_LOCATION}/opengl" ) @@ -38,93 +41,92 @@ message( STATUS "Building swappy_static to ${CMAKE_CURRENT_BINARY_DIR}/build" ) # Dex linking requires an extra option for later versions of clang lld if (ANDROID_NDK_MAJOR GREATER 22) - if ( ANDROID_NDK_ABI_NAME MATCHES "armeabi-v7a") - set (LINKER_TARGET_EMULATION_OPTION "-m" "armelf_linux_eabi") - elseif(ANDROID_NDK_ABI_NAME MATCHES "arm64-v8a") - set (LINKER_TARGET_EMULATION_OPTION "-m" "aarch64linux") - elseif(ANDROID_NDK_ABI_NAME MATCHES "x86_64") - set (LINKER_TARGET_EMULATION_OPTION "-m" "elf_x86_64") - elseif(ANDROID_NDK_ABI_NAME MATCHES "x86") - set (LINKER_TARGET_EMULATION_OPTION "-m" "elf_i386") - endif() + if ( ANDROID_NDK_ABI_NAME MATCHES "armeabi-v7a") + set (LINKER_TARGET_EMULATION_OPTION "-m" "armelf_linux_eabi") + elseif(ANDROID_NDK_ABI_NAME MATCHES "arm64-v8a") + set (LINKER_TARGET_EMULATION_OPTION "-m" "aarch64linux") + elseif(ANDROID_NDK_ABI_NAME MATCHES "x86_64") + set (LINKER_TARGET_EMULATION_OPTION "-m" "elf_x86_64") + elseif(ANDROID_NDK_ABI_NAME MATCHES "x86") + set (LINKER_TARGET_EMULATION_OPTION "-m" "elf_i386") + endif() endif() add_custom_command(OUTPUT classes_dex.o - COMMAND cd ../intermediates/dex/release/mergeDexRelease/out && ${CMAKE_LINKER} ${LINKER_TARGET_EMULATION_OPTION} -r -b binary -o ${CMAKE_CURRENT_BINARY_DIR}/classes_dex.o classes.dex - WORKING_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} - ) + COMMAND cd ${CMAKE_CURRENT_LIST_DIR}/ && ${CMAKE_LINKER} ${LINKER_TARGET_EMULATION_OPTION} -r -b binary -o ${CMAKE_CURRENT_BINARY_DIR}/classes_dex.o classes.dex + WORKING_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} + ) -set_source_files_properties( - classes_dex.o - PROPERTIES - EXTERNAL_OBJECT true - GENERATED true +set_source_files_properties(SwappyDisplayManager + classes_dex.o + PROPERTIES + EXTERNAL_OBJECT true + GENERATED true ) set(SRC_FILE - ${SOURCE_LOCATION_COMMON}/ChoreographerFilter.cpp - ${SOURCE_LOCATION_COMMON}/ChoreographerThread.cpp - ${SOURCE_LOCATION_COMMON}/CpuInfo.cpp - ${SOURCE_LOCATION_COMMON}/Settings.cpp - ${SOURCE_LOCATION_COMMON}/Thread.cpp - ${SOURCE_LOCATION_COMMON}/SwappyCommon.cpp - ${SOURCE_LOCATION_COMMON}/swappy_c.cpp - ${SOURCE_LOCATION_COMMON}/SwappyDisplayManager.cpp - ${SOURCE_LOCATION_COMMON}/CPUTracer.cpp - ${SOURCE_LOCATION}/../common/system_utils.cpp) + ${SOURCE_LOCATION_COMMON}/ChoreographerFilter.cpp + ${SOURCE_LOCATION_COMMON}/ChoreographerThread.cpp + ${SOURCE_LOCATION_COMMON}/CpuInfo.cpp + ${SOURCE_LOCATION_COMMON}/Settings.cpp + ${SOURCE_LOCATION_COMMON}/Thread.cpp + ${SOURCE_LOCATION_COMMON}/SwappyCommon.cpp + ${SOURCE_LOCATION_COMMON}/swappy_c.cpp + ${SOURCE_LOCATION_COMMON}/SwappyDisplayManager.cpp + ${SOURCE_LOCATION_COMMON}/CPUTracer.cpp + ${SOURCE_LOCATION}/../common/system_utils.cpp) set(SWAPPY_C_SRC) if(CC_USE_GLES3 OR CC_USE_GLES2) list(APPEND SRC_FILE - ${SOURCE_LOCATION_OPENGL}/EGL.cpp - ${SOURCE_LOCATION_OPENGL}/swappyGL_c.cpp - ${SOURCE_LOCATION_OPENGL}/SwappyGL.cpp - ${SOURCE_LOCATION_OPENGL}/FrameStatisticsGL.cpp) + ${SOURCE_LOCATION_OPENGL}/EGL.cpp + ${SOURCE_LOCATION_OPENGL}/swappyGL_c.cpp + ${SOURCE_LOCATION_OPENGL}/SwappyGL.cpp + ${SOURCE_LOCATION_OPENGL}/FrameStatisticsGL.cpp) list(APPEND SWAPPY_C_SRC - ${SOURCE_LOCATION_OPENGL}/swappyGL_c.cpp) + ${SOURCE_LOCATION_OPENGL}/swappyGL_c.cpp) endif() if(CC_USE_VULKAN) list(APPEND SRC_FILE - ${SOURCE_LOCATION_VULKAN}/swappyVk_c.cpp - ${SOURCE_LOCATION_VULKAN}/SwappyVk.cpp - ${SOURCE_LOCATION_VULKAN}/SwappyVkBase.cpp - ${SOURCE_LOCATION_VULKAN}/SwappyVkFallback.cpp - ${SOURCE_LOCATION_VULKAN}/SwappyVkGoogleDisplayTiming.cpp) + ${SOURCE_LOCATION_VULKAN}/swappyVk_c.cpp + ${SOURCE_LOCATION_VULKAN}/SwappyVk.cpp + ${SOURCE_LOCATION_VULKAN}/SwappyVkBase.cpp + ${SOURCE_LOCATION_VULKAN}/SwappyVkFallback.cpp + ${SOURCE_LOCATION_VULKAN}/SwappyVkGoogleDisplayTiming.cpp) list(APPEND SWAPPY_C_SRC ${SOURCE_LOCATION_VULKAN}/swappyVk_c.cpp) endif() add_library( swappy_static - STATIC + STATIC - ${SRC_FILE} -# ${CMAKE_CURRENT_BINARY_DIR}/classes_dex.o - # Add new source files here - ) + ${SRC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/classes_dex.o + # Add new source files here + ) set_target_properties( swappy_static PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build ) + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build ) add_library( swappy - SHARED + SHARED - ${SWAPPY_C_SRC}) + ${SWAPPY_C_SRC}) set(SWAPPY_ENABLED TRUE) - add_definitions(-DSWAPPY_ENABLED) -set(LIBS - swappy_static - android - log - atomic) +set(LIBS + swappy_static + android + log + atomic) if(CC_USE_GLES3 OR CC_USE_GLES2) list(APPEND LIBS GLESv2) diff --git a/sources/Swappy/src/swappy/classes.dex b/sources/Swappy/src/swappy/classes.dex new file mode 100644 index 00000000..34df96ae Binary files /dev/null and b/sources/Swappy/src/swappy/classes.dex differ