Trace: » NSPluginWrapper 1.0.0

NSPluginWrapper 1.0.0

As announced in a previous blog entry, nspluginwrapper 1.0.0 was around the corner. I got some time this weekend to iron out the latest (cosmetic) problems. This version doesn't feature everything I wanted to include for a “1.0” release but it turns out to be rather stable for some time now. Missing features became either obsolete (XPCOM) or totally irrelevant (Windows support).

Here is a short list of changes since 0.9.91.5, details to follow:

  • Don't wrap root plugins to system locations, keep them private
  • Fix support for Acrobat Reader 8 (focus problems)
  • Fix support for mozplugger (in full-debug mode)
  • Fix support for WebKit
  • Fix crashes with Flash Player 9 Update 3 (9.0.115)
  • Improve error handling during RPC initialization (possible memory leak on error)
  • Improve error handling in NPP_WriteReady() and NPP_Write()

Wrapping root plugins. Previous versions of nspluginwrapper used to incorrectly wrap root plugins system-wide. The fix introduced in this version is very minimalistic and works as follows: any plugin located under ~root will be wrapped into his private plugins directory (~root/.mozilla/plugins). If a wrapped root plugin is found in any system location during upgrade, it will be moved to the ~root private location instead. A better fix is planned for nspluginwrapper 1.2.0.

Acrobat Reader 8. A very stupid bug was introduced in version 0.9.91.5 which prevented Acrobat Reader 8 (8.1.2) from working correctly: no keyboard event was propagated to the plugin. This is now fixed. For reference, this problem is reported as Novell bug #353503. Thanks to Stanislav Brabec for reporting the issue.

WebKit. This release fixes support for WebKit-based browsers. In particular, this should fix WebKit bug #18883 whereby plugins were crashing on exit. However, you will also need a recent enough snapshot of WebKit (>= rev 33570, see WebKit bug #18882).

Flash Player. This release fixes support for Flash Player 9 on Linux for SMP or CMP systems.

There are some (unresolved) threading issues with Flash Player 9 on *BSD systems, in particular FreeBSD 6.1 and NetBSD 3.1. i.e. pages with only one Flash instance will work though multiple instances will fail because of multithreading. This may be an issue with the Linux emulator on those systems. Probably some TLS stuff or some Linux syscalls unsufficiently supported. BSD hackers should probably look into waitid, tgkill, futex syscalls and also coverage of newer CLONE_* flags.

Flash Player 10 Beta for Linux is working but you may encounter keyboard input problems with some sites. In particular, the usual Bloxorz game^W testcase at Addicting Games is failing again with this Beta. This is not an nspluginwrapper problem but a generic issue with Flash Player 10 Beta that also occurs with 32-bit web browsers.

Build system. Some –with options were moved to –enable style. In particular, –enable-biarch replaces –with-biarch and –enable-generic replaces –generic-build. Besides, the binaries are no longer stripped by default. Should you wish to strip the installed files, you have to configure your build with the –enable-strip option.

NSPluginWrapper 2.0.0 preview. There is no public preview of this because source code is currently ugly and maintaining three branches at a time was going to be a nightmare. Now that nspluginwrapper 1.0.0 is released, trunk will be the default development branch towards 1.2.0. Then, it will be branched out within the next few months for nspluginwrapper2 integration.

The primary goal of this project is not to rewrite its core functionality but rather to re-organize the source code so that it is more flexible and suitable for inclusion into third-party applications (public API). nspluginwrapper2 will also address support for OpenGL-rendered browsers, WebKit/Clutter in particular. Here is a short video to demonstrate this: Magic Pen in a WebKit actor. You can also note that the reflection texture accounts for the plugin texture (Magic Pen).

 
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki