Open Shelf…

BackRow Developers’ Kit Released 24May07 | 0

So finally I can release to the public what I’ve been working on for the past couple of weeks. It’s been a bit of a labour of love for me, and I wanted to get a few things just so, including proper online help modeled upon Apple’s own, a fabulous Apple Devtools-style icon from BigBaconAndEggs, and incorporating feedback and suggestions from my testers ericIII, xdog, and |bile| on the AwkwardTV IRC channel.

It includes an Xcode project template to get you started, a set of class-dumped header files for the necessary frameworks, and an application which lets you run the Apple TV interface in a window on your desktop.

So, without further ado, I shall direct you towards the official product page itself for more information and a download link.

BackRow DevKit, Episode 2 18May07 | 0

I’ve been doing a little more work on the development kit for BackRow appliance plugins, and so I’ve put together a little video showing what’s new.

At present it can run the main AppleTV interface, although this requires that you copy the PlugIns, Screen Savers, and Patches folders into the DevKit application bundle. It can also optionally work with just a single plugin, using that as the root controller.

There is now an options window allowing you to specify the run mode, along with realtime toggling of some built-in BackRow statistics tools: a framerate counter, a ’safe region’ highlight, and some copious printing to stdout of all layers being rendered.

Along with this comes the useful addition of BackRow running within a proper window, moveable and resizable, and which has a normal window level so you can open your debugger on top of it if you want to.

The video is in QuickTime format, using MPEG-4 video, 890×618, 13.2Mb in size.

Apparently my manual edits to the volume levels aren’t actually saved, even though they claim to have been. So there’s a bit near the beginning where what I say is drowned out by the intro movie. What I say at this point is, basically:

You can resize this window. It’s not very stable when there’s a list on the screen, but with video it seems quite happy. Frames per second appears down here, safe areas appears like that. And there we have it.

Also, it doesn’t appear to want to play anything until it’s downloaded the whole lot, so please be patient. I think I’ll be trying something other than Snapz Pro X for the next one…

Watch it here

AppleTV Main Menu Woes — solved 17May07 | 0

Well, in working on my debugger test harness, I decided this would be a good opportunity to try a little hack I’d been thinking of for getting around the Main Menu issue. Normally, it sets the bottom of the list in a static position, so that as you add more plugins, the list grows off the top of the screen. I figured that this wasn’t ideal, and decided that the superclass’ implementation would be better.

Here’s some code I run in the test harness before the menu gets loaded for the first time, in the +initialize method for my BRAppManager subclass:


Method main, norm;
main = class_getInstanceMethod( [BRMainMenuController class],
                                @selector(listFrameForBounds:) );
if ( main != NULL )
{
    norm = class_getInstanceMethod( [BRMenuController class],
                                    @selector(listFrameForBounds:) );
    if ( norm != NULL )
        main->method_imp = norm->method_imp;
}

And here are some shots of the results; as usual, click on the images for a full-size version:

Top of the main menu

Bottom of the main menu

BackRow Headers Installer 12May07 | 0

So, since I started frequenting the AwkwardTV IRC channel, I’ve had to help a couple of people get their class-dumped headers for BackRow, iPhotoAccess, and QuartzComposer all sorted out in such a way that they can successfully build things. It becomes kinda tricky to explain after a while, so I though I’d do something useful about it. And so, without further ado, may I introduce: The BackRow Headers installer package!

Download Installer Download it here

The package only installs the headers generated by class-dump, although in the BackRow case I have added a few things to them, mostly in the BREvent.h class (event types and definitions, mostly). And I’m not going to redistribute the frameworks themselves, so please don’t ask.

The installer will look for the BackRow and iPhotoAccess frameworks to be present already within /System/Library/PrivateFrameworks, and will not install if they are not found. It will place a PrivateHeaders folder at the root of each of those frameworks, and at the root of the QuartzComposer framework. It will then create symbolic links into the Mac OS X 10.4 Universal SDK — for the AppleTV frameworks it’ll symlink the whole thing, and for Quartz Composer it’ll just link the PrivateHeaders folder itself.

Bear in mind that while the headers will install on a PowerPC Mac, you can’t compile for PowerPC since the BackRow and iPhotoAccess frameworks are Intel-only.

Debugging BackRow 10May07 | 0

This will be a proper podcasted groove thang with embedded viewers & such soon, but for now here’s a link to the QuickTime file. It’s MP4, 1044×621 pixels, 9.2MB.

Linky