XScreenSaver 5.00 alpha 1

I don't usually do alpha/beta releases of xscreensaver, but I've made such sweeping changes this time around that I think it needs it:

If you use X11:

    Please download this release and try it out. Let me know of any problems you find, especially where behavior diverges from the previous version. Everything should work exactly the same as in the previous X11 version, but as I said, there have been a ton of changes to the source, much of which was automated, so I'm sure I've introduced bugs somewhere.

If you are the author of code included in XScreenSaver:

    Have an especially close look at your code, and send me patches if you think I messed it up. The changes I had to make were:

    • Instead of screenhack() being its own main loop, there are now "init" and "draw one frame" functions.
    • The "draw" function must not run for more than a fraction of a second without returning. That means don't loop a zillion times, and don't call usleep().

    • No global variables. No function-local static variables. All persistent information must be passed around in a "state" structure.

If you use MacOS 10.4 and XCode 2.2:

    Feel free to give it a try, but be advised that it's very flaky. It's also very slow, since I've done almost no optimization. For the OSX version, I'm not (yet) interested in bug reports that aren't also accompanied by fixes.

    About 160 of the savers work to some degree. The ones I haven't gotten working yet are mostly the ones that use ClipMasks, XOR, or that load and manipulate images, none of which I've written code for yet. (Patches welcome).

    Beware that a few of the savers are antisocial and will lock up your display until they finish rendering.

    Knowledgeable critiques of the organization of my XCode project, or the Quartz stuff in jwxyz.m, are welcome.

If you're just a humble Mac noncombatant who wants some new screen savers:

    Cool your jets, Sparky.
Tags: , , , ,

20 Responses:

  1. wootest says:

    It doesn't seem to be included.

    • jwz says:

      Doh! Updated.

      • wootest says:

        Unless you know to run `configure` before, a clean slate Xcode build won't work as some files like gltrackball.c included by jwxyz (is that a great name or what?) includes config.h, which doesn't exist yet. It might make sense to include a Run Shell Script build phase first thing in the jwxyz target that checks if the file exists and runs configure for you if it doesn't.

  2. nosebleed1 says:

    Let me tell you, I'm very excited to hear this. I hope the bouncing cows work better in this version. I set mine to three cows once and it crashed X! What's a man to do with just two cows? What kind of crime-fighting team is that? A man and two cows? It has to be at LEAST three!

  3. jferg says:

    contains brokenness under SuSE 10.0 (and probably many other places as well). Untested patch is here.
    Also, hacks/extrusion won't compile - there doesn't seem to be a release_extrusion function.

  4. srattus says:


    I'll keep on keepin on with electric sheep till then.

  5. hexapod says:

    Is one of these considered preferred or canonical?

    • taffer says:

      You probably want XCode for building "native" OS X savers, and configure && make for building the X11 versions.

      I built them no problem (except for a few that have errors) with XCode, but they won't load, haven't had a minute to figure out what's wrong.

    • jwz says:

      For building with X11, use configure. For building native, use XCode (2.2).

      • hexapod says:

        That's what it seemed like, but I wanted to confirm. Also, fink is the preferred method of getting GLE?

        • jwz says:

          I'm not sure what the best way to get GLE is. What I did was:

            port install glut
            ln -s /opt/local/include/GL/glut.h /usr/X11R6/include/GL
            ln -s /opt/local/lib/libglut.* /usr/X11R6/lib

            download gle-3.0.7.tar.gz
            ./configure --prefix=/sw
            comment out <malloc.h> in src/*.c
            make install

          • hexapod says:

            bindist.finkmirrors.net was down earlier so I couldn't check, but it doesn't look like (stable?) fink has the straight libgle in it. You can get the GTK-ified GLE, though.. I suppose I'll have to do the GLUT/selfcompile path. Thanks.

          • smiteo says:

            GLE is included in Apple's GLUT framework.
            Why, I don't know...

            but, this works...


  6. iota says:

    My Core Duo iMac goes unused for 12 hours a day while I'm at work; if you want SSH and VNC access to build/test on Intel, let me know.

  7. violentbloom says:

    dear unkle jamie,
    my kitty really likes the bouncy cow screensaver.