mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 09:30:25 +08:00
android: fixed g2o seg fault (CACHE_SE3_OFFSET not registered)
This commit is contained in:
@@ -83,6 +83,43 @@ static JavaVM *jvm;
|
||||
static jobject RTABMapActivity = 0;
|
||||
#endif
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#ifndef DISABLE_LOG
|
||||
//ref: https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/
|
||||
static int pfd[2];
|
||||
static pthread_t thr;
|
||||
static void *thread_func(void*)
|
||||
{
|
||||
ssize_t rdsz;
|
||||
char buf[128];
|
||||
while((rdsz = read(pfd[0], buf, sizeof buf - 1)) > 0) {
|
||||
if(buf[rdsz - 1] == '\n') --rdsz;
|
||||
buf[rdsz] = 0; /* add null-terminator */
|
||||
__android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, buf);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int start_logger()
|
||||
{
|
||||
/* make stdout line-buffered and stderr unbuffered */
|
||||
setvbuf(stdout, 0, _IOLBF, 0);
|
||||
setvbuf(stderr, 0, _IONBF, 0);
|
||||
|
||||
/* create the pipe and redirect stdout and stderr */
|
||||
pipe(pfd);
|
||||
dup2(pfd[1], 1);
|
||||
dup2(pfd[1], 2);
|
||||
|
||||
/* spawn the logging thread */
|
||||
if(pthread_create(&thr, 0, thread_func, 0) == -1)
|
||||
return -1;
|
||||
pthread_detach(thr);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
rtabmap::ParametersMap RTABMapApp::getRtabmapParameters()
|
||||
{
|
||||
rtabmap::ParametersMap parameters;
|
||||
@@ -244,6 +281,12 @@ RTABMapApp::RTABMapApp() :
|
||||
|
||||
this->registerToEventsManager();
|
||||
LOGI("RTABMapApp::RTABMapApp() end");
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#ifndef DISABLE_LOG
|
||||
start_logger();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef __ANDROID__ // __APPLE__
|
||||
|
||||
Reference in New Issue
Block a user