From 8243491de26a996fc42fbaf500b1e7f5ee1c81fa Mon Sep 17 00:00:00 2001 From: Nick Leeman Date: Fri, 26 Apr 2024 22:21:32 +0200 Subject: [PATCH 1/2] Add c_cpp_properties.json file for Linux configuration --- .vscode/c_cpp_properties.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..4b01a3e --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "/home/nick/Workspace/defold/engine/**", + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c17", + "cppStandard": "gnu++17", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file -- 2.47.2 From 406a594c8dfc5bdfe6d285e613ff3e5f234de6da Mon Sep 17 00:00:00 2001 From: Nick Leeman Date: Fri, 26 Apr 2024 22:21:37 +0200 Subject: [PATCH 2/2] Refactor IAP extension for Android and iOS platforms --- extension-iap/src/iap_android.cpp | 16 +++++++++++----- extension-iap/src/iap_ios.mm | 10 ++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/extension-iap/src/iap_android.cpp b/extension-iap/src/iap_android.cpp index f20602c..e8d37a5 100644 --- a/extension-iap/src/iap_android.cpp +++ b/extension-iap/src/iap_android.cpp @@ -1,5 +1,10 @@ #if defined(DM_PLATFORM_ANDROID) +#define EXTENSION_NAME IAPExt +#define LIB_NAME "IAPExt" +#define MODULE_NAME "IAPExt" +#define DLIB_LOG_DOMAIN LIB_NAME + #include #include @@ -8,8 +13,6 @@ #include "iap.h" #include "iap_private.h" -#define LIB_NAME "iap" - struct IAP { IAP() @@ -267,6 +270,7 @@ JNIEXPORT void JNICALL Java_com_defold_iap_IapJNI_onProductsResult(JNIEnv* env, cmd->m_Data = strdup(pl); env->ReleaseStringUTFChars(productList, pl); } + IAP_Queue_Push(&g_IAP.m_CommandQueue, cmd); } @@ -288,6 +292,7 @@ JNIEXPORT void JNICALL Java_com_defold_iap_IapJNI_onPurchaseResult__ILjava_lang_ cmd.m_Data = strdup(pd); env->ReleaseStringUTFChars(purchaseData, pd); } + IAP_Queue_Push(&g_IAP.m_CommandQueue, &cmd); } @@ -343,6 +348,7 @@ static void HandlePurchaseResult(const IAPCommand* cmd) if (!dmScript::SetupCallback(cmd->m_Callback)) { + dmLogError("Failed to setup callback"); assert(top == lua_gettop(L)); return; } @@ -358,6 +364,7 @@ static void HandlePurchaseResult(const IAPCommand* cmd) IAP_PushError(L, "purchase response was null", REASON_UNSPECIFIED); } } else if (cmd->m_ResponseCode == BILLING_RESPONSE_RESULT_USER_CANCELED) { + dmLogError("User canceled purchase"); lua_pushnil(L); IAP_PushError(L, "user canceled purchase", REASON_USER_CANCELED); } else { @@ -367,9 +374,7 @@ static void HandlePurchaseResult(const IAPCommand* cmd) } dmScript::PCall(L, 3, 0); - dmScript::TeardownCallback(cmd->m_Callback); - assert(top == lua_gettop(L)); } @@ -454,9 +459,10 @@ static dmExtension::Result FinalizeIAP(dmExtension::Params* params) env->DeleteGlobalRef(g_IAP.m_IAP); env->DeleteGlobalRef(g_IAP.m_IAPJNI); g_IAP.m_IAP = NULL; + return dmExtension::RESULT_OK; } -DM_DECLARE_EXTENSION(IAPExt, "IAP", 0, 0, InitializeIAP, UpdateIAP, 0, FinalizeIAP) +DM_DECLARE_EXTENSION(EXTENSION_NAME, LIB_NAME, 0, 0, InitializeIAP, UpdateIAP, 0, FinalizeIAP) #endif //DM_PLATFORM_ANDROID diff --git a/extension-iap/src/iap_ios.mm b/extension-iap/src/iap_ios.mm index f3b28fd..65c35c3 100644 --- a/extension-iap/src/iap_ios.mm +++ b/extension-iap/src/iap_ios.mm @@ -1,5 +1,10 @@ #if defined(DM_PLATFORM_IOS) +#define EXTENSION_NAME IAPExt +#define LIB_NAME "IAPExt" +#define MODULE_NAME "IAPExt" +#define DLIB_LOG_DOMAIN LIB_NAME + #include #include "iap.h" @@ -9,8 +14,6 @@ #import #import -#define LIB_NAME "iap" - struct IAP; @interface SKPaymentTransactionObserver : NSObject @@ -636,6 +639,5 @@ static dmExtension::Result FinalizeIAP(dmExtension::Params* params) } -DM_DECLARE_EXTENSION(IAPExt, "IAP", 0, 0, InitializeIAP, UpdateIAP, 0, FinalizeIAP) - +DM_DECLARE_EXTENSION(EXTENSION_NAME, LIB_NAME, 0, 0, InitializeIAP, UpdateIAP, 0, FinalizeIAP) #endif // DM_PLATFORM_IOS -- 2.47.2