From: Matthew T. <ran...@gm...> - 2009-09-29 00:51:46
|
Hi All, We've recently had complaints from users on different platforms regarding gecko issues. One issue was a simple missing XPCOM_GLUE define in gecko-utils.cpp. This led me to read this file more closely, and I've determined the cause of many of the other problems. The other problems are these: 1. When a user has Firefox 3.6 installed (uses xulrunner-1.9.3), Xiphos upon opening does *not* show any modules, but opens a *nautilus* window for every Bible opened. Yes, you read that correctly. 2. When Xiphos is built with xulrunner-1.9.0.x, but is run on a system that has 1.9.1 *and* 1.9.0.x installed, Xiphos will not "jump to anchor", that is, it won't scroll to the correct position upon changing verses. The reason that having different versions causes problems, is that xpcom automatically locates an appropriate version of xulrunner and dynamically loads it at runtime. xulrunner is binary compatible in the 1.9.0.x series and 1.9.1.x series, but not with each other. The reason xpcom is loading an inappropriate version of xulrunner is that we are not specific enough in our definition of allowed version ranges. In src/gecko/gecko-utils.cpp, we have the following lines: static const GREVersionRange greVersion = { "1.9a", PR_TRUE, "2", PR_TRUE }; This means that when determining which versions of xulrunner are appropriate, we're allowing anything from 1.9a (maybe this is an early alpha of 1.9?) to 2. I'm not sure which it tries first on any system, but on my system, I have 1.9.0.14 and 1.9.1.3. I'm building against 1.9.1.3, but it's loading 1.9.0.14 at runtime (yes, this means I also have the jump-to-anchor issue; just realized it). So, to solve this issue on my system, I changed the code to static const GREVersionRange greVersion = { "1.9.1", PR_TRUE, "1.9.1.10", PR_TRUE }; This works fine, and solves the jump-to-anchor issue here. 1.9.1.10 is a made-up number; I'm not sure how to specify "maximum number possible in the 1.9.1.x series", which is what I want. My conclusion is that we need to modify these ranges at build-time. If building with 1.9.0.x, the upper limit should be 1.9.1. If building with 1.9.1, the lower limit should be 1.9.1 and the upper limit should be "maximum number possible in the 1.9.1.x series". So if anybody has any suggestions to modify the build system to do this, that would be great. I don't have a clue. Matthew PS or we could switch to webkit..... |