I finally found some time this weekend to work on the Clutter port of Gnometris.

My approach—at least for now—is to use a compile-time ./configure flag "--enable-clutter" which sets all the cflags and linker options and defines HAVE_CLUTTER. Using this define, I take the existing rendering code to surgically alter and redirect all cairo drawing operations to off-screen pixmaps. And then, I move the off-screen cairo surface to a texture. I short-circuit a lot of calls to draw() and redraw() since they have no value in this approach. Instead, any moveBlockFoo() method just manipulates the actors at the same time it touches the block data.

Unfortunately, I can't get anything but plain old rectangles to show up on the stage. I'm not sure what I'm doing wrong and have resorted to reading /usr/include/clutter/clutter-cairo/clutter-cairo.h as the only API documentation that I've been able to find.

For now, I'm staying away from the C++ Clutter bindings until they stabilize a bit more. There's not going to end up being that much code to convert to C++ at that time, anyway.