Skip to content

Commit b3fab38

Browse files
authored
Control jvm thread on our side (#26)
* control jvm thread on defold side * undef
1 parent c27ac51 commit b3fab38

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

firebase_analytics/src/firebase_analytics.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#if defined(DM_PLATFORM_ANDROID) || defined(DM_PLATFORM_IOS)
88

9+
#include <dmsdk/dlib/android.h>
10+
911
#include "firebase/app.h"
1012
#include "firebase/analytics.h"
1113
#include "firebase/analytics/event_names.h"
@@ -27,9 +29,11 @@ void FirebaseAnalytics_Safe_LogEvent(lua_State*, const char* name, const firebas
2729
{
2830
LogEvent(name, params, number_of_parameters);
2931
}
32+
#define THREAD_ATTACHER() dmAndroid::ThreadAttacher threadAttacher;
33+
#else
34+
#define THREAD_ATTACHER()
3035
#endif
3136

32-
3337
static int FirebaseAnalytics_Init(lua_State* L) {
3438
DM_LUA_STACK_CHECK(L, 0);
3539
const firebase::App* app = Firebase_GetFirebaseApp();
@@ -93,6 +97,7 @@ static int FirebaseAnalytics_Analytics_Log(lua_State* L) {
9397
return 0;
9498
}
9599
const char* name = luaL_checkstring(L, 1);
100+
THREAD_ATTACHER();
96101
LogEvent(name);
97102
return 0;
98103
}
@@ -107,6 +112,7 @@ static int FirebaseAnalytics_Analytics_LogString(lua_State* L) {
107112
const char* name = luaL_checkstring(L, 1);
108113
const char* parameter_name = luaL_checkstring(L, 2);
109114
const char* parameter_value = luaL_checkstring(L, 3);
115+
THREAD_ATTACHER();
110116
LogEvent(name, parameter_name, parameter_value);
111117
return 0;
112118
}
@@ -121,6 +127,7 @@ static int FirebaseAnalytics_Analytics_LogInt(lua_State* L) {
121127
const char* name = luaL_checkstring(L, 1);
122128
const char* parameter_name = luaL_checkstring(L, 2);
123129
const int parameter_value = luaL_checkint(L, 3);
130+
THREAD_ATTACHER();
124131
LogEvent(name, parameter_name, parameter_value);
125132
return 0;
126133
}
@@ -135,6 +142,7 @@ static int FirebaseAnalytics_Analytics_LogNumber(lua_State* L) {
135142
const char* name = luaL_checkstring(L, 1);
136143
const char* parameter_name = luaL_checkstring(L, 2);
137144
const lua_Number parameter_value = luaL_checknumber(L, 3);
145+
THREAD_ATTACHER();
138146
LogEvent(name, parameter_name, parameter_value);
139147
return 0;
140148
}
@@ -189,7 +197,7 @@ static int FirebaseAnalytics_Analytics_LogTable(lua_State* L) {
189197
lua_pop(L, 1);
190198
++size;
191199
}
192-
200+
THREAD_ATTACHER();
193201
FirebaseAnalytics_Safe_LogEvent(L, name, params, size);
194202

195203
lua_pop(L, 1);
@@ -203,6 +211,7 @@ static int FirebaseAnalytics_Analytics_Reset(lua_State* L) {
203211
dmLogWarning("Firebase Analytics has not been initialized! Make sure to call firebase.analytics.init().");
204212
return 0;
205213
}
214+
THREAD_ATTACHER();
206215
ResetAnalyticsData();
207216
return 0;
208217
}
@@ -215,6 +224,7 @@ static int FirebaseAnalytics_Analytics_SetEnabled(lua_State* L) {
215224
return 0;
216225
}
217226
int enabled = lua_toboolean(L, 1);
227+
THREAD_ATTACHER();
218228
SetAnalyticsCollectionEnabled((bool)enabled);
219229
return 0;
220230
}
@@ -233,6 +243,7 @@ static int FirebaseAnalytics_Analytics_SetUserProperty(lua_State* L) {
233243
}
234244
const char* name = luaL_checkstring(L, 1);
235245
const char* property = luaL_checkstring(L, 2);
246+
THREAD_ATTACHER();
236247
SetUserProperty(name, property);
237248
return 0;
238249
}
@@ -245,6 +256,7 @@ static int FirebaseAnalytics_Analytics_SetUserId(lua_State* L) {
245256
return 0;
246257
}
247258
const char* user_id = luaL_checkstring(L, 1);
259+
THREAD_ATTACHER();
248260
SetUserId(user_id);
249261
return 0;
250262
}
@@ -397,7 +409,7 @@ static void LuaInit(lua_State* L) {
397409

398410
lua_pop(L, 1); // pop "firebase" global table
399411
}
400-
412+
#undef THREAD_ATTACHER()
401413
#endif
402414

403415
dmExtension::Result AppInitializeFirebaseAnalyticsExtension(dmExtension::AppParams* params) {

0 commit comments

Comments
 (0)