xscreensaver 5.00a12

New and shiny:


  • I fixed a few bugs that could have wedged things. All but one survive my "click the mouse as fast as you can in System Preferences" test, which wasn't the case before, so that's promising.
  • Screen grabbing works, loading of image files works, and displaying the text of files and URLs works. The UI for configuring that stuff is crummy, though, and I could use some help with it.

  • XCopyArea and XDrawPoints are still slow. I sure hope I don't have to re-target the whole Xlib backend toward OpenGL instead of Quartz to fix this. Help, help.

  • I am still of the opinion that the malloc-error and object-lifetime-debugging tools on MacOS suck ass. They talk a good game, but I'm getting nothing from them. If you think this is crazy talk, then please show me up by doing this: run System Preferences under one of these tools; select the Carousel saver; and tell me where memory is getting smashed (and how you figured that out).

See the TODO list for more.

Tags: , , , ,

10 Responses:

  1. mkj says:

    Very nice work, I'm impressed how well it works.

    One minor issue, in PopSquares setting the Start or End colours doesn't seem to work. One of the two fields ends up blank if you change either of them. The preference never seems to make it to the .plist file, guess it might be the # confusing things?

  2. otak says:

    Very cool - xscreensaver is one of the things I've missed about going Mac.

    One slight issue - other mac screensavers unlock on a key-press, but yours don't (at least they don't for me). Is that intentional?

  3. taffer says:

    Nice work, these came together really nicely.

  4. hexapod says:

    XDrawPoints slow:

    It looks like creating a 1px bitmap and then drawing it to the screen N times is faster than drawing N rectangles. If you want I can send you the code (tested in galaxy), but
    1) I still haven't figured out how to get the RGBA shite right to paint the forground color into a bitmap of my choice
    2) My code is very cut-and-paste from a lot of random sources so it's uglier than sin.

    • hexapod says:

      OK, I got the colors right (in an endianevil way). You can use this as a replacement for XDrawPoints to see if its even faster for you before.. otherwise I don't think there's a point in cleaning it up:


      • jschoi says:

        I looked into this some time ago when I was playing around with converting some of the xscreensaver hacks to the OS X screensaver framework. I started with Strange, as it seemed one of the easier ones, and ended up using a bitmap cache to speed up XDrawPoints. Obviously this won't work if you're doing other things in addition to drawing points, but it does seem somewhat faster. I hope the example is helpful.

        The bitmap cache stuff appears at the bottom of StrangeView.m, and the points drawing is within -animateOneFrame


    • jwz says:

      Holy shit, that's insane! But you're right, that feels a lot faster. Thanks.

      I still wouldn't call it fast, but at least IFS now just looks merely slow instead of like some weird slideshow.

  5. rexpop says:

    Not sure if its any help, but take a look at 'OmniObjectMeter' (http://www.omnigroup.com/developer/omniobjectmeter/). It might help in tracking down your memory woes. It's not free but you can get a temporary licenses to try it out.