X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fflag.c;h=2ed9296e5aa50fed2872c54a5dd9b6b965b8e2c4;hb=82c5080773aae5e72ec155327c075775e023d2ee;hp=643aff104e536d692dd534b377ee6c746dda6dbf;hpb=6bb727f03bff0389fbb1349d7df4c9d8d7532959;p=xscreensaver diff --git a/hacks/flag.c b/hacks/flag.c index 643aff10..2ed9296e 100644 --- a/hacks/flag.c +++ b/hacks/flag.c @@ -27,7 +27,7 @@ static const char sccsid[] = "@(#)flag.c 4.02 97/04/01 xlockmore"; * 22-Jan-98: jwz: made the flag wigglier; added xpm support. * (I tried to do this by re-porting from xlockmore, but the * current xlockmore version is completely inscrutable.) - * 13-May-97: jwz@netscape.com: turned into a standalone program. + * 13-May-97: jwz@jwz.org: turned into a standalone program. * Made it able to animate arbitrary (runtime) text or bitmaps. * 01-May-96: written. */ @@ -71,10 +71,6 @@ static const char sccsid[] = "@(#)flag.c 4.02 97/04/01 xlockmore"; #endif /* !STANDALONE */ -#if defined(VMS) && !defined(HAVE_UNAME) && (__VMS_VER >= 70000000) -# define HAVE_UNAME 1 -#endif - #ifdef HAVE_UNAME # include #endif /* HAVE_UNAME */ @@ -82,14 +78,15 @@ static const char sccsid[] = "@(#)flag.c 4.02 97/04/01 xlockmore"; #ifdef STANDALONE static XrmOptionDescRec opts[] = { - { "-bitmap", ".flag.bitmap", XrmoptionSepArg, 0 } + { "-bitmap", ".flag.bitmap", XrmoptionSepArg, 0 }, + { "-text", ".flag.text", XrmoptionSepArg, 0 } }; #endif /* STANDALONE */ ModeSpecOpt flag_opts = { #ifdef STANDALONE - 1, opts, 0, NULL, NULL + 2, opts, 0, NULL, NULL #else /* !STANDALONE */ 0, NULL, 0, NULL, NULL #endif /* STANDALONE */ @@ -349,9 +346,15 @@ make_flag_bits(ModeInfo *mi) *s = 0; text = (char *) malloc(strlen(uts.nodename) + strlen(uts.sysname) + + strlen(uts.version) + strlen(uts.release) + 10); +# ifdef _AIX + sprintf(text, "%s\n%s %s.%s", + uts.nodename, uts.sysname, uts.version, uts.release); +# else /* !_AIX */ sprintf(text, "%s\n%s %s", uts.nodename, uts.sysname, uts.release); +# endif /* !_AIX */ } #else /* !HAVE_UNAME */ # ifdef VMS @@ -435,8 +438,10 @@ make_flag_bits(ModeInfo *mi) } else { + char *bits = (char *) malloc (sizeof(bob_bits)); + memcpy (bits, bob_bits, sizeof(bob_bits)); fp->image = XCreateImage (dpy, MI_VISUAL(mi), 1, XYBitmap, 0, - (char *) bob_bits, bob_width, bob_height, + bits, bob_width, bob_height, 8, 0); fp->image->byte_order = LSBFirst; fp->image->bitmap_bit_order = LSBFirst; @@ -538,6 +543,9 @@ init_flag(ModeInfo * mi) XClearWindow(display, MI_WINDOW(mi)); } +void release_flag(ModeInfo * mi); + + void draw_flag(ModeInfo * mi) { @@ -569,7 +577,10 @@ draw_flag(ModeInfo * mi) XFlush(display); fp->timer++; if ((MI_CYCLES(mi) > 0) && (fp->timer >= MI_CYCLES(mi))) + { + release_flag(mi); init_flag(mi); + } } void