Core: Create mThreadLogger

This commit is contained in:
Jeffrey Pfau 2016-02-08 05:26:13 -08:00
parent b619ebf965
commit 5c81fc76d2
3 changed files with 15 additions and 6 deletions

View File

@ -15,7 +15,9 @@ enum mLogLevel {
mLOG_INFO = 0x08,
mLOG_DEBUG = 0x10,
mLOG_STUB = 0x20,
mLOG_GAME_ERROR = 0x40
mLOG_GAME_ERROR = 0x40,
mLOG_ALL = 0x7F
};
struct mLogger {

View File

@ -142,6 +142,7 @@ static THREAD_ENTRY _mCoreThreadRun(void* context) {
bool mCoreThreadStart(struct mCoreThread* threadContext) {
threadContext->state = THREAD_INITIALIZED;
threadContext->logger.p = threadContext;
MutexInit(&threadContext->stateMutex);
ConditionInit(&threadContext->stateCond);
@ -380,19 +381,19 @@ struct mCoreThread* mCoreThreadGet(void) {
#endif
static void _mCoreLog(struct mLogger* logger, int category, enum mLogLevel level, const char* format, va_list args) {
UNUSED(logger);
printf("%s: ", mLogCategoryName(category));
vprintf(format, args);
printf("\n");
}
struct mLogger* mCoreThreadLogger(void) {
struct mCoreThread* thread = mCoreThreadGet();
if (thread) {
if (!thread->logger.log) {
thread->logger.log = _mCoreLog;
if (!thread->logger.d.log) {
thread->logger.d.log = _mCoreLog;
}
return &thread->logger;
return &thread->logger.d;
}
return NULL;
}

View File

@ -31,6 +31,12 @@ enum mCoreThreadState {
THREAD_CRASHED
};
struct mCoreThread;
struct mThreadLogger {
struct mLogger d;
struct mCoreThread* p;
};
struct mCoreThread {
// Input
struct mCore* core;
@ -45,7 +51,7 @@ struct mCoreThread {
int interruptDepth;
bool frameWasOn;
struct mLogger logger;
struct mThreadLogger logger;
enum mLogLevel logLevel;
ThreadCallback startCallback;
ThreadCallback cleanCallback;