sdl: use mutex in printf()
This prevents lines of output being overwritten by different threads. Change-Id: I24cee52238b53c8a4b2536e082bb4bcd103d8d60
This commit is contained in:
parent
fee68fc612
commit
7ba2ef566e
1 changed files with 17 additions and 1 deletions
|
@ -333,11 +333,24 @@ int fscanf_wrapper(FILE *f, const char *fmt, ...)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* stolen from doom */
|
/* stolen from doom */
|
||||||
// Here is a hacked up printf command to get the output from the game.
|
// Here is a hacked up printf command to get the output from the game.
|
||||||
int printf_wrapper(const char *fmt, ...)
|
int printf_wrapper(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
static int p_xtpt;
|
static volatile struct mutex printf_mutex;
|
||||||
|
static volatile int mutex_init = 0;
|
||||||
|
|
||||||
|
if(!mutex_init)
|
||||||
|
{
|
||||||
|
rb->mutex_init(&printf_mutex);
|
||||||
|
mutex_init = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static volatile int p_xtpt;
|
||||||
|
|
||||||
|
rb->mutex_lock(&printf_mutex);
|
||||||
|
|
||||||
char p_buf[256];
|
char p_buf[256];
|
||||||
rb->yield();
|
rb->yield();
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -362,6 +375,9 @@ int printf_wrapper(const char *fmt, ...)
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rb->mutex_unlock(&printf_mutex);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue