projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.23.tar.gz
[xscreensaver]
/
hacks
/
apple2-main.c
diff --git
a/hacks/apple2-main.c
b/hacks/apple2-main.c
index 883e42b02be876c4f75f0106a7c01d77559961b9..3beeeeea62142ea7b9db5f59b755e494540999d6 100644
(file)
--- a/
hacks/apple2-main.c
+++ b/
hacks/apple2-main.c
@@
-24,6
+24,7
@@
#include <X11/keysymdef.h>
#ifdef HAVE_FORKPTY
#include <X11/keysymdef.h>
#ifdef HAVE_FORKPTY
+# include <sys/ioctl.h>
# ifdef HAVE_PTY_H
# include <pty.h>
# endif
# ifdef HAVE_PTY_H
# include <pty.h>
# endif
@@
-572,6
+573,7
@@
char *defaults [] = {
".foreground: white",
"*mode: random",
"*duration: 20",
".foreground: white",
"*mode: random",
"*duration: 20",
+ "*program: xscreensaver-text --cols 40",
"*metaSendsESC: True",
"*swapBSDEL: True",
"*fast: False",
"*metaSendsESC: True",
"*swapBSDEL: True",
"*fast: False",
@@
-802,12
+804,7
@@
launch_text_generator (struct terminal_controller_data *mine)
{
char buf[255];
char *oprogram = get_string_resource ("program", "Program");
{
char buf[255];
char *oprogram = get_string_resource ("program", "Program");
- char *program;
-
- if (!oprogram || !*oprogram)
- oprogram = FORTUNE_PROGRAM;
-
- program = (char *) malloc (strlen (oprogram) + 10);
+ char *program = (char *) malloc (strlen (oprogram) + 10);
strcpy (program, "( ");
strcat (program, oprogram);
strcpy (program, "( ");
strcat (program, oprogram);
@@
-836,9
+833,15
@@
launch_text_generator (struct terminal_controller_data *mine)
else if(!mine->pid)
{
/* This is the child fork. */
else if(!mine->pid)
{
/* This is the child fork. */
+ char *av[10];
+ int i = 0;
if (putenv("TERM=vt100"))
abort();
if (putenv("TERM=vt100"))
abort();
- execl("/bin/sh", "/bin/sh", "-c", oprogram, NULL);
+ av[i++] = "/bin/sh";
+ av[i++] = "-c";
+ av[i++] = oprogram;
+ av[i] = 0;
+ execvp (av[0], av);
sprintf (buf, "%.100s: %.100s", progname, oprogram);
perror(buf);
exit(1);
sprintf (buf, "%.100s: %.100s", progname, oprogram);
perror(buf);
exit(1);
@@
-1504,17
+1507,17
@@
struct basic_controller_data {
*/
static char *moire_program[]={
"10 HGR2\n",
*/
static char *moire_program[]={
"10 HGR2\n",
- "20 FOR Y = 0 TO 19
1
STEP 2\n",
+ "20 FOR Y = 0 TO 19
0
STEP 2\n",
"30 HCOLOR=4 : REM BLACK\n",
"30 HCOLOR=4 : REM BLACK\n",
- "40 H
LINE
0,191-Y TO 279,Y\n",
+ "40 H
PLOT
0,191-Y TO 279,Y\n",
"60 HCOLOR=7 : REM WHITE\n",
"60 HCOLOR=7 : REM WHITE\n",
- "80 H
LINE
0,190-Y TO 279,Y+1\n",
+ "80 H
PLOT
0,190-Y TO 279,Y+1\n",
"90 NEXT Y\n",
"90 NEXT Y\n",
- "100 FOR X = 0 TO 27
9
STEP 3\n",
+ "100 FOR X = 0 TO 27
8
STEP 3\n",
"110 HCOLOR=4\n",
"110 HCOLOR=4\n",
- "120 H
LINE 279-X,0 TO X,192
\n",
+ "120 H
PLOT 279-X,0 TO X,191
\n",
"140 HCOLOR=7\n",
"140 HCOLOR=7\n",
- "150 H
LINE 278-X,0 TO X+1,192
\n",
+ "150 H
PLOT 278-X,0 TO X+1,191
\n",
"160 NEXT X\n",
NULL
};
"160 NEXT X\n",
NULL
};
@@
-1524,9
+1527,9
@@
static char *sinewave_program[] = {
"25 K=0\n",
"30 FOR X = 0 TO 279\n",
"32 HCOLOR= 0\n",
"25 K=0\n",
"30 FOR X = 0 TO 279\n",
"32 HCOLOR= 0\n",
- "35 H
LINE
X,0 TO X,159\n",
+ "35 H
PLOT
X,0 TO X,159\n",
"38 HCOLOR= 3\n",
"38 HCOLOR= 3\n",
- "40 Y = 80 + SIN(15*(X-K)/279)\n",
+ "40 Y = 80 + SIN(15*(X-K)/279)
* 40
\n",
"50 HPLOT X,Y\n",
"60 NEXT X\n",
"70 K=K+4\n",
"50 HPLOT X,Y\n",
"60 NEXT X\n",
"70 K=K+4\n",
@@
-1548,13
+1551,13
@@
static char *random_lores_program[]={
"100 COLOR= RND(1)*16\n",
"110 X=RND(1)*40\n",
"100 COLOR= RND(1)*16\n",
"110 X=RND(1)*40\n",
- "120 Y1=RND(1)*4
8
\n",
- "130 Y2=RND(1)*4
8
\n",
+ "120 Y1=RND(1)*4
0
\n",
+ "130 Y2=RND(1)*4
0
\n",
"140 FOR Y = Y1 TO Y2\n",
"150 PLOT X,Y\n",
"160 NEXT Y\n",
"140 FOR Y = Y1 TO Y2\n",
"150 PLOT X,Y\n",
"160 NEXT Y\n",
- "210 Y=RND(1)*4
8
\n",
+ "210 Y=RND(1)*4
0
\n",
"220 X1=RND(1)*40\n",
"230 X2=RND(1)*40\n",
"240 FOR X = X1 TO X2\n",
"220 X1=RND(1)*40\n",
"230 X2=RND(1)*40\n",
"240 FOR X = X1 TO X2\n",
@@
-1863,12
+1866,23
@@
screenhack (Display *dpy, Window window)
int duration = get_integer_resource ("duration", "Integer");
char *s;
void (*controller)(apple2_sim_t *sim, int *stepno, double *next_actiontime);
int duration = get_integer_resource ("duration", "Integer");
char *s;
void (*controller)(apple2_sim_t *sim, int *stepno, double *next_actiontime);
+ Bool random_p = False;
+ controller = 0;
if (duration < 1) duration = 1;
if (duration < 1) duration = 1;
+ if (!get_boolean_resource ("root", "Boolean"))
+ {
+ XWindowAttributes xgwa;
+ XGetWindowAttributes (dpy, window, &xgwa);
+ XSelectInput (dpy, window,
+ xgwa.your_event_mask |
+ KeyPressMask | ButtonPressMask | ExposureMask);
+ }
+
s = get_string_resource ("mode", "Mode");
if (!s || !*s || !strcasecmp(s, "random"))
s = get_string_resource ("mode", "Mode");
if (!s || !*s || !strcasecmp(s, "random"))
-
controller = controllers[random() % (countof(controllers))]
;
+
random_p = True
;
else if (!strcasecmp(s, "text"))
controller = terminal_controller;
else if (!strcasecmp(s, "slideshow"))
else if (!strcasecmp(s, "text"))
controller = terminal_controller;
else if (!strcasecmp(s, "slideshow"))
@@
-1881,16
+1895,17
@@
screenhack (Display *dpy, Window window)
progname, s);
exit (1);
}
progname, s);
exit (1);
}
+ if (s) free (s);
- if (!get_boolean_resource ("root", "Boolean"))
+ if (controller == terminal_controller)
+ duration = 999999; /* this one runs "forever" */
+
+ while (1)
{
{
- XWindowAttributes xgwa;
- XGetWindowAttributes (dpy, window, &xgwa);
- XSelectInput (dpy, window,
- xgwa.your_event_mask |
- KeyPressMask | ButtonPressMask | ExposureMask);
- }
+ if (random_p)
+ controller = controllers[random() % (countof(controllers))];
- apple2 (dpy, window, duration, controller);
- XSync (dpy, False);
+ apple2 (dpy, window, duration, controller);
+ XSync (dpy, False);
+ }
}
}