X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fstderr.c;h=fafb1e5851906fc2538a4aa0f4b72773f47e39f6;hb=278c59e14c53fd412b734e699bd4f314f766f804;hp=d2d4cc7b8a2b93024a7f3c13c4b148b56b211639;hpb=186b0b9f1638444c650c9273df38085e0db71e4a;p=xscreensaver diff --git a/driver/stderr.c b/driver/stderr.c index d2d4cc7b..fafb1e58 100644 --- a/driver/stderr.c +++ b/driver/stderr.c @@ -1,5 +1,5 @@ /* stderr.c --- capturing stdout/stderr output onto the screensaver window. - * xscreensaver, Copyright (c) 1991-1997 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-1998 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -55,11 +55,9 @@ reset_stderr (saver_screen_info *ssi) { saver_info *si = ssi->global; -#ifdef DEBUG if (si->prefs.debug_p) fprintf ((real_stderr ? real_stderr : stderr), - "%s: resetting stderr\n", progname); -#endif + "%s: resetting stderr\n", blurb()); ssi->stderr_text_x = 0; ssi->stderr_text_y = 0; @@ -92,7 +90,6 @@ static void print_stderr_1 (saver_screen_info *ssi, char *string) { saver_info *si = ssi->global; - saver_preferences *p = &si->prefs; Display *dpy = si->dpy; Screen *screen = ssi->screen; Window window = (ssi->stderr_overlay_window ? @@ -103,10 +100,6 @@ print_stderr_1 (saver_screen_info *ssi, char *string) char *head = string; char *tail; - /* In verbose mode, copy it to stderr as well. */ - if (p->verbose_p) - fprintf (real_stderr, "%s", string); - if (! ssi->stderr_font) { char *font_name = get_string_resource ("font", "Font"); @@ -133,8 +126,8 @@ print_stderr_1 (saver_screen_info *ssi, char *string) cmap = ssi->stderr_cmap; } - fg = get_pixel_resource ("textForeground", "Foreground", dpy, cmap); - bg = get_pixel_resource ("textBackground", "Background", dpy, cmap); + fg = get_pixel_resource ("overlayTextForeground","Foreground",dpy,cmap); + bg = get_pixel_resource ("overlayTextBackground","Background",dpy,cmap); gcv.font = ssi->stderr_font->fid; gcv.foreground = fg; gcv.background = bg; @@ -170,15 +163,17 @@ print_stderr_1 (saver_screen_info *ssi, char *string) ssi->stderr_text_y = 0; #else int offset = ssi->stderr_line_height * 5; + XWindowAttributes xgwa; + XGetWindowAttributes (dpy, window, &xgwa); + XCopyArea (dpy, window, window, ssi->stderr_gc, 0, v_border + offset, - WidthOfScreen (screen), - (HeightOfScreen (screen) - v_border - v_border - - offset), + xgwa.width, + (xgwa.height - v_border - v_border - offset), 0, v_border); XClearArea (dpy, window, - 0, HeightOfScreen (screen) - v_border - offset, - WidthOfScreen (screen), offset, False); + 0, xgwa.height - v_border - offset, + xgwa.width, offset, False); ssi->stderr_text_y -= offset; #endif } @@ -209,14 +204,14 @@ make_stderr_overlay_window (saver_screen_info *ssi) { int depth = visual_depth (ssi->screen, visual); XSetWindowAttributes attrs; + XWindowAttributes xgwa; unsigned long attrmask; + XGetWindowAttributes (si->dpy, ssi->screensaver_window, &xgwa); -#ifdef DEBUG if (si->prefs.debug_p) fprintf(real_stderr, "%s: using overlay visual 0x%0x for stderr text layer.\n", - progname, (int) XVisualIDFromVisual (visual)); -#endif /* DEBUG */ + blurb(), (int) XVisualIDFromVisual (visual)); ssi->stderr_cmap = XCreateColormap(si->dpy, RootWindowOfScreen(ssi->screen), @@ -233,7 +228,7 @@ make_stderr_overlay_window (saver_screen_info *ssi) ssi->stderr_overlay_window = XCreateWindow(si->dpy, ssi->screensaver_window, 0, 0, - WidthOfScreen(ssi->screen), HeightOfScreen(ssi->screen), + xgwa.width, xgwa.height, 0, depth, InputOutput, visual, attrmask, &attrs); XMapRaised(si->dpy, ssi->stderr_overlay_window); } @@ -348,7 +343,7 @@ initialize_stderr (saver_info *si) int stdout_fd = 1; int stderr_fd = 2; int flags = 0; - Boolean stderr_dialog_p, stdout_dialog_p; + Boolean stderr_dialog_p; if (done) return; done = True; @@ -357,9 +352,8 @@ initialize_stderr (saver_info *si) real_stdout = stdout; stderr_dialog_p = get_boolean_resource ("captureStderr", "Boolean"); - stdout_dialog_p = get_boolean_resource ("captureStdout", "Boolean"); - if (!stderr_dialog_p && !stdout_dialog_p) + if (!stderr_dialog_p) return; if (pipe (fds)) @@ -401,6 +395,8 @@ initialize_stderr (saver_info *si) if (stderr_dialog_p) { FILE *new_stderr_file; + FILE *new_stdout_file; + new_stderr = dup (stderr_fd); if (new_stderr < 0) { @@ -420,11 +416,8 @@ initialize_stderr (saver_info *si) perror ("could not dup() a new stderr:"); return; } - } - if (stdout_dialog_p) - { - FILE *new_stdout_file; + new_stdout = dup (stdout_fd); if (new_stdout < 0) {