diff options
author | Koen Kooi <koen@openembedded.org> | 2009-06-21 20:42:26 +0200 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2009-06-21 20:42:26 +0200 |
commit | 693a76b58e7f9fdb76ab152dbab1d4c39f5f0fae (patch) | |
tree | 609b3e1fee57c7169156a895217fab4032d8dda5 | |
parent | 0d147e85b88e7778801087e8eca2bce2ac4d22e3 (diff) |
fennec: use native bpp to speed up rendering on 16bit framebuffers
* helps with memusage as well
-rw-r--r-- | recipes/mozilla/fennec/use-native-bpp.patch | 81 | ||||
-rw-r--r-- | recipes/mozilla/fennec_hg.bb | 3 |
2 files changed, 83 insertions, 1 deletions
diff --git a/recipes/mozilla/fennec/use-native-bpp.patch b/recipes/mozilla/fennec/use-native-bpp.patch new file mode 100644 index 0000000000..fd3f9b71f8 --- /dev/null +++ b/recipes/mozilla/fennec/use-native-bpp.patch @@ -0,0 +1,81 @@ +diff -r f603fec24bf7 gfx/thebes/src/gfxPlatformGtk.cpp +--- a/gfx/thebes/src/gfxPlatformGtk.cpp Tue Dec 02 16:05:36 2008 -0500 ++++ b/gfx/thebes/src/gfxPlatformGtk.cpp Tue Dec 02 23:14:03 2008 -0500 +@@ -80,18 +80,23 @@ + + #define GDK_PIXMAP_SIZE_MAX 32767 + + #ifndef MOZ_PANGO + #include <ft2build.h> + #include FT_FREETYPE_H + #endif + ++#include "nsIPrefService.h" ++#include "nsIPrefBranch.h" ++#include "nsServiceManagerUtils.h" ++ + double gfxPlatformGtk::sDPI = -1.0; + gfxFontconfigUtils *gfxPlatformGtk::sFontconfigUtils = nsnull; ++static PRBool gUseSystemVisualFormat = PR_FALSE; + + #ifndef MOZ_PANGO + typedef nsDataHashtable<nsStringHashKey, nsRefPtr<FontFamily> > FontTable; + static FontTable *gPlatformFonts = NULL; + static FontTable *gPlatformFontAliases = NULL; + static FT_Library gPlatformFTLibrary = NULL; + #endif + +@@ -113,16 +118,26 @@ gfxPlatformGtk::gfxPlatformGtk() + gPlatformFonts = new FontTable(); + gPlatformFonts->Init(100); + gPlatformFontAliases = new FontTable(); + gPlatformFontAliases->Init(100); + UpdateFontList(); + #endif + + InitDPI(); ++ ++ nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); ++ if (!prefs) ++ return; ++ ++ PRBool val = PR_FALSE; ++ nsresult rv; ++ rv = prefs->GetBoolPref("gfx.system.visual.format", &val); ++ if (NS_SUCCEEDED(rv)) ++ gUseSystemVisualFormat = val; + } + + gfxPlatformGtk::~gfxPlatformGtk() + { + gfxFontconfigUtils::Shutdown(); + sFontconfigUtils = nsnull; + + #ifdef MOZ_PANGO +@@ -184,18 +199,24 @@ gfxPlatformGtk::CreateOffscreenSurface(c + // XXX we really need a different interface here, something that passes + // in more context, including the display and/or target surface type that + // we should try to match + Display* display = GDK_DISPLAY(); + if (!display) + return nsnull; + + GdkPixmap* pixmap = nsnull; +- XRenderPictFormat* xrenderFormat = +- XRenderFindStandardFormat(display, xrenderFormatID); ++ XRenderPictFormat* xrenderFormat = nsnull; ++ ++ if (xrenderFormatID == PictStandardRGB24 && gUseSystemVisualFormat) { ++ // Actually we want not strictly RGB24, but the fastest non-alpha ++ // format (XXX to be verified if it is actually safe) ++ xrenderFormat = XRenderFindVisualFormat(display, GDK_VISUAL_XVISUAL(gdk_visual_get_system())); ++ } ++ if (!xrenderFormat) xrenderFormat = XRenderFindStandardFormat(display, xrenderFormatID); + + if (xrenderFormat && sizeOk) { + pixmap = gdk_pixmap_new(nsnull, size.width, size.height, + xrenderFormat->depth); + + if (pixmap) { + gdk_drawable_set_colormap(GDK_DRAWABLE(pixmap), nsnull); + newSurface = new gfxXlibSurface(display, diff --git a/recipes/mozilla/fennec_hg.bb b/recipes/mozilla/fennec_hg.bb index 3b236f138b..94996134fa 100644 --- a/recipes/mozilla/fennec_hg.bb +++ b/recipes/mozilla/fennec_hg.bb @@ -2,13 +2,14 @@ DESCRIPTION = "Mozilla Mobile browser" PV = "0.9+1.0b2pre" MOZPV = "1.0b2pre" -PR = "r4" +PR = "r5" PE = "1" SRC_URI = "hg://hg.mozilla.org/;module=mozilla-central;rev=8c9a6d851018 \ hg://hg.mozilla.org/;module=mobile-browser;rev=c24b8b4ade53 \ file://jsautocfg.h \ file://jsautocfg-dontoverwrite.patch;patch=1 \ + file://use-native-bpp.patch;patch=1 \ " S = "${WORKDIR}/mozilla-central" |