void* viewport_loop(void *ptr) { viewport_t *viewport = (viewport_t *)ptr; SDL_Event event; //printf("viewport_loop 1\n"); while(!viewport->done) { int result = !SDL_WaitEvent(&event); //printf("viewport_loop 2\n"); if(result) viewport->done = 1; switch(event.type) { case SDL_KEYDOWN: { stop_status(); viewport_set_done(viewport); break; } case SDL_MOUSEMOTION: { SDL_MouseMotionEvent *mouse_event = (SDL_MouseMotionEvent*)&event; viewport->cursor_x = mouse_event->x; viewport->cursor_y = mouse_event->y; cursor_motion(viewport); break; } case SDL_MOUSEBUTTONDOWN: { SDL_MouseButtonEvent *mouse_event = (SDL_MouseButtonEvent*)&event; viewport->which_button = mouse_event->button - 1; viewport->button_down = 1; button_press(viewport); break; } case SDL_MOUSEBUTTONUP: viewport->button_down = 0; break; case SDL_QUIT: viewport->done = 1; break; } } }
void* viewport_loop(void *ptr) { viewport_t *viewport = (viewport_t *)ptr; SDL_Event event; //printf("viewport_loop 1\n"); while(!viewport->done) { int result = !SDL_WaitEvent(&event); //printf("viewport_loop 2\n"); if(result) viewport->done = 1; switch(event.type) { case SDL_KEYDOWN: { viewport->key_pressed = event.key.keysym; keypress_event(viewport); break; } case SDL_MOUSEMOTION: { SDL_Event compress_event; while(SDL_PollEvent(&compress_event)) { if(compress_event.type != SDL_MOUSEMOTION) { SDL_PushEvent(&compress_event); break; } event = compress_event; } SDL_MouseMotionEvent *mouse_event = (SDL_MouseMotionEvent*)&event; viewport->cursor_x = mouse_event->x; viewport->cursor_y = mouse_event->y; cursor_motion(viewport); break; } case SDL_MOUSEBUTTONDOWN: { SDL_MouseButtonEvent *mouse_event = (SDL_MouseButtonEvent*)&event; viewport->which_button = mouse_event->button - 1; viewport->button_down = 1; button_press(viewport); break; } case SDL_MOUSEBUTTONUP: viewport->button_down = 0; break; case SDL_QUIT: viewport->done = 1; break; } } }