On 04/25/2014 02:39 AM, Gerd Hoffmann wrote: > Hi, > >> ui/console.c:qmp_screendump attempts to handle this by calling >> graphic_hw_update, but qxl handle's that asynchronously, and it isn't >> run until after the first screendump is performed. That's why the second >> screendump is correct. > > Known issue. The graphic_hw_update makes sure it works sort-of ok when > you do snapshorts regularly (popular use case: autotest). It's band > aid, but still better than nothing. > >> Fix this by triggering qxl_render_update whenever a non-vga surface is >> created. > > That only catches a small fraction of the problem. You'll still face > the very same issue shortly thereafter. Start firefox in your guest, > then do two snapshots again. Different variant of the same bug: no > firefox window on the first snapshot. And this patch doesn't help. >
In fact I tried that exact test before sending the patch, but the screenshot seemed up to date. But using something like xdaliclock clearly shows the outdated surface data. > We'll basically need a better snapshot command, but qmp lacks > infrastructure. We'll need something like blockjobs, but more general > and not limited to the block layer. Then you can kick off the > screenshot request as job, get notified on completion, and we can get > the qxl case right then. Makes sense, thanks. - Cole