Browse Source

just mask signal in sdl_fb.c

prife 13 years ago
parent
commit
d7f8f375df
1 changed files with 12 additions and 4 deletions
  1. 12 4
      bsp/simulator/drivers/sdl_fb.c

+ 12 - 4
bsp/simulator/drivers/sdl_fb.c

@@ -141,6 +141,7 @@ static void sdlfb_hw_init(void)
 #include  <mmsystem.h>
 #else
 #include <pthread.h>
+#include <signal.h>
 #endif
 
 #include  <stdio.h>
@@ -158,8 +159,15 @@ static void *sdl_loop(void *lpParam)
     int quit = 0;
     SDL_Event event;
     int button_state = 0;
-
     rt_device_t device;
+
+#ifndef _WIN32
+    sigset_t  sigmask, oldmask;
+    /* set the getchar without buffer */
+    sigfillset(&sigmask);
+    pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask);
+#endif
+
     sdlfb_hw_init();
 
     device = rt_device_find("sdl");
@@ -315,14 +323,14 @@ void rt_hw_sdl_start(void)
     }
     ResumeThread(thread);
 #else
-	/* Linux */
-	pthread_t pid;
+    /* Linux */
+    pthread_t pid;
     int res;
     res = pthread_create(&pid, NULL, &sdl_loop, NULL);
     if (res)
     {
         printf("pthread create sdl thread faild, <%d>\n", res);
         exit(EXIT_FAILURE);
-	}
+    }
 #endif
 }