The one thing I spotted was that there's a 0.5s delay between the scan finishing and the plugin list being populated. The plugins are asked every 0.5s whether they can handle the barcode in question (ResultsWindow::checkPlugins()), and originally the timer callback was used to do the first call. I've commited a fix for this by simply calling the checkPlugins() immediately as the timer is setup. I will do some more digging to see what else might be causing problems. Is the results window created at startup? It might be worth having it loaded and hidden to make the transition quicker (though this would cause slowdowns at startup - argh! )