added eat_startup_events
This commit is contained in:
parent
ab34eedf5f
commit
a10b05af6d
2 changed files with 96 additions and 57 deletions
|
|
@ -18,6 +18,10 @@ http://www.newbreedsoftware.com/tuxpaint/
|
||||||
loading into a separate thread. You only wait if you want the text tool.
|
loading into a separate thread. You only wait if you want the text tool.
|
||||||
(450 MHz Mac G4, 7200 RPM ATA disk, about 200 font files)
|
(450 MHz Mac G4, 7200 RPM ATA disk, about 200 font files)
|
||||||
|
|
||||||
|
* added eat_startup_events in an attempt to make early escape possible
|
||||||
|
(perhaps the user started Tux Paint by mistake, or the system is
|
||||||
|
swapping itself to death) Unfortunately, it seems to do nothing!
|
||||||
|
|
||||||
* Stamp tool improvements:
|
* Stamp tool improvements:
|
||||||
------------------------
|
------------------------
|
||||||
* Greatly improved stamp outlining (to avoid empty rows or columns
|
* Greatly improved stamp outlining (to avoid empty rows or columns
|
||||||
|
|
|
||||||
149
src/tuxpaint.c
149
src/tuxpaint.c
|
|
@ -2300,7 +2300,78 @@ static int charsize(char c);
|
||||||
|
|
||||||
#define USEREVENT_TEXT_UPDATE 1
|
#define USEREVENT_TEXT_UPDATE 1
|
||||||
|
|
||||||
|
static int bypass_splash_wait;
|
||||||
|
|
||||||
|
// Wait for a keypress or mouse click
|
||||||
|
// counter is in 1/10 second units
|
||||||
|
static void do_wait(int counter)
|
||||||
|
{
|
||||||
|
SDL_Event event;
|
||||||
|
int done;
|
||||||
|
|
||||||
|
if(bypass_splash_wait)
|
||||||
|
return;
|
||||||
|
|
||||||
|
done = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
while (mySDL_PollEvent(&event))
|
||||||
|
{
|
||||||
|
if (event.type == SDL_QUIT)
|
||||||
|
{
|
||||||
|
done = 1;
|
||||||
|
|
||||||
|
/* FIXME: Handle SDL_Quit better */
|
||||||
|
}
|
||||||
|
else if (event.type == SDL_ACTIVEEVENT)
|
||||||
|
{
|
||||||
|
handle_active(&event);
|
||||||
|
}
|
||||||
|
else if (event.type == SDL_KEYDOWN)
|
||||||
|
{
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
else if (event.type == SDL_MOUSEBUTTONDOWN &&
|
||||||
|
valid_click(event.button.button))
|
||||||
|
{
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
counter--;
|
||||||
|
SDL_Delay(100);
|
||||||
|
}
|
||||||
|
while (!done && counter > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// This lets us exit quickly; perhaps the system is swapping to death
|
||||||
|
// or the user started Tux Paint by accident. It also lets the user
|
||||||
|
// more easily bypass the splash screen wait.
|
||||||
|
static void eat_startup_events(void)
|
||||||
|
{
|
||||||
|
SDL_Event event;
|
||||||
|
while (SDL_PollEvent(&event))
|
||||||
|
{
|
||||||
|
if (event.type == SDL_QUIT)
|
||||||
|
exit(0);
|
||||||
|
else if (event.type == SDL_ACTIVEEVENT)
|
||||||
|
handle_active(&event);
|
||||||
|
else if (event.type == SDL_KEYDOWN)
|
||||||
|
{
|
||||||
|
SDLKey key = event.key.keysym.sym;
|
||||||
|
SDLMod ctrl = event.key.keysym.mod & (KMOD_CTRL|KMOD_LCTRL|KMOD_RCTRL);
|
||||||
|
SDLMod alt = event.key.keysym.mod & KMOD_ALT;
|
||||||
|
if (key==SDLK_ESCAPE || (key==SDLK_c && ctrl) || (key==SDLK_F4 && alt))
|
||||||
|
exit(0);
|
||||||
|
else
|
||||||
|
bypass_splash_wait = 1;
|
||||||
|
}
|
||||||
|
else if (event.type == SDL_MOUSEBUTTONDOWN)
|
||||||
|
bypass_splash_wait = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef __powerpc__
|
#ifdef __powerpc__
|
||||||
|
|
@ -6446,6 +6517,7 @@ static void tp_ftw(char *restrict const dir, unsigned dirlen, int rsrc,
|
||||||
#if 1
|
#if 1
|
||||||
#ifndef THREADED_FONTS
|
#ifndef THREADED_FONTS
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
dir[dirlen] = '\0'; // repair it (clobbered for stat() call above)
|
dir[dirlen] = '\0'; // repair it (clobbered for stat() call above)
|
||||||
|
|
@ -6487,6 +6559,7 @@ static void loadfont_callback(const char *restrict const dir, unsigned dirlen, t
|
||||||
#if 1
|
#if 1
|
||||||
#ifndef THREADED_FONTS
|
#ifndef THREADED_FONTS
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
int loadable = 0;
|
int loadable = 0;
|
||||||
|
|
@ -6589,6 +6662,7 @@ static void loadbrush_callback(const char *restrict const dir, unsigned dirlen,
|
||||||
while(i--)
|
while(i--)
|
||||||
{
|
{
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
if (strstr(files[i].str, ".png"))
|
if (strstr(files[i].str, ".png"))
|
||||||
{
|
{
|
||||||
char fname[512];
|
char fname[512];
|
||||||
|
|
@ -6707,6 +6781,7 @@ static void loadstamp_callback(const char *restrict const dir, unsigned dirlen,
|
||||||
while(i--)
|
while(i--)
|
||||||
{
|
{
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
if (strstr(files[i].str, ".png") && !strstr(files[i].str, "_mirror.png"))
|
if (strstr(files[i].str, ".png") && !strstr(files[i].str, "_mirror.png"))
|
||||||
{
|
{
|
||||||
|
|
@ -7606,6 +7681,7 @@ static void setup(int argc, char * argv[])
|
||||||
14 / scale, 14 / scale);
|
14 / scale, 14 / scale);
|
||||||
|
|
||||||
do_setcursor(cursor_watch);
|
do_setcursor(cursor_watch);
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
font_thread = SDL_CreateThread(load_user_fonts, NULL);
|
font_thread = SDL_CreateThread(load_user_fonts, NULL);
|
||||||
|
|
||||||
|
|
@ -7744,6 +7820,7 @@ static void setup(int argc, char * argv[])
|
||||||
SDL_FillRect(img_grey, NULL, SDL_MapRGBA(screen->format, 0x88, 0x88, 0x88, 255));
|
SDL_FillRect(img_grey, NULL, SDL_MapRGBA(screen->format, 0x88, 0x88, 0x88, 255));
|
||||||
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
img_yes = loadimage(DATA_PREFIX "images/ui/yes.png");
|
img_yes = loadimage(DATA_PREFIX "images/ui/yes.png");
|
||||||
img_no = loadimage(DATA_PREFIX "images/ui/no.png");
|
img_no = loadimage(DATA_PREFIX "images/ui/no.png");
|
||||||
|
|
@ -7767,6 +7844,7 @@ static void setup(int argc, char * argv[])
|
||||||
img_italic = loadimage(DATA_PREFIX "images/ui/italic.png");
|
img_italic = loadimage(DATA_PREFIX "images/ui/italic.png");
|
||||||
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
tmp_imgcurup = loadimage(DATA_PREFIX "images/ui/cursor_up_large.png");
|
tmp_imgcurup = loadimage(DATA_PREFIX "images/ui/cursor_up_large.png");
|
||||||
tmp_imgcurdown = loadimage(DATA_PREFIX "images/ui/cursor_down_large.png");
|
tmp_imgcurdown = loadimage(DATA_PREFIX "images/ui/cursor_down_large.png");
|
||||||
|
|
@ -7781,6 +7859,7 @@ static void setup(int argc, char * argv[])
|
||||||
SDL_FreeSurface(tmp_imgcurdown);
|
SDL_FreeSurface(tmp_imgcurdown);
|
||||||
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
img_scroll_up = loadimage(DATA_PREFIX "images/ui/scroll_up.png");
|
img_scroll_up = loadimage(DATA_PREFIX "images/ui/scroll_up.png");
|
||||||
img_scroll_down = loadimage(DATA_PREFIX "images/ui/scroll_down.png");
|
img_scroll_down = loadimage(DATA_PREFIX "images/ui/scroll_down.png");
|
||||||
|
|
@ -7793,6 +7872,7 @@ static void setup(int argc, char * argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
img_sparkles = loadimage(DATA_PREFIX "images/ui/sparkles.png");
|
img_sparkles = loadimage(DATA_PREFIX "images/ui/sparkles.png");
|
||||||
img_grass = loadimage(DATA_PREFIX "images/ui/grass.png");
|
img_grass = loadimage(DATA_PREFIX "images/ui/grass.png");
|
||||||
|
|
@ -7862,35 +7942,31 @@ static void setup(int argc, char * argv[])
|
||||||
|
|
||||||
|
|
||||||
/* Load magic icons: */
|
/* Load magic icons: */
|
||||||
|
|
||||||
for (i = 0; i < NUM_MAGICS; i++)
|
for (i = 0; i < NUM_MAGICS; i++)
|
||||||
{
|
img_magics[i] = loadimage(magic_img_fnames[i]);
|
||||||
img_magics[i] = loadimage(magic_img_fnames[i]);
|
|
||||||
show_progress_bar();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
/* Load shape icons: */
|
/* Load shape icons: */
|
||||||
|
|
||||||
for (i = 0; i < NUM_SHAPES; i++)
|
for (i = 0; i < NUM_SHAPES; i++)
|
||||||
{
|
img_shapes[i] = loadimage(shape_img_fnames[i]);
|
||||||
img_shapes[i] = loadimage(shape_img_fnames[i]);
|
|
||||||
show_progress_bar();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
/* Load tip tux images: */
|
/* Load tip tux images: */
|
||||||
|
|
||||||
for (i = 0; i < NUM_TIP_TUX; i++)
|
for (i = 0; i < NUM_TIP_TUX; i++)
|
||||||
{
|
img_tux[i] = loadimage(tux_img_fnames[i]);
|
||||||
img_tux[i] = loadimage(tux_img_fnames[i]);
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
}
|
eat_startup_events();
|
||||||
|
|
||||||
img_mouse = loadimage(DATA_PREFIX "images/ui/mouse.png");
|
img_mouse = loadimage(DATA_PREFIX "images/ui/mouse.png");
|
||||||
img_mouse_click = loadimage(DATA_PREFIX "images/ui/mouse_click.png");
|
img_mouse_click = loadimage(DATA_PREFIX "images/ui/mouse_click.png");
|
||||||
|
|
||||||
show_progress_bar();
|
show_progress_bar();
|
||||||
|
eat_startup_events();
|
||||||
|
|
||||||
/* Create toolbox and selector labels: */
|
/* Create toolbox and selector labels: */
|
||||||
|
|
||||||
|
|
@ -10846,47 +10922,6 @@ static SDL_Surface * loadaltimage(const char * const fname)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Wait for a keypress or mouse click
|
|
||||||
// counter is in 1/10 second units
|
|
||||||
static void do_wait(int counter)
|
|
||||||
{
|
|
||||||
SDL_Event event;
|
|
||||||
int done;
|
|
||||||
|
|
||||||
done = 0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
while (mySDL_PollEvent(&event))
|
|
||||||
{
|
|
||||||
if (event.type == SDL_QUIT)
|
|
||||||
{
|
|
||||||
done = 1;
|
|
||||||
|
|
||||||
/* FIXME: Handle SDL_Quit better */
|
|
||||||
}
|
|
||||||
else if (event.type == SDL_ACTIVEEVENT)
|
|
||||||
{
|
|
||||||
handle_active(&event);
|
|
||||||
}
|
|
||||||
else if (event.type == SDL_KEYDOWN)
|
|
||||||
{
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
else if (event.type == SDL_MOUSEBUTTONDOWN &&
|
|
||||||
valid_click(event.button.button))
|
|
||||||
{
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
counter--;
|
|
||||||
SDL_Delay(100);
|
|
||||||
}
|
|
||||||
while (!done && counter > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int SDLCALL NondefectiveBlit(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
|
static int SDLCALL NondefectiveBlit(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
|
||||||
{
|
{
|
||||||
int dstx = 0;
|
int dstx = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue