Bug 418131 - "Need a way to detect GTK+ version so we don't break users on major update" [p=ventnor.bugzilla@yahoo.com.au (Michael Ventnor) r=bsmedberg sr=dveditz a=blocking-firefox3+]

This commit is contained in:
reed@reedloden.com 2008-03-14 08:42:34 -07:00
Родитель 4bcd5af890
Коммит 17bf692bc0
4 изменённых файлов: 38 добавлений и 6 удалений

Просмотреть файл

@ -1022,18 +1022,26 @@ function UpdateService() {
LOG("UpdateService", "XPCOM ABI unknown: updates are not possible.");
}
var osVersion;
var sysInfo = Components.classes["@mozilla.org/system-info;1"]
.getService(Components.interfaces.nsIPropertyBag2);
try {
var sysInfo =
Components.classes["@mozilla.org/system-info;1"]
.getService(Components.interfaces.nsIPropertyBag2);
gOSVersion = encodeURIComponent(sysInfo.getProperty("name") + " " +
sysInfo.getProperty("version"));
osVersion = sysInfo.getProperty("name") + " " + sysInfo.getProperty("version");
}
catch (e) {
LOG("UpdateService", "OS Version unknown: updates are not possible.");
}
if (osVersion) {
try {
osVersion += " (" + sysInfo.getProperty("secondaryLibrary") + ")";
}
catch (e) {
// Not all platforms have a secondary widget library, so an error is nothing to worry about.
}
gOSVersion = encodeURIComponent(osVersion);
}
#ifdef XP_MACOSX
// Mac universal build should report a different ABI than either macppc
// or mactel.

Просмотреть файл

@ -148,3 +148,7 @@ include $(topsrcdir)/config/rules.mk
DEFINES += -D_IMPL_NS_COM
ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
CXXFLAGS += $(MOZ_GTK2_CFLAGS)
endif

Просмотреть файл

@ -39,6 +39,11 @@
#include "nsSystemInfo.h"
#include "prsystem.h"
#include "nsString.h"
#include "prprf.h"
#ifdef MOZ_WIDGET_GTK2
#include <gtk/gtk.h>
#endif
nsSystemInfo::nsSystemInfo()
{
@ -74,6 +79,17 @@ nsSystemInfo::Init()
else
NS_WARNING("PR_GetSystemInfo failed");
}
#ifdef MOZ_WIDGET_GTK2
// This must be done here because NSPR can only separate OS's when compiled, not libraries.
char* gtkver = PR_smprintf("GTK %u.%u.%u", gtk_major_version, gtk_minor_version, gtk_micro_version);
if (gtkver) {
rv = SetPropertyAsACString(NS_ConvertASCIItoUTF16("secondaryLibrary"),
nsDependentCString(gtkver));
PR_smprintf_free(gtkver);
NS_ENSURE_SUCCESS(rv, rv);
}
#endif
return NS_OK;
}

Просмотреть файл

@ -186,6 +186,10 @@ ifeq ($(OS_ARCH),BeOS)
EXTRA_DSO_LDOPTS += -lbe
endif
ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
EXTRA_DSO_LDOPTS += $(MOZ_GTK2_LIBS)
endif
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,shell32 ole32 uuid version)
ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC))