FS#10571 - Automatic screenshot generation (for the manual)

Attached to Project: Rockbox
Opened by Jonas Häggqvist (rasher) - Sunday, 30 August 2009, 02:07 GMT
Last edited by Jonas Häggqvist (rasher) - Sunday, 30 August 2009, 02:15 GMT
Task Type Patches
Category Build environment
Status New
Assigned To Jonas Häggqvist (rasher)
Operating System All players
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No


These two scripts will, if you run them appropriately generate a few screenshots in an automatic fashion. Execute it like this, from inside a simulator: ./genscreenshots e200.xte /path/to/output

There are a few pitfalls:
* The simulator window MUST gain focus when it is run. If this doesn't happen, everything breaks. Horribly.
* The method is rather timing sensitive. I had to put a pause of 250ms between each keypress to make sure they registred (too fast, and the sim/SDL would discard them). 250ms may not be the right amount for your computer.
* Rockbox itself is also timing sensitive. If you "push" a button at the wrong time, it may not register, so use plenty of sleeps to make sure things are settled.

Edit: Oops, the first version had a hardcoded filename. Hopefully of such things.
Comment by Jonas Häggqvist (rasher) - Monday, 31 August 2009, 00:13 GMT
A new version, depending on FS#10575

You'll notice the command list is littered with SLEEPS. This is to make it more stable, since Rockbox seems to randomly eat button presses - especially, it seems, while setting up menus. And yet, things are still not entirely predictable. Sometimes an event will go missing, and things blow up. Also amusingly, sometimes 2 screenshots will be created, messing up the entire thing.

That said, the attached *has* managed to correctly generate a set of screenshots for me.
Comment by Jonas Häggqvist (rasher) - Friday, 06 November 2009, 00:41 GMT
The latest version - I haven't worked on it since August, but I think I neglected to update this task.