projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver]
/
hacks
/
juggle.c
diff --git
a/hacks/juggle.c
b/hacks/juggle.c
index 7634d3e5f11720a62c15e29ee7c5f3969d17ba67..07e52fe51dbed1c587b4c5cf60dddf46a3df5409 100644
(file)
--- a/
hacks/juggle.c
+++ b/
hacks/juggle.c
@@
-1,9
+1,8
@@
/* -*- Mode: C; tab-width: 4 -*- */
/* juggle */
/* -*- Mode: C; tab-width: 4 -*- */
/* juggle */
-#if
!defined( lint ) && !defined( SABER )
+#if
0
static const char sccsid[] = "@(#)juggle.c 5.10 2003/09/02 xlockmore";
static const char sccsid[] = "@(#)juggle.c 5.10 2003/09/02 xlockmore";
-
#endif
/*-
#endif
/*-
@@
-135,8
+134,11
@@
static const char sccsid[] = "@(#)juggle.c 5.10 2003/09/02 xlockmore";
"*count: 200 \n" \
"*cycles: 1000 \n" \
"*ncolors: 32 \n" \
"*count: 200 \n" \
"*cycles: 1000 \n" \
"*ncolors: 32 \n" \
- "*font: -*-times-bold-r-normal-*-180-*\n"
-# define refresh_juggle 0
+ "*font: -*-helvetica-bold-r-normal-*-180-*\n" \
+ "*fpsSolid: true\n" \
+
+# define release_juggle 0
+# define reshape_juggle 0
# define juggle_handle_event 0
# undef SMOOTH_COLORS
# include "xlockmore.h" /* in xscreensaver distribution */
# define juggle_handle_event 0
# undef SMOOTH_COLORS
# include "xlockmore.h" /* in xscreensaver distribution */
@@
-256,8
+258,8
@@
ENTRYPOINT ModeSpecOpt juggle_opts =
#ifdef USE_MODULES
ModStruct juggle_description = {
#ifdef USE_MODULES
ModStruct juggle_description = {
- "juggle", "init_juggle", "draw_juggle",
"release_juggle"
,
- "draw_juggle", "change_juggle",
(char *) NULL
, &juggle_opts,
+ "juggle", "init_juggle", "draw_juggle",
(char *) NULL
,
+ "draw_juggle", "change_juggle",
"free_juggle"
, &juggle_opts,
10000, 200, 1000, 1, 64, 1.0, "",
"Shows a Juggler, juggling", 0, NULL
};
10000, 200, 1000, 1, 64, 1.0, "",
"Shows a Juggler, juggling", 0, NULL
};
@@
-659,8
+661,10
@@
trajectory_destroy(Trajectory *t) {
REMOVE(t); /* Unlink and free */
}
REMOVE(t); /* Unlink and free */
}
-static void
-free_juggle(jugglestruct *sp) {
+ENTRYPOINT void
+free_juggle(ModeInfo * mi) {
+ jugglestruct *sp = &juggles[MI_SCREEN(mi)];
+
if (sp->head != NULL) {
while (sp->head->next != sp->head) {
trajectory_destroy(sp->head->next);
if (sp->head != NULL) {
while (sp->head->next != sp->head) {
trajectory_destroy(sp->head->next);
@@
-694,13
+698,14
@@
free_juggle(jugglestruct *sp) {
}
static Bool
}
static Bool
-add_throw(
jugglestruct *sp
, char type, int h, Notation n, const char* name)
+add_throw(
ModeInfo *mi
, char type, int h, Notation n, const char* name)
{
{
+ jugglestruct *sp = &juggles[MI_SCREEN(mi)];
Trajectory *t;
ADD_ELEMENT(Trajectory, t, sp->head->prev);
if(t == NULL){ /* Out of Memory */
Trajectory *t;
ADD_ELEMENT(Trajectory, t, sp->head->prev);
if(t == NULL){ /* Out of Memory */
- free_juggle(
sp
);
+ free_juggle(
mi
);
return False;
}
t->object = NULL;
return False;
}
t->object = NULL;
@@
-722,7
+727,6
@@
add_throw(jugglestruct *sp, char type, int h, Notation n, const char* name)
static Bool
program(ModeInfo *mi, const char *patn, const char *name, int cycles)
{
static Bool
program(ModeInfo *mi, const char *patn, const char *name, int cycles)
{
- jugglestruct *sp = &juggles[MI_SCREEN(mi)];
const char *p;
int w, h, i, seen;
Notation notation;
const char *p;
int w, h, i, seen;
Notation notation;
@@
-774,7
+778,7
@@
program(ModeInfo *mi, const char *patn, const char *name, int cycles)
case ' ':
if (seen) {
i++;
case ' ':
if (seen) {
i++;
- if (!add_throw(
sp
, type, h, notation, title))
+ if (!add_throw(
mi
, type, h, notation, title))
return False;
title = NULL;
type=' ';
return False;
title = NULL;
type=' ';
@@
-794,7
+798,7
@@
program(ModeInfo *mi, const char *patn, const char *name, int cycles)
}
}
if (seen) { /* end of sequence */
}
}
if (seen) { /* end of sequence */
- if (!add_throw(
sp
, type, h, notation, title))
+ if (!add_throw(
mi
, type, h, notation, title))
return False;
title = NULL;
}
return False;
title = NULL;
}
@@
-895,8
+899,9
@@
name(jugglestruct *sp)
/* ..nm.. -> .. LTn LC RTm RC .. */
static Bool
/* ..nm.. -> .. LTn LC RTm RC .. */
static Bool
-part(
jugglestruct *sp
)
+part(
ModeInfo *mi
)
{
{
+ jugglestruct *sp = &juggles[MI_SCREEN(mi)];
Trajectory *t, *nt, *p;
Hand hand = (LRAND() & 1) ? RIGHT : LEFT;
Trajectory *t, *nt, *p;
Hand hand = (LRAND() & 1) ? RIGHT : LEFT;
@@
-941,7
+946,7
@@
part(jugglestruct *sp)
t->action = CATCH;
ADD_ELEMENT(Trajectory, nt, p);
if(nt == NULL){
t->action = CATCH;
ADD_ELEMENT(Trajectory, nt, p);
if(nt == NULL){
- free_juggle(
sp
);
+ free_juggle(
mi
);
return False;
}
nt->object = NULL;
return False;
}
nt->object = NULL;
@@
-2294,19
+2299,6
@@
show_bball(ModeInfo *mi, unsigned long color, Trace *s)
**************************************************************************/
**************************************************************************/
-ENTRYPOINT void
-release_juggle (ModeInfo * mi)
-{
- if (juggles != NULL) {
- int screen;
-
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
- free_juggle(&juggles[screen]);
- free(juggles);
- juggles = (jugglestruct *) NULL;
- }
-}
-
/* FIXME: refill_juggle currently just appends new throws to the
* programme. This is fine if the programme is empty, but if there
* are still some trajectories left then it really should take these
/* FIXME: refill_juggle currently just appends new throws to the
* programme. This is fine if the programme is empty, but if there
* are still some trajectories left then it really should take these
@@
-2422,7
+2414,7
@@
refill_juggle(ModeInfo * mi)
name(sp);
name(sp);
- if (!part(
sp
))
+ if (!part(
mi
))
return;
lob(mi);
return;
lob(mi);
@@
-2432,7
+2424,7
@@
refill_juggle(ModeInfo * mi)
positions(sp);
if (!projectile(sp)) {
positions(sp);
if (!projectile(sp)) {
- free_juggle(
sp
);
+ free_juggle(
mi
);
return;
}
return;
}
@@
-2480,17
+2472,7
@@
init_juggle (ModeInfo * mi)
jugglestruct *sp = 0;
int i;
jugglestruct *sp = 0;
int i;
- if (juggles == NULL) { /* First-time initialisation */
-
- /* allocate jugglestruct */
- if ((juggles =
- (jugglestruct *)calloc(MI_NUM_SCREENS(mi),
- sizeof (jugglestruct))) == NULL) {
- release_juggle(mi);
- return;
- }
- }
-
+ MI_INIT (mi, juggles);
sp = &juggles[MI_SCREEN(mi)];
if (only && *only && strcmp(only, " ")) {
sp = &juggles[MI_SCREEN(mi)];
if (only && *only && strcmp(only, " ")) {
@@
-2539,21
+2521,21
@@
init_juggle (ModeInfo * mi)
/* create circular trajectory list */
ADD_ELEMENT(Trajectory, sp->head, sp->head);
if(sp->head == NULL){
/* create circular trajectory list */
ADD_ELEMENT(Trajectory, sp->head, sp->head);
if(sp->head == NULL){
- free_juggle(
sp
);
+ free_juggle(
mi
);
return;
}
/* create circular object list */
ADD_ELEMENT(Object, sp->objects, sp->objects);
if(sp->objects == NULL){
return;
}
/* create circular object list */
ADD_ELEMENT(Object, sp->objects, sp->objects);
if(sp->objects == NULL){
- free_juggle(
sp
);
+ free_juggle(
mi
);
return;
}
/* create circular wander list */
ADD_ELEMENT(Wander, sp->wander, sp->wander);
if(sp->wander == NULL){
return;
}
/* create circular wander list */
ADD_ELEMENT(Wander, sp->wander, sp->wander);
if(sp->wander == NULL){
- free_juggle(
sp
);
+ free_juggle(
mi
);
return;
}
(void)wander(sp, 0); /* Initialize wander */
return;
}
(void)wander(sp, 0); /* Initialize wander */
@@
-2614,16
+2596,11
@@
init_juggle (ModeInfo * mi)
sp->scale = MIN(MI_HEIGHT(mi)/480.0, MI_WIDTH(mi)/160.0);
if(describe && !sp->mode_font) { /* Check to see if there's room to describe patterns. */
sp->scale = MIN(MI_HEIGHT(mi)/480.0, MI_WIDTH(mi)/160.0);
if(describe && !sp->mode_font) { /* Check to see if there's room to describe patterns. */
- sp->mode_font = XQueryFont(MI_DISPLAY(mi), XGContextFromGC(MI_GC(mi)));
+ char *font = get_string_resource (MI_DISPLAY(mi), "font", "Font");
+ sp->mode_font = XLoadQueryFont(MI_DISPLAY(mi), font);
}
}
}
}
-ENTRYPOINT void
-reshape_juggle (ModeInfo * mi, int width, int height)
-{
- init_juggle(mi);
-}
-
ENTRYPOINT void
draw_juggle (ModeInfo * mi)
{
ENTRYPOINT void
draw_juggle (ModeInfo * mi)
{
@@
-2640,7
+2617,7
@@
draw_juggle (ModeInfo * mi)
MI_IS_DRAWN(mi) = True;
MI_IS_DRAWN(mi) = True;
-#ifdef HAVE_
COCOA
+#ifdef HAVE_
JWXYZ
/* Don't worry about flicker, trust Quartz's double-buffering.
This is a fast fix for the pixel-turds I can't track down...
*/
/* Don't worry about flicker, trust Quartz's double-buffering.
This is a fast fix for the pixel-turds I can't track down...
*/
@@
-2810,7
+2787,6
@@
draw_juggle (ModeInfo * mi)
if (future < sp->time + 100 * THROW_CATCH_INTERVAL) {
refill_juggle(mi);
} else if (sp->time > 1<<30) { /* Hard Reset before the clock wraps */
if (future < sp->time + 100 * THROW_CATCH_INTERVAL) {
refill_juggle(mi);
} else if (sp->time > 1<<30) { /* Hard Reset before the clock wraps */
- release_juggle(mi);
init_juggle(mi);
}
}
init_juggle(mi);
}
}