diff --git a/bsp/simulator/drivers/sdl_fb.c b/bsp/simulator/drivers/sdl_fb.c index 752a6fb93c5052b04d1db97730cced08bd65e877..714d263ba029c60f848da926ccfb3f8149fe1ce1 100755 --- a/bsp/simulator/drivers/sdl_fb.c +++ b/bsp/simulator/drivers/sdl_fb.c @@ -141,6 +141,7 @@ static void sdlfb_hw_init(void) #include #else #include +#include #endif #include @@ -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 }