sdl: use mutex in printf()

This prevents lines of output being overwritten by different threads.

Change-Id: I24cee52238b53c8a4b2536e082bb4bcd103d8d60
diff --git a/apps/plugins/sdl/wrappers.c b/apps/plugins/sdl/wrappers.c
index 02e9db1..efa29ea 100644
--- a/apps/plugins/sdl/wrappers.c
+++ b/apps/plugins/sdl/wrappers.c
@@ -333,11 +333,24 @@
     return 1;
 }
 
+
 /* stolen from doom */
 // Here is a hacked up printf command to get the output from the game.
 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];
     rb->yield();
     va_list ap;
@@ -362,6 +375,9 @@
             rb->lcd_clear_display();
         }
     }
+
+    rb->mutex_unlock(&printf_mutex);
+
     return 1;
 }