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.35.tar.gz
[xscreensaver]
/
hacks
/
screenhack.c
diff --git
a/hacks/screenhack.c
b/hacks/screenhack.c
index 089e76b44b9dfed76537cd3ae1a52062c2e59cb6..8689d4f5da36f5b4f4af3dbb32a536188e1798db 100644
(file)
--- a/
hacks/screenhack.c
+++ b/
hacks/screenhack.c
@@
-1,4
+1,4
@@
-/* xscreensaver, Copyright (c) 1992-201
3
Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-201
4
Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@
-112,6
+112,10
@@
#include "vroot.h"
#include "fps.h"
#include "vroot.h"
#include "fps.h"
+#ifdef HAVE_RECORD_ANIM
+# include "recanim.h"
+#endif
+
#ifndef _XSCREENSAVER_VROOT_H_
# error Error! You have an old version of vroot.h! Check -I args.
#endif /* _XSCREENSAVER_VROOT_H_ */
#ifndef _XSCREENSAVER_VROOT_H_
# error Error! You have an old version of vroot.h! Check -I args.
#endif /* _XSCREENSAVER_VROOT_H_ */
@@
-148,12
+152,17
@@
static XrmOptionDescRec default_options [] = {
# ifdef DEBUG_PAIR
{ "-pair", ".pair", XrmoptionNoArg, "True" },
# endif /* DEBUG_PAIR */
# ifdef DEBUG_PAIR
{ "-pair", ".pair", XrmoptionNoArg, "True" },
# endif /* DEBUG_PAIR */
+
+# ifdef HAVE_RECORD_ANIM
+ { "-record-animation", ".recordAnim", XrmoptionSepArg, 0 },
+# endif /* HAVE_RECORD_ANIM */
+
{ 0, 0, 0, 0 }
};
static char *default_defaults[] = {
".root: false",
{ 0, 0, 0, 0 }
};
static char *default_defaults[] = {
".root: false",
- "*geometry:
600x480", /* this should be .geometry, but no
oooo... */
+ "*geometry:
1280x720", /* this should be .geometry, but n
oooo... */
"*mono: false",
"*installColormap: false",
"*doFPS: false",
"*mono: false",
"*installColormap: false",
"*doFPS: false",
@@
-477,15
+486,23
@@
usleep_and_process_events (Display *dpy,
, Window window2, fps_state *fpst2, void *closure2,
unsigned long delay2
#endif
, Window window2, fps_state *fpst2, void *closure2,
unsigned long delay2
#endif
+# ifdef HAVE_RECORD_ANIM
+ , record_anim_state *anim_state
+# endif
)
{
do {
)
{
do {
- unsigned long quantum =
100000; /* 1/10th second
*/
+ unsigned long quantum =
33333; /* 30 fps
*/
if (quantum > delay)
quantum = delay;
delay -= quantum;
XSync (dpy, False);
if (quantum > delay)
quantum = delay;
delay -= quantum;
XSync (dpy, False);
+
+#ifdef HAVE_RECORD_ANIM
+ if (anim_state) screenhack_record_anim (anim_state);
+#endif
+
if (quantum > 0)
{
usleep (quantum);
if (quantum > 0)
{
usleep (quantum);
@@
-520,6
+537,9
@@
run_screenhack_table (Display *dpy,
Window window,
# ifdef DEBUG_PAIR
Window window2,
Window window,
# ifdef DEBUG_PAIR
Window window2,
+# endif
+# ifdef HAVE_RECORD_ANIM
+ record_anim_state *anim_state,
# endif
const struct xscreensaver_function_table *ft)
{
# endif
const struct xscreensaver_function_table *ft)
{
@@
-565,11
+585,19
@@
run_screenhack_table (Display *dpy,
window, fpst, closure, delay
#ifdef DEBUG_PAIR
, window2, fpst2, closure2, delay2
window, fpst, closure, delay
#ifdef DEBUG_PAIR
, window2, fpst2, closure2, delay2
+#endif
+#ifdef HAVE_RECORD_ANIM
+ , anim_state
#endif
))
break;
}
#endif
))
break;
}
+#ifdef HAVE_RECORD_ANIM
+ /* Exiting before target frames hit: write the video anyway. */
+ if (anim_state) screenhack_record_anim_free (anim_state);
+#endif
+
ft->free_cb (dpy, window, closure);
if (fpst) fps_free (fpst);
ft->free_cb (dpy, window, closure);
if (fpst) fps_free (fpst);
@@
-677,6
+705,9
@@
main (int argc, char **argv)
Window window2 = 0;
Widget toplevel2 = 0;
# endif
Window window2 = 0;
Widget toplevel2 = 0;
# endif
+#ifdef HAVE_RECORD_ANIM
+ record_anim_state *anim_state = 0;
+#endif
XtAppContext app;
Bool root_p;
Window on_window = 0;
XtAppContext app;
Bool root_p;
Window on_window = 0;
@@
-752,7
+783,7
@@
main (int argc, char **argv)
!strcmp(argv[1], "--help"));
fprintf (stderr, "%s\n", version);
for (s = progclass; *s; s++) fprintf(stderr, " ");
!strcmp(argv[1], "--help"));
fprintf (stderr, "%s\n", version);
for (s = progclass; *s; s++) fprintf(stderr, " ");
- fprintf (stderr, " http://www.jwz.org/xscreensaver/\n\n");
+ fprintf (stderr, " http
s
://www.jwz.org/xscreensaver/\n\n");
if (!help_p)
fprintf(stderr, "Unrecognised option: %s\n", argv[1]);
if (!help_p)
fprintf(stderr, "Unrecognised option: %s\n", argv[1]);
@@
-922,12
+953,28
@@
main (int argc, char **argv)
# undef ya_rand_init
ya_rand_init (0);
# undef ya_rand_init
ya_rand_init (0);
+
+#ifdef HAVE_RECORD_ANIM
+ {
+ int frames = get_integer_resource (dpy, "recordAnim", "Integer");
+ if (frames > 0)
+ anim_state = screenhack_record_anim_init (xgwa.screen, window, frames);
+ }
+#endif
+
run_screenhack_table (dpy, window,
# ifdef DEBUG_PAIR
window2,
run_screenhack_table (dpy, window,
# ifdef DEBUG_PAIR
window2,
+# endif
+# ifdef HAVE_RECORD_ANIM
+ anim_state,
# endif
ft);
# endif
ft);
+#ifdef HAVE_RECORD_ANIM
+ if (anim_state) screenhack_record_anim_free (anim_state);
+#endif
+
XtDestroyWidget (toplevel);
XtDestroyApplicationContext (app);
XtDestroyWidget (toplevel);
XtDestroyApplicationContext (app);