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.37.tar.gz
[xscreensaver]
/
hacks
/
glx
/
flipflop.c
diff --git
a/hacks/glx/flipflop.c
b/hacks/glx/flipflop.c
index d780348c8c7bdba88417aa1e20984b612f815478..02ec2d570266864cbf1ca9c89f732da0bf50fa29 100644
(file)
--- a/
hacks/glx/flipflop.c
+++ b/
hacks/glx/flipflop.c
@@
-44,6
+44,7
@@
"*wireframe: False \n"
# define refresh_flipflop 0
"*wireframe: False \n"
# define refresh_flipflop 0
+# define release_flipflop 0
# include "xlockmore.h"
#else
# include "xlockmore.h"
#else
@@
-94,7
+95,7
@@
ENTRYPOINT ModeSpecOpt flipflop_opts = {countof(opts), opts, countof(vars), vars
#ifdef USE_MODULES
ModStruct flipflop_description =
#ifdef USE_MODULES
ModStruct flipflop_description =
- {"flipflop", "init_flipflop", "draw_flipflop",
"release_flipflop"
,
+ {"flipflop", "init_flipflop", "draw_flipflop",
NULL
,
"draw_flipflop", "init_flipflop", NULL, &flipflop_opts,
1000, 1, 2, 1, 4, 1.0, "",
"Flipflop", 0, NULL};
"draw_flipflop", "init_flipflop", NULL, &flipflop_opts,
1000, 1, 2, 1, 4, 1.0, "",
"Flipflop", 0, NULL};
@@
-169,7
+170,7
@@
static void randsheet_move( randsheet *rs, float rot );
static int randsheet_draw( randsheet *rs );
static void setup_lights(void);
static int drawBoard(Flipflopcreen *);
static int randsheet_draw( randsheet *rs );
static void setup_lights(void);
static int drawBoard(Flipflopcreen *);
-static int display(
Flipflopcreen *c
);
+static int display(
ModeInfo *mi
);
static int draw_sheet(float *tex);
static int draw_sheet(float *tex);
@@
-233,8
+234,9
@@
drawBoard(Flipflopcreen *c)
static int
static int
-display(
Flipflopcreen *c
)
+display(
ModeInfo *mi
)
{
{
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
GLfloat amb[] = { 0.8, 0.8, 0.8, 1.0 };
int polys = 0;
GLfloat amb[] = { 0.8, 0.8, 0.8, 1.0 };
int polys = 0;
@@
-242,7
+244,6
@@
display(Flipflopcreen *c)
glClear(clearbits);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(clearbits);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
-
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.2);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.15/board_avg_size );
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.15/board_avg_size );
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.2);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.15/board_avg_size );
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.15/board_avg_size );
@@
-262,6
+263,15
@@
display(Flipflopcreen *c)
if(textured)
glBindTexture(GL_TEXTURE_2D, c->texid);
if(textured)
glBindTexture(GL_TEXTURE_2D, c->texid);
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
polys = drawBoard(c);
if (!c->button_down_p) {
polys = drawBoard(c);
if (!c->button_down_p) {
@@
-338,6
+348,8
@@
get_texture(ModeInfo *modeinfo)
image_loaded_cb, c);
}
image_loaded_cb, c);
}
+static void free_flipflop(ModeInfo *mi);
+
ENTRYPOINT void
init_flipflop(ModeInfo *mi)
{
ENTRYPOINT void
init_flipflop(ModeInfo *mi)
{
@@
-383,9
+395,7
@@
init_flipflop(ModeInfo *mi)
screen = MI_SCREEN(mi);
wire = MI_IS_WIREFRAME(mi);
screen = MI_SCREEN(mi);
wire = MI_IS_WIREFRAME(mi);
- if(!qs &&
- !(qs = (Flipflopcreen *) calloc(MI_NUM_SCREENS(mi), sizeof(Flipflopcreen))))
- return;
+ MI_INIT(mi, qs, free_flipflop);
c = &qs[screen];
c->window = MI_WINDOW(mi);
c = &qs[screen];
c->window = MI_WINDOW(mi);
@@
-443,7
+453,7
@@
draw_flipflop(ModeInfo *mi)
glXMakeCurrent(disp, w, *(c->glx_context));
glXMakeCurrent(disp, w, *(c->glx_context));
- mi->polygon_count = display(
c
);
+ mi->polygon_count = display(
mi
);
if(mi->fps_p){
do_fps(mi);
if(mi->fps_p){
do_fps(mi);
@@
-455,28
+465,14
@@
draw_flipflop(ModeInfo *mi)
}
}
-
ENTRYPOINT
void
-
releas
e_flipflop(ModeInfo *mi)
+
static
void
+
fre
e_flipflop(ModeInfo *mi)
{
{
- if(qs) {
- int screen;
-
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
- {
- Flipflopcreen *c = &qs[MI_SCREEN(mi)];
- if (c->glx_context)
- c->glx_context = 0;
- if (c->sheet) {
- randsheet_free(c->sheet);
- free (c->sheet);
- c->sheet = 0;
- }
- }
- free(qs);
- qs = 0;
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+ if (c->sheet) {
+ randsheet_free(c->sheet);
+ free (c->sheet);
}
}
-
- FreeAllGL(mi);
}
/*** ADDED RANDSHEET FUNCTIONS ***/
}
/*** ADDED RANDSHEET FUNCTIONS ***/