From cd39485232e27360e3d2637be5a7c1ddee8ab7e8 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Wed, 11 Aug 2010 00:23:56 +0000 Subject: [PATCH] Critical fix for Airbrush, to prevent it from spiraling to death when airbrushing time-consuming brushes : Event queue would fill with 'tick' events, mouse button release wouldn't be caught, more airbrushing , more cpu cost, deadlock git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1569 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- src/input.c | 2 +- src/operatio.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/input.c b/src/input.c index 2adf7a06..993e26d9 100644 --- a/src/input.c +++ b/src/input.c @@ -779,7 +779,7 @@ int Get_input(void) break; case SDL_USEREVENT: - user_feedback_required = 1; + //user_feedback_required = 1; break; default: //DEBUG("Unhandled SDL event number : ",event.type); diff --git a/src/operatio.c b/src/operatio.c index 704910d2..19ebcaa8 100644 --- a/src/operatio.c +++ b/src/operatio.c @@ -1908,10 +1908,13 @@ void Airbrush_1_0(void) Backup(); Shade_table=Shade_table_left; - Airbrush_next_time = SDL_GetTicks()+Airbrush_delay*10; //Need_Timer_events=1; //Activate_timer(10); - Airbrush(LEFT_SIDE); + if (SDL_GetTicks()>Airbrush_next_time) + { + Airbrush(LEFT_SIDE); + Airbrush_next_time = SDL_GetTicks()+Airbrush_delay*10; + } Operation_push(Paintbrush_X); Operation_push(Paintbrush_Y); @@ -1932,10 +1935,13 @@ void Airbrush_2_0(void) Init_start_operation(); Backup(); Shade_table=Shade_table_right; - Airbrush_next_time = SDL_GetTicks()+Airbrush_delay*10; //Need_Timer_events=1; //Activate_timer(10); - Airbrush(RIGHT_SIDE); + if (SDL_GetTicks()>Airbrush_next_time) + { + Airbrush(RIGHT_SIDE); + Airbrush_next_time = SDL_GetTicks()+Airbrush_delay*10; + } Operation_push(Paintbrush_X); Operation_push(Paintbrush_Y);