X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fstarwars.c;h=1efcd154c321d84ffd6e9e4c38790cccab820089;hb=c85f503f5793839a6be4c818332aca4a96927bb2;hp=a726bb300a006840e5aaaed5db4b88575d70b9a1;hpb=aa75c7476aeaa84cf3abc192b376a8b03c325213;p=xscreensaver diff --git a/hacks/glx/starwars.c b/hacks/glx/starwars.c index a726bb30..1efcd154 100644 --- a/hacks/glx/starwars.c +++ b/hacks/glx/starwars.c @@ -1,4 +1,4 @@ -/* starwars, Copyright (c) 1998-2015 Jamie Zawinski and +/* starwars, Copyright (c) 1998-2018 Jamie Zawinski and * Claudio Matsuoka * * Permission to use, copy, modify, distribute, and sell this software and its @@ -46,8 +46,8 @@ "*textLiteral: " DEF_TEXT "\n" \ "*program: xscreensaver-text --cols 0" /* don't wrap */ -# define refresh_sws 0 -# define sws_handle_event 0 +# define release_sws 0 +# define sws_handle_event xlockmore_no_events #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) @@ -568,6 +568,12 @@ init_stars (ModeInfo *mi, int width, int height) int max_size = 3; GLfloat inc = 0.5; int steps = max_size / inc; + GLfloat scale = 1; + + if (MI_WIDTH(mi) > 2560) { /* Retina displays */ + scale *= 2; + nstars = (size/scale) * (size/scale) / 320; + } glDeleteLists (sc->star_list, 1); sc->star_list = glGenLists (1); @@ -577,7 +583,7 @@ init_stars (ModeInfo *mi, int width, int height) for (j = 1; j <= steps; j++) { - glPointSize(inc * j); + glPointSize(inc * j * scale); glBegin (GL_POINTS); for (i = 0; i < nstars / steps; i++) { @@ -723,14 +729,7 @@ init_sws (ModeInfo *mi) sws_configuration *sc = 0; - if (!scs) { - scs = (sws_configuration *) - calloc (MI_NUM_SCREENS(mi), sizeof (sws_configuration)); - if (!scs) { - fprintf(stderr, "%s: out of memory\n", progname); - exit(1); - } - } + MI_INIT (mi, scs); sc = &scs[MI_SCREEN(mi)]; @@ -1055,21 +1054,13 @@ draw_sws (ModeInfo *mi) } ENTRYPOINT void -release_sws (ModeInfo *mi) +free_sws (ModeInfo *mi) { - if (scs) { - int screen; - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { - sws_configuration *sc = &scs[screen]; - if (sc->tc) - textclient_close (sc->tc); - - /* #### there's more to free here */ - } - free (scs); - scs = 0; - } - FreeAllGL(mi); + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + if (sc->tc) + textclient_close (sc->tc); + + /* #### there's more to free here */ }