6
6
7
7
#if defined(DM_PLATFORM_ANDROID) || defined(DM_PLATFORM_IOS)
8
8
9
+ #include < dmsdk/dlib/android.h>
10
+
9
11
#include " firebase/app.h"
10
12
#include " firebase/analytics.h"
11
13
#include " firebase/analytics/event_names.h"
@@ -27,9 +29,11 @@ void FirebaseAnalytics_Safe_LogEvent(lua_State*, const char* name, const firebas
27
29
{
28
30
LogEvent (name, params, number_of_parameters);
29
31
}
32
+ #define THREAD_ATTACHER () dmAndroid::ThreadAttacher threadAttacher;
33
+ #else
34
+ #define THREAD_ATTACHER ()
30
35
#endif
31
36
32
-
33
37
static int FirebaseAnalytics_Init (lua_State* L) {
34
38
DM_LUA_STACK_CHECK (L, 0 );
35
39
const firebase::App* app = Firebase_GetFirebaseApp ();
@@ -93,6 +97,7 @@ static int FirebaseAnalytics_Analytics_Log(lua_State* L) {
93
97
return 0 ;
94
98
}
95
99
const char * name = luaL_checkstring (L, 1 );
100
+ THREAD_ATTACHER ();
96
101
LogEvent (name);
97
102
return 0 ;
98
103
}
@@ -107,6 +112,7 @@ static int FirebaseAnalytics_Analytics_LogString(lua_State* L) {
107
112
const char * name = luaL_checkstring (L, 1 );
108
113
const char * parameter_name = luaL_checkstring (L, 2 );
109
114
const char * parameter_value = luaL_checkstring (L, 3 );
115
+ THREAD_ATTACHER ();
110
116
LogEvent (name, parameter_name, parameter_value);
111
117
return 0 ;
112
118
}
@@ -121,6 +127,7 @@ static int FirebaseAnalytics_Analytics_LogInt(lua_State* L) {
121
127
const char * name = luaL_checkstring (L, 1 );
122
128
const char * parameter_name = luaL_checkstring (L, 2 );
123
129
const int parameter_value = luaL_checkint (L, 3 );
130
+ THREAD_ATTACHER ();
124
131
LogEvent (name, parameter_name, parameter_value);
125
132
return 0 ;
126
133
}
@@ -135,6 +142,7 @@ static int FirebaseAnalytics_Analytics_LogNumber(lua_State* L) {
135
142
const char * name = luaL_checkstring (L, 1 );
136
143
const char * parameter_name = luaL_checkstring (L, 2 );
137
144
const lua_Number parameter_value = luaL_checknumber (L, 3 );
145
+ THREAD_ATTACHER ();
138
146
LogEvent (name, parameter_name, parameter_value);
139
147
return 0 ;
140
148
}
@@ -189,7 +197,7 @@ static int FirebaseAnalytics_Analytics_LogTable(lua_State* L) {
189
197
lua_pop (L, 1 );
190
198
++size;
191
199
}
192
-
200
+ THREAD_ATTACHER ();
193
201
FirebaseAnalytics_Safe_LogEvent (L, name, params, size);
194
202
195
203
lua_pop (L, 1 );
@@ -203,6 +211,7 @@ static int FirebaseAnalytics_Analytics_Reset(lua_State* L) {
203
211
dmLogWarning (" Firebase Analytics has not been initialized! Make sure to call firebase.analytics.init()." );
204
212
return 0 ;
205
213
}
214
+ THREAD_ATTACHER ();
206
215
ResetAnalyticsData ();
207
216
return 0 ;
208
217
}
@@ -215,6 +224,7 @@ static int FirebaseAnalytics_Analytics_SetEnabled(lua_State* L) {
215
224
return 0 ;
216
225
}
217
226
int enabled = lua_toboolean (L, 1 );
227
+ THREAD_ATTACHER ();
218
228
SetAnalyticsCollectionEnabled ((bool )enabled);
219
229
return 0 ;
220
230
}
@@ -233,6 +243,7 @@ static int FirebaseAnalytics_Analytics_SetUserProperty(lua_State* L) {
233
243
}
234
244
const char * name = luaL_checkstring (L, 1 );
235
245
const char * property = luaL_checkstring (L, 2 );
246
+ THREAD_ATTACHER ();
236
247
SetUserProperty (name, property);
237
248
return 0 ;
238
249
}
@@ -245,6 +256,7 @@ static int FirebaseAnalytics_Analytics_SetUserId(lua_State* L) {
245
256
return 0 ;
246
257
}
247
258
const char * user_id = luaL_checkstring (L, 1 );
259
+ THREAD_ATTACHER ();
248
260
SetUserId (user_id);
249
261
return 0 ;
250
262
}
@@ -397,7 +409,7 @@ static void LuaInit(lua_State* L) {
397
409
398
410
lua_pop (L, 1 ); // pop "firebase" global table
399
411
}
400
-
412
+ # undef THREAD_ATTACHER()
401
413
#endif
402
414
403
415
dmExtension::Result AppInitializeFirebaseAnalyticsExtension (dmExtension::AppParams* params) {
0 commit comments