Less stdout noise when running Tux Paint

Avoid warnings when we cannot load non-existent SVGs by checking for file existence first.
(h/t Thomas K)

Add some "Info" and "Warning" labels to some output; improve some messages.

Free gerror that rsvg_handle_new_from_file() allocates.
This commit is contained in:
Bill Kendrick 2024-12-20 00:13:59 -08:00
parent fa2f06792e
commit 199f11ce31
2 changed files with 47 additions and 21 deletions

View file

@ -6,13 +6,18 @@ Copyright (c) 2002-2024
Various contributors (see below, and AUTHORS.txt)
https://tuxpaint.org/
2024.December.19 (0.9.35)
2024.December.20 (0.9.35)
* Other Improvements:
-------------------
+ Improved color picker: better behavior when clicking/tapping and
dragging hue/saturation box and value slider.
Bill Kendrick <bill@newbreedsoftware.com>
+ Less warning noise to stdout (e.g., don't complain about inability
to load SVGs that don't exist; check whether they exist, first).
h/t Thomas Klausner for mentioning it.
Bill Kendrick <bill@newbreedsoftware.com>
* Ports & Building:
-----------------
+ Don't use Linux-specific invocation of "install"; use "mkdir" & "cp"

View file

@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
June 14, 2002 - November 15, 2024
June 14, 2002 - December 20, 2024
*/
#include "platform.h"
@ -863,7 +863,7 @@ static void set_max_buttonscale(void)
max_h = (float)WINDOW_HEIGHT / (40 + (6 * 48) + (gd_colors.rows * 48) + 56);
button_scale = min(max_w, max_h);
fprintf(stderr, "Will use a button size of %d (scale = %f)\n", (int)(button_scale * ORIGINAL_BUTTON_SIZE),
fprintf(stderr, "Info: Will use a button size of %d (scale = %f)\n", (int)(button_scale * ORIGINAL_BUTTON_SIZE),
button_scale);
}
@ -920,7 +920,7 @@ static void setup_normal_screen_layout(void)
if (buttons_tall < 5)
{
fprintf(stderr,
"Button size '%d' with window size '%dx%d' is not reasonable (not tall enough).\n",
"Warning: Button size '%d' with window size '%dx%d' is not reasonable (not tall enough).\n",
button_w, WINDOW_WIDTH, WINDOW_HEIGHT);
set_max_buttonscale();
setup_normal_screen_layout();
@ -929,7 +929,7 @@ static void setup_normal_screen_layout(void)
if (r_canvas.w < button_w * 9)
{
fprintf(stderr,
"Button size '%d' with window size '%dx%d' is not reasonable (not wide enough).\n",
"Warning: Button size '%d' with window size '%dx%d' is not reasonable (not wide enough).\n",
button_w, WINDOW_WIDTH, WINDOW_HEIGHT);
set_max_buttonscale();
setup_normal_screen_layout();
@ -1725,7 +1725,7 @@ static SDL_Surface *render_text(TuxPaint_Font *restrict font, const char *restri
if (font == NULL)
{
fprintf(stderr, "render_text() received a NULL font!\n");
fprintf(stderr, "Warning: render_text() received a NULL font!\n");
fflush(stdout);
return NULL;
}
@ -3701,7 +3701,7 @@ static void mainloop(void)
}
if (kbd == NULL)
fprintf(stderr, "kbd = NULL\n");
fprintf(stderr, "Warning: kbd = NULL\n");
else
reposition_onscreen_keyboard(0);
}
@ -14282,10 +14282,17 @@ static SDL_Surface *load_starter_helper(char *path_and_basename,
char fname[256];
SDL_Surface *surf;
unsigned int i;
struct stat stat_buf;
ext = strdup(extension);
safe_snprintf(fname, sizeof(fname), "%s.%s", path_and_basename, ext);
if (stat(fname, &stat_buf) != 0)
{
/* File by that name doesn't exist; give up now */
return NULL;
}
surf = (*load_func) (fname);
if (surf == NULL)
@ -21353,9 +21360,11 @@ static SDL_Surface *_load_svg(const char *file)
rsvg_handle = rsvg_handle_new_from_file(file, &gerr);
if (rsvg_handle == NULL)
{
fprintf(stderr, "rsvg_handle_new_from_file(%s) failed\n", file);
fprintf(stderr, "rsvg_handle_new_from_file(%s) failed: %s\n", file, gerr->message);
free(gerr);
return (NULL);
}
free(gerr);
/* rsvg_handle_get_dimensions() is deprecated since since version 2.52,
but we currently support some platforms where it's not yet available
@ -21632,6 +21641,13 @@ static SDL_Surface *myIMG_Load_RWops(const char *file)
otherwise call SDL_Image lib's IMG_Load() (for PNGs, JPEGs, BMPs, etc.) */
static SDL_Surface *myIMG_Load(const char *file)
{
struct stat stat_buf;
if (stat(file, &stat_buf) != 0)
{
/* File by that name doesn't exist; give up now */
return NULL;
}
if (strlen(file) > 4 && strcasecmp(file + strlen(file) - 4, ".kpx") == 0)
{
return (load_kpx(file));
@ -28648,7 +28664,7 @@ static void setup_config(char *argv[])
{
if (strcmp(tmpcfg.tp_ui_font, "default") == 0)
{
printf /*DEBUG_PRINTF */ ("Requested default UI font, \"%s\"\n", PANGO_DEFAULT_FONT);
printf /*DEBUG_PRINTF */ ("Info: Requested default UI font, \"%s\"\n", PANGO_DEFAULT_FONT);
tp_ui_font = strdup(PANGO_DEFAULT_FONT);
if (PANGO_DEFAULT_FONT_FALLBACK != NULL)
{
@ -28658,12 +28674,12 @@ static void setup_config(char *argv[])
else
{
tp_ui_font = strdup(tmpcfg.tp_ui_font);
printf /*DEBUG_PRINTF */ ("Requested UI font described by \"%s\"\n", tp_ui_font);
printf /*DEBUG_PRINTF */ ("Info: Requested UI font described by \"%s\"\n", tp_ui_font);
}
}
else
{
printf /*DEBUG_PRINTF */ ("Requested default UI font, \"%s\"\n", PANGO_DEFAULT_FONT);
printf /*DEBUG_PRINTF */ ("Info: Requested default UI font, \"%s\"\n", PANGO_DEFAULT_FONT);
tp_ui_font = strdup(PANGO_DEFAULT_FONT);
if (PANGO_DEFAULT_FONT_FALLBACK != NULL)
{
@ -28713,19 +28729,19 @@ static void setup_config(char *argv[])
tp_ui_font = strdup(tp_ui_font_fallback);
tp_ui_font_fallback = NULL;
printf /*DEBUG_PRINTF */ ("Requested fallback default UI font, \"%s\"\n", tp_ui_font);
printf /*DEBUG_PRINTF */ ("Info: Requested fallback default UI font, \"%s\"\n", tp_ui_font);
tmp_str = ask_pango_for_font(tp_ui_font);
}
}
if (tmp_str != NULL)
{
printf("Actual UI font will be \"%s\"\n", tmp_str);
printf("Info: Actual UI font will be \"%s\"\n", tmp_str);
free(tmp_str);
}
else
{
printf("Error asking pango for actual font!\n");
printf("Error: Problem asking pango for actual font!\n");
}
/* FIXME: most of this is not required before starting the font scanner */
@ -29708,7 +29724,7 @@ static void setup(void)
joystick = SDL_JoystickOpen(joystick_dev);
if (joystick == NULL)
{
fprintf(stderr, "Could not open joystick device %d: %s\n", joystick_dev, SDL_GetError());
fprintf(stderr, "Info: Could not open joystick device %d: %s\n", joystick_dev, SDL_GetError());
}
else
{
@ -29853,14 +29869,16 @@ static void setup(void)
SDL_CreateWindow("Tux Paint", win_x, win_y,
WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_HWSURFACE);
if (window_screen == NULL)
printf("window_screen = NULL 1\n");
printf("Warning: Cannot open fullscreen with hardware surface\n");
#else
window_screen = SDL_CreateWindow(NULL, win_x, win_y, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_FULLSCREEN_DESKTOP);
if (window_screen == NULL)
printf("window_screen = NULL 2\n");
printf("Warning: Cannot open fullscreen with software surface\n");
#endif
/* FIXME: Check window_screen for being NULL, and abort?! (Also see below) -bjk 2024.12.20 */
renderer = SDL_CreateRenderer(window_screen, -1, 0);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
@ -29987,6 +30005,8 @@ static void setup(void)
if (mode.w >= WINDOW_WIDTH && mode.h >= WINDOW_HEIGHT)
{
/* Found a display capable of the chosen window size */
max_scrn_w = mode.w;
max_scrn_h = mode.h;
}
else
{
@ -30008,13 +30028,13 @@ static void setup(void)
/* Only found one display, and window size is larger? Use that window size */
if (WINDOW_WIDTH > max_scrn_w)
{
fprintf(stderr, "Asked for window width (%d) larger than max screen width (%d)\n", WINDOW_WIDTH, max_scrn_w);
fprintf(stderr, "Warning: Asked for window width (%d) larger than max screen width (%d)\n", WINDOW_WIDTH, max_scrn_w);
WINDOW_WIDTH = max_scrn_w;
}
if (WINDOW_HEIGHT > max_scrn_h)
{
fprintf(stderr, "Asked for window height (%d) larger than max screen height (%d)\n", WINDOW_HEIGHT, max_scrn_h);
fprintf(stderr, "Warning: Asked for window height (%d) larger than max screen height (%d)\n", WINDOW_HEIGHT, max_scrn_h);
WINDOW_HEIGHT = max_scrn_h;
}
}
@ -30024,13 +30044,14 @@ static void setup(void)
#ifdef USE_HWSURFACE
window_screen = SDL_CreateWindow("Tux Paint", win_x, win_y, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_HWSURFACE);
if (window_screen == NULL)
printf("window_screen = NULL 3\n");
printf("Warning: Could not create a window with a hardware surface\n");
#else
window_screen = SDL_CreateWindow("Tux Paint", win_x, win_y, WINDOW_WIDTH, WINDOW_HEIGHT, 0 /* no flags */ );
if (window_screen == NULL)
printf("window_screen = NULL 4\n");
printf("Warning: Could not create a window with a software surface\n");
#endif
/* FIXME: Check window_screen for being NULL, and abort?! (Also see above) -bjk 2024.12.20 */
/* Note: Seems that this depends on the compliance by the window manager.
Currently this doesn't work under Fvwm */