Hi Robert and all --
As you know, I have a private nodekit that uses the .osgb extension. In
order to avoid collisions with the upcoming new OSG binary format, I've
added a static initializer to the nodekit to force load my .osgb plugin.
As we've discussed previously, this is what I need to do to avoid
forcing client apps to do this explicitly, right?
My nodekit depends on osgWorks, which contains a plugin that supports
the .skel extension. So, just to be safe and avoid possible future
collisions with the ".skel" extension, I also added a static initializer
to osgWorks to force loading the .skel plugin.
The net effect is that whenever my .osgb plugin gets loaded, my osgWorks
.skel plugin also gets loaded. This is correct and expected behavior.
Unfortunately, this breaks "osgconv --format osgb". Issuing that command
incorrectly displays output for both my .osgb and .skel plugins. It
should display only output for the .osgb plugin.
The root cause appears to be flawed login in osgDB::queryPlugin(). This
function is passed a plugin filename, which it loads, and then assumes
that any plugins that got loaded must be appropriate to query. This is a
false assumption in the presence of static initializers, as I describe
above.
My personal preference would be to enhance Registry to handle multiple
plugins that support multiple formats with the same extension, thus
avoiding the need to preload plugins, as I have mentioned in other
posts. But if this is still off the table, then my fallback solution
would be to change pluginQuery so that it takes an extension as a
parameter, and only queries a loaded plugin if it accepts the extension.
Do either of these sound acceptable? If so, let me know which one and
I'll code it up.
--
Paul Martz
Skew Matrix Software LLC
_http://www.skew-matrix.com_ <http://www.skew-matrix.com/>
+1 303 859 9466
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org