projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
DecoderSelector: Make PD info text selectable.
[pulseview.git]
/
android
/
loghandler.cpp
diff --git
a/android/loghandler.cpp
b/android/loghandler.cpp
index b50242041bcc3a4171038defea48765eb440ee5e..c9953a6e2894e21e924e99d8ffa4fbefa2b8efb7 100644
(file)
--- a/
android/loghandler.cpp
+++ b/
android/loghandler.cpp
@@
-23,13
+23,21
@@
#include <android/log.h>
#include <android/log.h>
-#include <
stdint.h
>
+#include <
cstdint
>
#include <libsigrok/libsigrok.h>
#include <libsigrok/libsigrok.h>
-#include "android/loghandler.h"
+#include "android/loghandler.h
pp
"
namespace pv {
namespace pv {
+static sr_log_callback prev_sr_log_cb;
+static void *prev_sr_log_cb_data;
+
+#ifdef ENABLE_DECODE
+static srd_log_callback prev_srd_log_cb;
+static void *prev_srd_log_cb_data;
+#endif
+
int AndroidLogHandler::sr_callback(void *cb_data, int loglevel, const char *format, va_list args)
{
static const int prio[] = {
int AndroidLogHandler::sr_callback(void *cb_data, int loglevel, const char *format, va_list args)
{
static const int prio[] = {
@@
-40,19
+48,26
@@
int AndroidLogHandler::sr_callback(void *cb_data, int loglevel, const char *form
[SR_LOG_DBG] = ANDROID_LOG_DEBUG,
[SR_LOG_SPEW] = ANDROID_LOG_VERBOSE,
};
[SR_LOG_DBG] = ANDROID_LOG_DEBUG,
[SR_LOG_SPEW] = ANDROID_LOG_VERBOSE,
};
+ va_list args2;
int ret;
/* This specific log callback doesn't need the void pointer data. */
(void)cb_data;
int ret;
/* This specific log callback doesn't need the void pointer data. */
(void)cb_data;
+ /* Call the previously registered log callback (library's default). */
+ va_copy(args2, args);
+ if (prev_sr_log_cb)
+ prev_sr_log_cb(prev_sr_log_cb_data, loglevel, format, args2);
+ va_end(args2);
+
/* Only output messages of at least the selected loglevel(s). */
if (loglevel > sr_log_loglevel_get())
/* Only output messages of at least the selected loglevel(s). */
if (loglevel > sr_log_loglevel_get())
- return SR_OK;
/* TODO? */
+ return SR_OK;
if (loglevel < SR_LOG_NONE)
if (loglevel < SR_LOG_NONE)
- loglevel = SR_LOG_NONE;
+
loglevel = SR_LOG_NONE;
else if (loglevel > SR_LOG_SPEW)
else if (loglevel > SR_LOG_SPEW)
- loglevel = SR_LOG_SPEW;
+
loglevel = SR_LOG_SPEW;
ret = __android_log_vprint(prio[loglevel], "sr", format, args);
ret = __android_log_vprint(prio[loglevel], "sr", format, args);
@@
-70,19
+85,26
@@
int AndroidLogHandler::srd_callback(void *cb_data, int loglevel, const char *for
[SRD_LOG_DBG] = ANDROID_LOG_DEBUG,
[SRD_LOG_SPEW] = ANDROID_LOG_VERBOSE,
};
[SRD_LOG_DBG] = ANDROID_LOG_DEBUG,
[SRD_LOG_SPEW] = ANDROID_LOG_VERBOSE,
};
+ va_list args2;
int ret;
/* This specific log callback doesn't need the void pointer data. */
(void)cb_data;
int ret;
/* This specific log callback doesn't need the void pointer data. */
(void)cb_data;
+ /* Call the previously registered log callback (library's default). */
+ va_copy(args2, args);
+ if (prev_srd_log_cb)
+ prev_srd_log_cb(prev_srd_log_cb_data, loglevel, format, args2);
+ va_end(args2);
+
/* Only output messages of at least the selected loglevel(s). */
if (loglevel > srd_log_loglevel_get())
/* Only output messages of at least the selected loglevel(s). */
if (loglevel > srd_log_loglevel_get())
- return SRD_OK;
/* TODO? */
+ return SRD_OK;
if (loglevel < SRD_LOG_NONE)
if (loglevel < SRD_LOG_NONE)
- loglevel = SRD_LOG_NONE;
+
loglevel = SRD_LOG_NONE;
else if (loglevel > SRD_LOG_SPEW)
else if (loglevel > SRD_LOG_SPEW)
- loglevel = SRD_LOG_SPEW;
+
loglevel = SRD_LOG_SPEW;
ret = __android_log_vprint(prio[loglevel], "srd", format, args);
ret = __android_log_vprint(prio[loglevel], "srd", format, args);
@@
-94,11
+116,12
@@
int AndroidLogHandler::srd_callback(void *cb_data, int loglevel, const char *for
void AndroidLogHandler::install_callbacks()
{
void AndroidLogHandler::install_callbacks()
{
- sr_log_callback_set(sr_callback, NULL);
+ sr_log_callback_get(&prev_sr_log_cb, &prev_sr_log_cb_data);
+ sr_log_callback_set(sr_callback, nullptr);
#ifdef ENABLE_DECODE
#ifdef ENABLE_DECODE
- srd_log_callback_set(srd_callback, NULL);
+ srd_log_callback_get(&prev_srd_log_cb, &prev_srd_log_cb_data);
+ srd_log_callback_set(srd_callback, nullptr);
#endif
}
} // namespace pv
#endif
}
} // namespace pv
-