I have a Delphi 6 Pro program with a TWebBrowser component that loads a web page that embeds a Cool Iris Wall. The Cool Iris wall is an SWF object which means that when running, the execution happens inside the Adobe Flash player, an ActiveX or similar object I believe. The problem I am having is that sometimes when the Wall is loading pictures/videos from the web, it takes a big hit on the CPU on the main UI thread. I know that TWebBrowser moves most of its operations on to a background thread to keep the main UI thread happy, but something the Adobe Flash Player is doing is happening on the main UI thread and its causing my program much grief. Is there a way to move the Adobe Flash Player on to a background thread?
[UPDATE - 12/7/2010] - After a marathon probing and debugging session it turns out that the problem had to do with the Cool Iris Wall's Flickr proxy. You can interface with the Wall in two main ways: 1) You pass them special Flickr api protocol URLs and let them talk to Flickr for you, for example "api://www.flickr.com/?search=puppy" loads the Wall with the results of a Flickr keyword search for puppy. The advantage to this approach is that they do all the work for you necessary to make the query to Flickr and build the Wall's contents. 2) You build an RSS media feed yourself containing the photo stream item data and feed it to the Wall.
I was using technique #1. The problem is with #1 is that when their servers have trouble building the Flickr feed for you (for whatever unknown reason), their host SWF puts a heavy load on the CPU interfering with the main UI thread's operation. I converted my entire code base to work directly with the Flickr API and create the feed myself using the second technique and the problem vanished.
-- roschler