X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fflag.c;h=92e6f1765c7bb6d57ee49f9eac99c33157c38392;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=c74e921de4698e9ac3d9b07055bde42b24e016cd;hpb=07faf451b99879183ed7e909e43a0e065be1ee7f;p=xscreensaver diff --git a/hacks/flag.c b/hacks/flag.c index c74e921d..92e6f176 100644 --- a/hacks/flag.c +++ b/hacks/flag.c @@ -45,7 +45,9 @@ static const char sccsid[] = "@(#)flag.c 4.02 97/04/01 xlockmore"; "*ncolors: 200 \n" \ "*bitmap: \n" \ "*font: " DEF_FONT "\n" \ - "*text: \n" + "*text: \n" \ + "*fpsSolid: true \n" \ + # define BRIGHT_COLORS # define UNIFORM_COLORS # define reshape_flag 0 @@ -192,7 +194,7 @@ make_flag_bits(ModeInfo *mi) char *bitmap_name = get_string_resource (dpy, "bitmap", "Bitmap"); char *text = get_string_resource (dpy, "text", "Text"); -#ifdef HAVE_COCOA +#ifdef HAVE_JWXYZ bitmap_name = 0; /* #### always use default */ #endif @@ -263,13 +265,42 @@ make_flag_bits(ModeInfo *mi) strlen(uts.sysname) + strlen(uts.version) + strlen(uts.release) + 10); -# ifdef _AIX +# if defined(_AIX) sprintf(text, "%s\n%s %s.%s", uts.nodename, uts.sysname, uts.version, uts.release); -# else /* !_AIX */ +# elif defined(__APPLE__) && !defined(USE_IPHONE) /* MacOS X + XDarwin */ + { + const char *file = + "/System/Library/CoreServices/SystemVersion.plist"; + FILE *f = fopen (file, "r"); + char *pbv = 0, *pn = 0, *puvv = 0; + if (f) { + char *s, buf[255]; + + while (fgets (buf, sizeof(buf)-1, f)) { +# define GRAB(S,V) \ + if (strstr(buf, S)) { \ + fgets (buf, sizeof(buf)-1, f); \ + if ((s = strchr (buf, '>'))) V = strdup(s+1); \ + if ((s = strchr (V, '<'))) *s = 0; \ + } + GRAB ("ProductName", pn) + GRAB ("ProductBuildVersion", pbv) + GRAB ("ProductUserVisibleVersion", puvv) +# undef GRAB + } + } + if (pbv) + sprintf (text, "%s\n%s\n%s", + uts.nodename, pn, puvv /*, uts.machine*/); + else + sprintf(text, "%s\n%s %s", + uts.nodename, uts.sysname, uts.release); + } +# else sprintf(text, "%s\n%s %s", uts.nodename, uts.sysname, uts.release); -# endif /* !_AIX */ +# endif /* special system types */ } #else /* !HAVE_UNAME */ # ifdef VMS @@ -351,7 +382,9 @@ make_flag_bits(ModeInfo *mi) fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, 1L, XYPixmap); XFreePixmap(dpy, bitmap); } - else + + + if (! fp->image) { char *bits = (char *) malloc (sizeof(bob_bits)); memcpy (bits, bob_bits, sizeof(bob_bits)); @@ -407,6 +440,7 @@ init_flag(ModeInfo * mi) fp = &flags[MI_SCREEN(mi)]; make_flag_bits(mi); + if (!fp->image) abort(); fp->width = MI_WIN_WIDTH(mi); fp->height = MI_WIN_HEIGHT(mi); @@ -426,7 +460,7 @@ init_flag(ModeInfo * mi) if (!fp->initialized) { fp->dbufp = True; -# ifdef HAVE_COCOA /* Don't second-guess Quartz's double-buffering */ +# ifdef HAVE_JWXYZ /* Don't second-guess Quartz's double-buffering */ fp->dbufp = False; #endif fp->initialized = True; @@ -476,6 +510,7 @@ draw_flag(ModeInfo * mi) Window window = MI_WINDOW(mi); flagstruct *fp = &flags[MI_SCREEN(mi)]; + if (!fp->image) abort(); if (fp->cache == window) { /* not double-buffering */ XClearWindow (display, window); } else if (fp->width <= MAXW(fp) || fp->height <= MAXH(fp)) {