From kfm-devel Sun Apr 18 15:00:30 2010 From: "Maksim Orlovich" Date: Sun, 18 Apr 2010 15:00:30 +0000 To: kfm-devel Subject: Re: Old Flash? Go upgrade! - New problem with konqueror Message-Id: <61921.67.246.70.185.1271602830.squirrel () webmail ! cornell ! edu> X-MARC-Message: https://marc.info/?l=kfm-devel&m=127160288504857 > Confirmed that GetVariable("$version") call on a flash plugin return > the version using the flash support of kmplayer plugin. > However, I can currently only get it by calling it after the plugin is > loaded, eg in body.onLoad. > So 'appendFlash = body.appendChild(flash)) && appendFlash.GetVariable' > will only work when starting a local event loop for the time the > plugin is up and running. Known to crash konqueror on unfortunate > redirects (*). Urgh. Did you check whether the actual youtube does this, or just the testcase? The exact sequence determines a lot on when we can actually create the part. >> Unfortunately, it's extremely >> tricky to fully implement with out-of-process plugins, especially since >> the presently used IPC system, D-Bus is inadequate for the task. > > Why? You mentioned that before and I only recall that the lack of > nested calls. But dbus supports nested calls just fine. Erm, that's not what Thiago told me :-). Anyway, I found our old discussion, and remembered a solution I had... > (*) That said, using the Qt eventloop for IPC is the source we cannot > block safely. Currently thinking about a way to block w/o running > processEvents (no OnlySocketNotifiers afaics), eg something with > qprocess waitForStarted(), waitForReadyRead() or so. ... which involves using a second thread to do the DBus connection, and blocking on the condition variable. I'll see if I can maybe make the class standalone, in case it'll be useful for you, too. > > We also need a LiveConnect2Extension. As mentioned before, the string > based argument list/return value is too limited. We need at least a > way to pass proxies of js objects as arguments. On these proxies > get/put/call should be possible. Maybe simply use QVariant with a user > type for the proxy can work. Definitely. Could I ask you to review the API once I get there?